[Python-checkins] commit of r41812 - in python/trunk: Lib/SimpleXMLRPCServer.py Lib/codecs.py Lib/cookielib.py Lib/encodings/cp037.py Lib/encodings/cp1006.py Lib/encodings/cp1026.py Lib/encodings/cp1140.py Lib/encodings/cp1250.py Lib/encodings/cp1251.py Lib/encodings/cp1252.py Lib/encodings/cp1253.py Lib/encodings/cp1254.py Lib/encodings/cp1255.py Lib/encodings/cp1256.py Lib/encodings/cp1257.py Lib/encodings/cp1258.py Lib/encodings/cp424.py Lib/encodings/cp437.py Lib/encodings/cp500.py Lib/encodings/cp737.py Lib/encodings/cp775.py Lib/encodings/cp850.py Lib/encodings/cp852.py Lib/encodings/cp855.py Lib/encodings/cp856.py Lib/encodings/cp857.py Lib/encodings/cp860.py Lib/encodings/cp861.py Lib/encodings/cp862.py Lib/encodings/cp863.py Lib/encodings/cp864.py Lib/encodings/cp865.py Lib/encodings/cp866.py Lib/encodings/cp869.py Lib/encodings/cp874.py Lib/encodings/cp875.py Lib/encodings/iso8859_1.py Lib/encodings/iso8859_10.py Lib/encodings/iso8859_11.py Lib/encodings/iso8859_13.py Lib/encodings/iso8859_14.py Lib/encodings/iso8859_15.py Lib/encodings/iso8859_16.py Lib/encodings/iso8859_2.py Lib/encodings/iso8859_3.py Lib/encodings/iso8859_4.py Lib/encodings/iso8859_5.py Lib/encodings/iso8859_6.py Lib/encodings/iso8859_7.py Lib/encodings/iso8859_8.py Lib/encodings/iso8859_9.py Lib/encodings/koi8_r.py Lib/encodings/koi8_u.py Lib/encodings/mac_arabic.py Lib/encodings/mac_centeuro.py Lib/encodings/mac_croatian.py Lib/encodings/mac_cyrillic.py Lib/encodings/mac_farsi.py Lib/encodings/mac_greek.py Lib/encodings/mac_iceland.py Lib/encodings/mac_roman.py Lib/encodings/mac_romanian.py Lib/encodings/mac_turkish.py Lib/encodings/tis_620.py Lib/test/bad_coding2.py Lib/test/test_code.py Lib/test/test_exception_variations.py Lib/test/test_generators.py Lib/test/test_minidom.py Lib/test/test_poll.py Lib/test/test_quopri.py Lib/test/test_xmlrpc.py Lib/webbrowser.py Lib/xmlcore/etree/ElementInclude.py Lib/xmlcore/etree/ElementPath.py Parser/asdl.py Parser/asdl_c.py Parser/spark.py Tools/bgen/bgen/bgenGenerator.py Tools/bgen/bgen/bgenHeapBuffer.py Tools/compiler/dumppyc.py Tools/unicode/gencodec.py

tim.peters python-checkins at python.org
Mon Dec 26 00:19:07 CET 2005


Author: tim.peters
Date: Mon Dec 26 00:18:31 2005
New Revision: 41812

Modified:
   python/trunk/Lib/SimpleXMLRPCServer.py
   python/trunk/Lib/codecs.py
   python/trunk/Lib/cookielib.py
   python/trunk/Lib/encodings/cp037.py
   python/trunk/Lib/encodings/cp1006.py
   python/trunk/Lib/encodings/cp1026.py
   python/trunk/Lib/encodings/cp1140.py
   python/trunk/Lib/encodings/cp1250.py
   python/trunk/Lib/encodings/cp1251.py
   python/trunk/Lib/encodings/cp1252.py
   python/trunk/Lib/encodings/cp1253.py
   python/trunk/Lib/encodings/cp1254.py
   python/trunk/Lib/encodings/cp1255.py
   python/trunk/Lib/encodings/cp1256.py
   python/trunk/Lib/encodings/cp1257.py
   python/trunk/Lib/encodings/cp1258.py
   python/trunk/Lib/encodings/cp424.py
   python/trunk/Lib/encodings/cp437.py
   python/trunk/Lib/encodings/cp500.py
   python/trunk/Lib/encodings/cp737.py
   python/trunk/Lib/encodings/cp775.py
   python/trunk/Lib/encodings/cp850.py
   python/trunk/Lib/encodings/cp852.py
   python/trunk/Lib/encodings/cp855.py
   python/trunk/Lib/encodings/cp856.py
   python/trunk/Lib/encodings/cp857.py
   python/trunk/Lib/encodings/cp860.py
   python/trunk/Lib/encodings/cp861.py
   python/trunk/Lib/encodings/cp862.py
   python/trunk/Lib/encodings/cp863.py
   python/trunk/Lib/encodings/cp864.py
   python/trunk/Lib/encodings/cp865.py
   python/trunk/Lib/encodings/cp866.py
   python/trunk/Lib/encodings/cp869.py
   python/trunk/Lib/encodings/cp874.py
   python/trunk/Lib/encodings/cp875.py
   python/trunk/Lib/encodings/iso8859_1.py
   python/trunk/Lib/encodings/iso8859_10.py
   python/trunk/Lib/encodings/iso8859_11.py
   python/trunk/Lib/encodings/iso8859_13.py
   python/trunk/Lib/encodings/iso8859_14.py
   python/trunk/Lib/encodings/iso8859_15.py
   python/trunk/Lib/encodings/iso8859_16.py
   python/trunk/Lib/encodings/iso8859_2.py
   python/trunk/Lib/encodings/iso8859_3.py
   python/trunk/Lib/encodings/iso8859_4.py
   python/trunk/Lib/encodings/iso8859_5.py
   python/trunk/Lib/encodings/iso8859_6.py
   python/trunk/Lib/encodings/iso8859_7.py
   python/trunk/Lib/encodings/iso8859_8.py
   python/trunk/Lib/encodings/iso8859_9.py
   python/trunk/Lib/encodings/koi8_r.py
   python/trunk/Lib/encodings/koi8_u.py
   python/trunk/Lib/encodings/mac_arabic.py
   python/trunk/Lib/encodings/mac_centeuro.py
   python/trunk/Lib/encodings/mac_croatian.py
   python/trunk/Lib/encodings/mac_cyrillic.py
   python/trunk/Lib/encodings/mac_farsi.py
   python/trunk/Lib/encodings/mac_greek.py
   python/trunk/Lib/encodings/mac_iceland.py
   python/trunk/Lib/encodings/mac_roman.py
   python/trunk/Lib/encodings/mac_romanian.py
   python/trunk/Lib/encodings/mac_turkish.py
   python/trunk/Lib/encodings/tis_620.py
   python/trunk/Lib/test/bad_coding2.py
   python/trunk/Lib/test/test_code.py
   python/trunk/Lib/test/test_exception_variations.py
   python/trunk/Lib/test/test_generators.py
   python/trunk/Lib/test/test_minidom.py
   python/trunk/Lib/test/test_poll.py
   python/trunk/Lib/test/test_quopri.py
   python/trunk/Lib/test/test_xmlrpc.py
   python/trunk/Lib/webbrowser.py
   python/trunk/Lib/xmlcore/etree/ElementInclude.py
   python/trunk/Lib/xmlcore/etree/ElementPath.py
   python/trunk/Parser/asdl.py
   python/trunk/Parser/asdl_c.py
   python/trunk/Parser/spark.py
   python/trunk/Tools/bgen/bgen/bgenGenerator.py
   python/trunk/Tools/bgen/bgen/bgenHeapBuffer.py
   python/trunk/Tools/compiler/dumppyc.py
   python/trunk/Tools/unicode/gencodec.py
Log:
Whitespace normalization.


Modified: python/trunk/Lib/SimpleXMLRPCServer.py
==============================================================================
--- python/trunk/Lib/SimpleXMLRPCServer.py	(original)
+++ python/trunk/Lib/SimpleXMLRPCServer.py	Mon Dec 26 00:18:31 2005
@@ -253,10 +253,10 @@
                 response = self._dispatch(method, params)
             # wrap response in a singleton tuple
             response = (response,)
-            response = xmlrpclib.dumps(response, methodresponse=1, 
+            response = xmlrpclib.dumps(response, methodresponse=1,
                                        allow_none=self.allow_none, encoding=self.encoding)
         except Fault, fault:
-            response = xmlrpclib.dumps(fault, allow_none=self.allow_none, 
+            response = xmlrpclib.dumps(fault, allow_none=self.allow_none,
                                        encoding=self.encoding)
         except:
             # report exception back to server
@@ -427,8 +427,8 @@
         """
 
         try:
-            # Get arguments by reading body of request. 
-            # We read this in chunks to avoid straining 
+            # Get arguments by reading body of request.
+            # We read this in chunks to avoid straining
             # socket.read(); around the 10 or 15Mb mark, some platforms
             # begin to have problems (bug #792570).
             max_chunk_size = 10*1024*1024
@@ -490,8 +490,8 @@
         SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding)
         SocketServer.TCPServer.__init__(self, addr, requestHandler)
 
-        # [Bug #1222790] If possible, set close-on-exec flag; if a 
-        # method spawns a subprocess, the subprocess shouldn't have 
+        # [Bug #1222790] If possible, set close-on-exec flag; if a
+        # method spawns a subprocess, the subprocess shouldn't have
         # the listening socket open.
         if hasattr(fcntl, 'FD_CLOEXEC'):
             flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD)

Modified: python/trunk/Lib/codecs.py
==============================================================================
--- python/trunk/Lib/codecs.py	(original)
+++ python/trunk/Lib/codecs.py	Mon Dec 26 00:18:31 2005
@@ -269,7 +269,7 @@
         if self.linebuffer:
             self.charbuffer = "".join(self.linebuffer)
             self.linebuffer = None
-            
+
         # read until we get the required number of characters (if available)
         while True:
             # can the request can be satisfied from the character buffer?
@@ -335,7 +335,7 @@
             if not keepends:
                 line = line.splitlines(False)[0]
             return line
-            
+
         readsize = size or 72
         line = ""
         # If size is given, we call read() only once

Modified: python/trunk/Lib/cookielib.py
==============================================================================
--- python/trunk/Lib/cookielib.py	(original)
+++ python/trunk/Lib/cookielib.py	Mon Dec 26 00:18:31 2005
@@ -1528,7 +1528,7 @@
         for cookie in cookies:
             if cookie.version == 1:
                 cookie.rfc2109 = True
-                if rfc2109_as_ns: 
+                if rfc2109_as_ns:
                     # treat 2109 cookies as Netscape cookies rather than
                     # as RFC2965 cookies
                     cookie.version = 0

Modified: python/trunk/Lib/encodings/cp037.py
==============================================================================
--- python/trunk/Lib/encodings/cp037.py	(original)
+++ python/trunk/Lib/encodings/cp037.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x9c'	#  0x04 -> CONTROL
-    u'\t'	#  0x05 -> HORIZONTAL TABULATION
-    u'\x86'	#  0x06 -> CONTROL
-    u'\x7f'	#  0x07 -> DELETE
-    u'\x97'	#  0x08 -> CONTROL
-    u'\x8d'	#  0x09 -> CONTROL
-    u'\x8e'	#  0x0A -> CONTROL
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'	#  0x14 -> CONTROL
-    u'\x85'	#  0x15 -> CONTROL
-    u'\x08'	#  0x16 -> BACKSPACE
-    u'\x87'	#  0x17 -> CONTROL
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x92'	#  0x1A -> CONTROL
-    u'\x8f'	#  0x1B -> CONTROL
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u'\x80'	#  0x20 -> CONTROL
-    u'\x81'	#  0x21 -> CONTROL
-    u'\x82'	#  0x22 -> CONTROL
-    u'\x83'	#  0x23 -> CONTROL
-    u'\x84'	#  0x24 -> CONTROL
-    u'\n'	#  0x25 -> LINE FEED
-    u'\x17'	#  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'	#  0x27 -> ESCAPE
-    u'\x88'	#  0x28 -> CONTROL
-    u'\x89'	#  0x29 -> CONTROL
-    u'\x8a'	#  0x2A -> CONTROL
-    u'\x8b'	#  0x2B -> CONTROL
-    u'\x8c'	#  0x2C -> CONTROL
-    u'\x05'	#  0x2D -> ENQUIRY
-    u'\x06'	#  0x2E -> ACKNOWLEDGE
-    u'\x07'	#  0x2F -> BELL
-    u'\x90'	#  0x30 -> CONTROL
-    u'\x91'	#  0x31 -> CONTROL
-    u'\x16'	#  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'	#  0x33 -> CONTROL
-    u'\x94'	#  0x34 -> CONTROL
-    u'\x95'	#  0x35 -> CONTROL
-    u'\x96'	#  0x36 -> CONTROL
-    u'\x04'	#  0x37 -> END OF TRANSMISSION
-    u'\x98'	#  0x38 -> CONTROL
-    u'\x99'	#  0x39 -> CONTROL
-    u'\x9a'	#  0x3A -> CONTROL
-    u'\x9b'	#  0x3B -> CONTROL
-    u'\x14'	#  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'	#  0x3E -> CONTROL
-    u'\x1a'	#  0x3F -> SUBSTITUTE
-    u' '	#  0x40 -> SPACE
-    u'\xa0'	#  0x41 -> NO-BREAK SPACE
-    u'\xe2'	#  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'	#  0x44 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0x45 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe3'	#  0x46 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'	#  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xf1'	#  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xa2'	#  0x4A -> CENT SIGN
-    u'.'	#  0x4B -> FULL STOP
-    u'<'	#  0x4C -> LESS-THAN SIGN
-    u'('	#  0x4D -> LEFT PARENTHESIS
-    u'+'	#  0x4E -> PLUS SIGN
-    u'|'	#  0x4F -> VERTICAL LINE
-    u'&'	#  0x50 -> AMPERSAND
-    u'\xe9'	#  0x51 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x54 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xed'	#  0x55 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xec'	#  0x58 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xdf'	#  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'!'	#  0x5A -> EXCLAMATION MARK
-    u'$'	#  0x5B -> DOLLAR SIGN
-    u'*'	#  0x5C -> ASTERISK
-    u')'	#  0x5D -> RIGHT PARENTHESIS
-    u';'	#  0x5E -> SEMICOLON
-    u'\xac'	#  0x5F -> NOT SIGN
-    u'-'	#  0x60 -> HYPHEN-MINUS
-    u'/'	#  0x61 -> SOLIDUS
-    u'\xc2'	#  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc4'	#  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc0'	#  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc3'	#  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc5'	#  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'	#  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xd1'	#  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xa6'	#  0x6A -> BROKEN BAR
-    u','	#  0x6B -> COMMA
-    u'%'	#  0x6C -> PERCENT SIGN
-    u'_'	#  0x6D -> LOW LINE
-    u'>'	#  0x6E -> GREATER-THAN SIGN
-    u'?'	#  0x6F -> QUESTION MARK
-    u'\xf8'	#  0x70 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xc9'	#  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'	#  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'	#  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'`'	#  0x79 -> GRAVE ACCENT
-    u':'	#  0x7A -> COLON
-    u'#'	#  0x7B -> NUMBER SIGN
-    u'@'	#  0x7C -> COMMERCIAL AT
-    u"'"	#  0x7D -> APOSTROPHE
-    u'='	#  0x7E -> EQUALS SIGN
-    u'"'	#  0x7F -> QUOTATION MARK
-    u'\xd8'	#  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'a'	#  0x81 -> LATIN SMALL LETTER A
-    u'b'	#  0x82 -> LATIN SMALL LETTER B
-    u'c'	#  0x83 -> LATIN SMALL LETTER C
-    u'd'	#  0x84 -> LATIN SMALL LETTER D
-    u'e'	#  0x85 -> LATIN SMALL LETTER E
-    u'f'	#  0x86 -> LATIN SMALL LETTER F
-    u'g'	#  0x87 -> LATIN SMALL LETTER G
-    u'h'	#  0x88 -> LATIN SMALL LETTER H
-    u'i'	#  0x89 -> LATIN SMALL LETTER I
-    u'\xab'	#  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xf0'	#  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
-    u'\xfd'	#  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'	#  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
-    u'\xb1'	#  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'	#  0x90 -> DEGREE SIGN
-    u'j'	#  0x91 -> LATIN SMALL LETTER J
-    u'k'	#  0x92 -> LATIN SMALL LETTER K
-    u'l'	#  0x93 -> LATIN SMALL LETTER L
-    u'm'	#  0x94 -> LATIN SMALL LETTER M
-    u'n'	#  0x95 -> LATIN SMALL LETTER N
-    u'o'	#  0x96 -> LATIN SMALL LETTER O
-    u'p'	#  0x97 -> LATIN SMALL LETTER P
-    u'q'	#  0x98 -> LATIN SMALL LETTER Q
-    u'r'	#  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'	#  0x9A -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0x9B -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'	#  0x9C -> LATIN SMALL LIGATURE AE
-    u'\xb8'	#  0x9D -> CEDILLA
-    u'\xc6'	#  0x9E -> LATIN CAPITAL LIGATURE AE
-    u'\xa4'	#  0x9F -> CURRENCY SIGN
-    u'\xb5'	#  0xA0 -> MICRO SIGN
-    u'~'	#  0xA1 -> TILDE
-    u's'	#  0xA2 -> LATIN SMALL LETTER S
-    u't'	#  0xA3 -> LATIN SMALL LETTER T
-    u'u'	#  0xA4 -> LATIN SMALL LETTER U
-    u'v'	#  0xA5 -> LATIN SMALL LETTER V
-    u'w'	#  0xA6 -> LATIN SMALL LETTER W
-    u'x'	#  0xA7 -> LATIN SMALL LETTER X
-    u'y'	#  0xA8 -> LATIN SMALL LETTER Y
-    u'z'	#  0xA9 -> LATIN SMALL LETTER Z
-    u'\xa1'	#  0xAA -> INVERTED EXCLAMATION MARK
-    u'\xbf'	#  0xAB -> INVERTED QUESTION MARK
-    u'\xd0'	#  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
-    u'\xdd'	#  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'	#  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
-    u'\xae'	#  0xAF -> REGISTERED SIGN
-    u'^'	#  0xB0 -> CIRCUMFLEX ACCENT
-    u'\xa3'	#  0xB1 -> POUND SIGN
-    u'\xa5'	#  0xB2 -> YEN SIGN
-    u'\xb7'	#  0xB3 -> MIDDLE DOT
-    u'\xa9'	#  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'	#  0xB5 -> SECTION SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xbc'	#  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'['	#  0xBA -> LEFT SQUARE BRACKET
-    u']'	#  0xBB -> RIGHT SQUARE BRACKET
-    u'\xaf'	#  0xBC -> MACRON
-    u'\xa8'	#  0xBD -> DIAERESIS
-    u'\xb4'	#  0xBE -> ACUTE ACCENT
-    u'\xd7'	#  0xBF -> MULTIPLICATION SIGN
-    u'{'	#  0xC0 -> LEFT CURLY BRACKET
-    u'A'	#  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'	#  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'	#  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'	#  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'	#  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'	#  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'	#  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'	#  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'	#  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'	#  0xCA -> SOFT HYPHEN
-    u'\xf4'	#  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'	#  0xCD -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xCE -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'	#  0xCF -> LATIN SMALL LETTER O WITH TILDE
-    u'}'	#  0xD0 -> RIGHT CURLY BRACKET
-    u'J'	#  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'	#  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'	#  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'	#  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'	#  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'	#  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'	#  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'	#  0xDA -> SUPERSCRIPT ONE
-    u'\xfb'	#  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf9'	#  0xDD -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xDE -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'	#  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\\'	#  0xE0 -> REVERSE SOLIDUS
-    u'\xf7'	#  0xE1 -> DIVISION SIGN
-    u'S'	#  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'	#  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'	#  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'	#  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'	#  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'	#  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'	#  0xEA -> SUPERSCRIPT TWO
-    u'\xd4'	#  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd6'	#  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd2'	#  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'	#  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'	#  0xF0 -> DIGIT ZERO
-    u'1'	#  0xF1 -> DIGIT ONE
-    u'2'	#  0xF2 -> DIGIT TWO
-    u'3'	#  0xF3 -> DIGIT THREE
-    u'4'	#  0xF4 -> DIGIT FOUR
-    u'5'	#  0xF5 -> DIGIT FIVE
-    u'6'	#  0xF6 -> DIGIT SIX
-    u'7'	#  0xF7 -> DIGIT SEVEN
-    u'8'	#  0xF8 -> DIGIT EIGHT
-    u'9'	#  0xF9 -> DIGIT NINE
-    u'\xb3'	#  0xFA -> SUPERSCRIPT THREE
-    u'\xdb'	#  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd9'	#  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'	#  0xFF -> CONTROL
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x9c'     #  0x04 -> CONTROL
+    u'\t'       #  0x05 -> HORIZONTAL TABULATION
+    u'\x86'     #  0x06 -> CONTROL
+    u'\x7f'     #  0x07 -> DELETE
+    u'\x97'     #  0x08 -> CONTROL
+    u'\x8d'     #  0x09 -> CONTROL
+    u'\x8e'     #  0x0A -> CONTROL
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x9d'     #  0x14 -> CONTROL
+    u'\x85'     #  0x15 -> CONTROL
+    u'\x08'     #  0x16 -> BACKSPACE
+    u'\x87'     #  0x17 -> CONTROL
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x92'     #  0x1A -> CONTROL
+    u'\x8f'     #  0x1B -> CONTROL
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u'\x80'     #  0x20 -> CONTROL
+    u'\x81'     #  0x21 -> CONTROL
+    u'\x82'     #  0x22 -> CONTROL
+    u'\x83'     #  0x23 -> CONTROL
+    u'\x84'     #  0x24 -> CONTROL
+    u'\n'       #  0x25 -> LINE FEED
+    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
+    u'\x1b'     #  0x27 -> ESCAPE
+    u'\x88'     #  0x28 -> CONTROL
+    u'\x89'     #  0x29 -> CONTROL
+    u'\x8a'     #  0x2A -> CONTROL
+    u'\x8b'     #  0x2B -> CONTROL
+    u'\x8c'     #  0x2C -> CONTROL
+    u'\x05'     #  0x2D -> ENQUIRY
+    u'\x06'     #  0x2E -> ACKNOWLEDGE
+    u'\x07'     #  0x2F -> BELL
+    u'\x90'     #  0x30 -> CONTROL
+    u'\x91'     #  0x31 -> CONTROL
+    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
+    u'\x93'     #  0x33 -> CONTROL
+    u'\x94'     #  0x34 -> CONTROL
+    u'\x95'     #  0x35 -> CONTROL
+    u'\x96'     #  0x36 -> CONTROL
+    u'\x04'     #  0x37 -> END OF TRANSMISSION
+    u'\x98'     #  0x38 -> CONTROL
+    u'\x99'     #  0x39 -> CONTROL
+    u'\x9a'     #  0x3A -> CONTROL
+    u'\x9b'     #  0x3B -> CONTROL
+    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'     #  0x3E -> CONTROL
+    u'\x1a'     #  0x3F -> SUBSTITUTE
+    u' '        #  0x40 -> SPACE
+    u'\xa0'     #  0x41 -> NO-BREAK SPACE
+    u'\xe2'     #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe0'     #  0x44 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0x45 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe3'     #  0x46 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'     #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xf1'     #  0x49 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xa2'     #  0x4A -> CENT SIGN
+    u'.'        #  0x4B -> FULL STOP
+    u'<'        #  0x4C -> LESS-THAN SIGN
+    u'('        #  0x4D -> LEFT PARENTHESIS
+    u'+'        #  0x4E -> PLUS SIGN
+    u'|'        #  0x4F -> VERTICAL LINE
+    u'&'        #  0x50 -> AMPERSAND
+    u'\xe9'     #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x54 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xed'     #  0x55 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xec'     #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xdf'     #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
+    u'!'        #  0x5A -> EXCLAMATION MARK
+    u'$'        #  0x5B -> DOLLAR SIGN
+    u'*'        #  0x5C -> ASTERISK
+    u')'        #  0x5D -> RIGHT PARENTHESIS
+    u';'        #  0x5E -> SEMICOLON
+    u'\xac'     #  0x5F -> NOT SIGN
+    u'-'        #  0x60 -> HYPHEN-MINUS
+    u'/'        #  0x61 -> SOLIDUS
+    u'\xc2'     #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc4'     #  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc0'     #  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc3'     #  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc5'     #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc7'     #  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xd1'     #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xa6'     #  0x6A -> BROKEN BAR
+    u','        #  0x6B -> COMMA
+    u'%'        #  0x6C -> PERCENT SIGN
+    u'_'        #  0x6D -> LOW LINE
+    u'>'        #  0x6E -> GREATER-THAN SIGN
+    u'?'        #  0x6F -> QUESTION MARK
+    u'\xf8'     #  0x70 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xc9'     #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'     #  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'     #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'`'        #  0x79 -> GRAVE ACCENT
+    u':'        #  0x7A -> COLON
+    u'#'        #  0x7B -> NUMBER SIGN
+    u'@'        #  0x7C -> COMMERCIAL AT
+    u"'"        #  0x7D -> APOSTROPHE
+    u'='        #  0x7E -> EQUALS SIGN
+    u'"'        #  0x7F -> QUOTATION MARK
+    u'\xd8'     #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'a'        #  0x81 -> LATIN SMALL LETTER A
+    u'b'        #  0x82 -> LATIN SMALL LETTER B
+    u'c'        #  0x83 -> LATIN SMALL LETTER C
+    u'd'        #  0x84 -> LATIN SMALL LETTER D
+    u'e'        #  0x85 -> LATIN SMALL LETTER E
+    u'f'        #  0x86 -> LATIN SMALL LETTER F
+    u'g'        #  0x87 -> LATIN SMALL LETTER G
+    u'h'        #  0x88 -> LATIN SMALL LETTER H
+    u'i'        #  0x89 -> LATIN SMALL LETTER I
+    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xf0'     #  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
+    u'\xfd'     #  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'     #  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
+    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
+    u'\xb0'     #  0x90 -> DEGREE SIGN
+    u'j'        #  0x91 -> LATIN SMALL LETTER J
+    u'k'        #  0x92 -> LATIN SMALL LETTER K
+    u'l'        #  0x93 -> LATIN SMALL LETTER L
+    u'm'        #  0x94 -> LATIN SMALL LETTER M
+    u'n'        #  0x95 -> LATIN SMALL LETTER N
+    u'o'        #  0x96 -> LATIN SMALL LETTER O
+    u'p'        #  0x97 -> LATIN SMALL LETTER P
+    u'q'        #  0x98 -> LATIN SMALL LETTER Q
+    u'r'        #  0x99 -> LATIN SMALL LETTER R
+    u'\xaa'     #  0x9A -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0x9B -> MASCULINE ORDINAL INDICATOR
+    u'\xe6'     #  0x9C -> LATIN SMALL LIGATURE AE
+    u'\xb8'     #  0x9D -> CEDILLA
+    u'\xc6'     #  0x9E -> LATIN CAPITAL LIGATURE AE
+    u'\xa4'     #  0x9F -> CURRENCY SIGN
+    u'\xb5'     #  0xA0 -> MICRO SIGN
+    u'~'        #  0xA1 -> TILDE
+    u's'        #  0xA2 -> LATIN SMALL LETTER S
+    u't'        #  0xA3 -> LATIN SMALL LETTER T
+    u'u'        #  0xA4 -> LATIN SMALL LETTER U
+    u'v'        #  0xA5 -> LATIN SMALL LETTER V
+    u'w'        #  0xA6 -> LATIN SMALL LETTER W
+    u'x'        #  0xA7 -> LATIN SMALL LETTER X
+    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
+    u'\xa1'     #  0xAA -> INVERTED EXCLAMATION MARK
+    u'\xbf'     #  0xAB -> INVERTED QUESTION MARK
+    u'\xd0'     #  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
+    u'\xdd'     #  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'     #  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
+    u'\xae'     #  0xAF -> REGISTERED SIGN
+    u'^'        #  0xB0 -> CIRCUMFLEX ACCENT
+    u'\xa3'     #  0xB1 -> POUND SIGN
+    u'\xa5'     #  0xB2 -> YEN SIGN
+    u'\xb7'     #  0xB3 -> MIDDLE DOT
+    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'     #  0xB5 -> SECTION SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'['        #  0xBA -> LEFT SQUARE BRACKET
+    u']'        #  0xBB -> RIGHT SQUARE BRACKET
+    u'\xaf'     #  0xBC -> MACRON
+    u'\xa8'     #  0xBD -> DIAERESIS
+    u'\xb4'     #  0xBE -> ACUTE ACCENT
+    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
+    u'{'        #  0xC0 -> LEFT CURLY BRACKET
+    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'     #  0xCA -> SOFT HYPHEN
+    u'\xf4'     #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'     #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf5'     #  0xCF -> LATIN SMALL LETTER O WITH TILDE
+    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
+    u'\xfb'     #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xf9'     #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xff'     #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\\'       #  0xE0 -> REVERSE SOLIDUS
+    u'\xf7'     #  0xE1 -> DIVISION SIGN
+    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
+    u'\xd4'     #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd6'     #  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd2'     #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd5'     #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
+    u'0'        #  0xF0 -> DIGIT ZERO
+    u'1'        #  0xF1 -> DIGIT ONE
+    u'2'        #  0xF2 -> DIGIT TWO
+    u'3'        #  0xF3 -> DIGIT THREE
+    u'4'        #  0xF4 -> DIGIT FOUR
+    u'5'        #  0xF5 -> DIGIT FIVE
+    u'6'        #  0xF6 -> DIGIT SIX
+    u'7'        #  0xF7 -> DIGIT SEVEN
+    u'8'        #  0xF8 -> DIGIT EIGHT
+    u'9'        #  0xF9 -> DIGIT NINE
+    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
+    u'\xdb'     #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xd9'     #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\x9f'     #  0xFF -> CONTROL
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x37,	#  END OF TRANSMISSION
-    0x0005: 0x2D,	#  ENQUIRY
-    0x0006: 0x2E,	#  ACKNOWLEDGE
-    0x0007: 0x2F,	#  BELL
-    0x0008: 0x16,	#  BACKSPACE
-    0x0009: 0x05,	#  HORIZONTAL TABULATION
-    0x000A: 0x25,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x3C,	#  DEVICE CONTROL FOUR
-    0x0015: 0x3D,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x32,	#  SYNCHRONOUS IDLE
-    0x0017: 0x26,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x3F,	#  SUBSTITUTE
-    0x001B: 0x27,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x40,	#  SPACE
-    0x0021: 0x5A,	#  EXCLAMATION MARK
-    0x0022: 0x7F,	#  QUOTATION MARK
-    0x0023: 0x7B,	#  NUMBER SIGN
-    0x0024: 0x5B,	#  DOLLAR SIGN
-    0x0025: 0x6C,	#  PERCENT SIGN
-    0x0026: 0x50,	#  AMPERSAND
-    0x0027: 0x7D,	#  APOSTROPHE
-    0x0028: 0x4D,	#  LEFT PARENTHESIS
-    0x0029: 0x5D,	#  RIGHT PARENTHESIS
-    0x002A: 0x5C,	#  ASTERISK
-    0x002B: 0x4E,	#  PLUS SIGN
-    0x002C: 0x6B,	#  COMMA
-    0x002D: 0x60,	#  HYPHEN-MINUS
-    0x002E: 0x4B,	#  FULL STOP
-    0x002F: 0x61,	#  SOLIDUS
-    0x0030: 0xF0,	#  DIGIT ZERO
-    0x0031: 0xF1,	#  DIGIT ONE
-    0x0032: 0xF2,	#  DIGIT TWO
-    0x0033: 0xF3,	#  DIGIT THREE
-    0x0034: 0xF4,	#  DIGIT FOUR
-    0x0035: 0xF5,	#  DIGIT FIVE
-    0x0036: 0xF6,	#  DIGIT SIX
-    0x0037: 0xF7,	#  DIGIT SEVEN
-    0x0038: 0xF8,	#  DIGIT EIGHT
-    0x0039: 0xF9,	#  DIGIT NINE
-    0x003A: 0x7A,	#  COLON
-    0x003B: 0x5E,	#  SEMICOLON
-    0x003C: 0x4C,	#  LESS-THAN SIGN
-    0x003D: 0x7E,	#  EQUALS SIGN
-    0x003E: 0x6E,	#  GREATER-THAN SIGN
-    0x003F: 0x6F,	#  QUESTION MARK
-    0x0040: 0x7C,	#  COMMERCIAL AT
-    0x0041: 0xC1,	#  LATIN CAPITAL LETTER A
-    0x0042: 0xC2,	#  LATIN CAPITAL LETTER B
-    0x0043: 0xC3,	#  LATIN CAPITAL LETTER C
-    0x0044: 0xC4,	#  LATIN CAPITAL LETTER D
-    0x0045: 0xC5,	#  LATIN CAPITAL LETTER E
-    0x0046: 0xC6,	#  LATIN CAPITAL LETTER F
-    0x0047: 0xC7,	#  LATIN CAPITAL LETTER G
-    0x0048: 0xC8,	#  LATIN CAPITAL LETTER H
-    0x0049: 0xC9,	#  LATIN CAPITAL LETTER I
-    0x004A: 0xD1,	#  LATIN CAPITAL LETTER J
-    0x004B: 0xD2,	#  LATIN CAPITAL LETTER K
-    0x004C: 0xD3,	#  LATIN CAPITAL LETTER L
-    0x004D: 0xD4,	#  LATIN CAPITAL LETTER M
-    0x004E: 0xD5,	#  LATIN CAPITAL LETTER N
-    0x004F: 0xD6,	#  LATIN CAPITAL LETTER O
-    0x0050: 0xD7,	#  LATIN CAPITAL LETTER P
-    0x0051: 0xD8,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0xD9,	#  LATIN CAPITAL LETTER R
-    0x0053: 0xE2,	#  LATIN CAPITAL LETTER S
-    0x0054: 0xE3,	#  LATIN CAPITAL LETTER T
-    0x0055: 0xE4,	#  LATIN CAPITAL LETTER U
-    0x0056: 0xE5,	#  LATIN CAPITAL LETTER V
-    0x0057: 0xE6,	#  LATIN CAPITAL LETTER W
-    0x0058: 0xE7,	#  LATIN CAPITAL LETTER X
-    0x0059: 0xE8,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0xE9,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0xBA,	#  LEFT SQUARE BRACKET
-    0x005C: 0xE0,	#  REVERSE SOLIDUS
-    0x005D: 0xBB,	#  RIGHT SQUARE BRACKET
-    0x005E: 0xB0,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x6D,	#  LOW LINE
-    0x0060: 0x79,	#  GRAVE ACCENT
-    0x0061: 0x81,	#  LATIN SMALL LETTER A
-    0x0062: 0x82,	#  LATIN SMALL LETTER B
-    0x0063: 0x83,	#  LATIN SMALL LETTER C
-    0x0064: 0x84,	#  LATIN SMALL LETTER D
-    0x0065: 0x85,	#  LATIN SMALL LETTER E
-    0x0066: 0x86,	#  LATIN SMALL LETTER F
-    0x0067: 0x87,	#  LATIN SMALL LETTER G
-    0x0068: 0x88,	#  LATIN SMALL LETTER H
-    0x0069: 0x89,	#  LATIN SMALL LETTER I
-    0x006A: 0x91,	#  LATIN SMALL LETTER J
-    0x006B: 0x92,	#  LATIN SMALL LETTER K
-    0x006C: 0x93,	#  LATIN SMALL LETTER L
-    0x006D: 0x94,	#  LATIN SMALL LETTER M
-    0x006E: 0x95,	#  LATIN SMALL LETTER N
-    0x006F: 0x96,	#  LATIN SMALL LETTER O
-    0x0070: 0x97,	#  LATIN SMALL LETTER P
-    0x0071: 0x98,	#  LATIN SMALL LETTER Q
-    0x0072: 0x99,	#  LATIN SMALL LETTER R
-    0x0073: 0xA2,	#  LATIN SMALL LETTER S
-    0x0074: 0xA3,	#  LATIN SMALL LETTER T
-    0x0075: 0xA4,	#  LATIN SMALL LETTER U
-    0x0076: 0xA5,	#  LATIN SMALL LETTER V
-    0x0077: 0xA6,	#  LATIN SMALL LETTER W
-    0x0078: 0xA7,	#  LATIN SMALL LETTER X
-    0x0079: 0xA8,	#  LATIN SMALL LETTER Y
-    0x007A: 0xA9,	#  LATIN SMALL LETTER Z
-    0x007B: 0xC0,	#  LEFT CURLY BRACKET
-    0x007C: 0x4F,	#  VERTICAL LINE
-    0x007D: 0xD0,	#  RIGHT CURLY BRACKET
-    0x007E: 0xA1,	#  TILDE
-    0x007F: 0x07,	#  DELETE
-    0x0080: 0x20,	#  CONTROL
-    0x0081: 0x21,	#  CONTROL
-    0x0082: 0x22,	#  CONTROL
-    0x0083: 0x23,	#  CONTROL
-    0x0084: 0x24,	#  CONTROL
-    0x0085: 0x15,	#  CONTROL
-    0x0086: 0x06,	#  CONTROL
-    0x0087: 0x17,	#  CONTROL
-    0x0088: 0x28,	#  CONTROL
-    0x0089: 0x29,	#  CONTROL
-    0x008A: 0x2A,	#  CONTROL
-    0x008B: 0x2B,	#  CONTROL
-    0x008C: 0x2C,	#  CONTROL
-    0x008D: 0x09,	#  CONTROL
-    0x008E: 0x0A,	#  CONTROL
-    0x008F: 0x1B,	#  CONTROL
-    0x0090: 0x30,	#  CONTROL
-    0x0091: 0x31,	#  CONTROL
-    0x0092: 0x1A,	#  CONTROL
-    0x0093: 0x33,	#  CONTROL
-    0x0094: 0x34,	#  CONTROL
-    0x0095: 0x35,	#  CONTROL
-    0x0096: 0x36,	#  CONTROL
-    0x0097: 0x08,	#  CONTROL
-    0x0098: 0x38,	#  CONTROL
-    0x0099: 0x39,	#  CONTROL
-    0x009A: 0x3A,	#  CONTROL
-    0x009B: 0x3B,	#  CONTROL
-    0x009C: 0x04,	#  CONTROL
-    0x009D: 0x14,	#  CONTROL
-    0x009E: 0x3E,	#  CONTROL
-    0x009F: 0xFF,	#  CONTROL
-    0x00A0: 0x41,	#  NO-BREAK SPACE
-    0x00A1: 0xAA,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0x4A,	#  CENT SIGN
-    0x00A3: 0xB1,	#  POUND SIGN
-    0x00A4: 0x9F,	#  CURRENCY SIGN
-    0x00A5: 0xB2,	#  YEN SIGN
-    0x00A6: 0x6A,	#  BROKEN BAR
-    0x00A7: 0xB5,	#  SECTION SIGN
-    0x00A8: 0xBD,	#  DIAERESIS
-    0x00A9: 0xB4,	#  COPYRIGHT SIGN
-    0x00AA: 0x9A,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0x8A,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0x5F,	#  NOT SIGN
-    0x00AD: 0xCA,	#  SOFT HYPHEN
-    0x00AE: 0xAF,	#  REGISTERED SIGN
-    0x00AF: 0xBC,	#  MACRON
-    0x00B0: 0x90,	#  DEGREE SIGN
-    0x00B1: 0x8F,	#  PLUS-MINUS SIGN
-    0x00B2: 0xEA,	#  SUPERSCRIPT TWO
-    0x00B3: 0xFA,	#  SUPERSCRIPT THREE
-    0x00B4: 0xBE,	#  ACUTE ACCENT
-    0x00B5: 0xA0,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB3,	#  MIDDLE DOT
-    0x00B8: 0x9D,	#  CEDILLA
-    0x00B9: 0xDA,	#  SUPERSCRIPT ONE
-    0x00BA: 0x9B,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0x8B,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xB7,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xB8,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xB9,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xAB,	#  INVERTED QUESTION MARK
-    0x00C0: 0x64,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0x65,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0x62,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0x66,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0x63,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0x67,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0x9E,	#  LATIN CAPITAL LIGATURE AE
-    0x00C7: 0x68,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0x74,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0x71,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0x72,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0x73,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0x78,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0x75,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0x76,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0x77,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D0: 0xAC,	#  LATIN CAPITAL LETTER ETH (ICELANDIC)
-    0x00D1: 0x69,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xED,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEB,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xEF,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xEC,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xBF,	#  MULTIPLICATION SIGN
-    0x00D8: 0x80,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xFD,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xFE,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xFB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xFC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xAD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DE: 0xAE,	#  LATIN CAPITAL LETTER THORN (ICELANDIC)
-    0x00DF: 0x59,	#  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00E0: 0x44,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x45,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x42,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0x46,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0x43,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0x47,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0x9C,	#  LATIN SMALL LIGATURE AE
-    0x00E7: 0x48,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x54,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x51,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x52,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x53,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0x58,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0x55,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x56,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x57,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F0: 0x8C,	#  LATIN SMALL LETTER ETH (ICELANDIC)
-    0x00F1: 0x49,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xCD,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xCE,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xCB,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xCF,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xCC,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xE1,	#  DIVISION SIGN
-    0x00F8: 0x70,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xDD,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xDE,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xDB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xDC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0x8D,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00FE: 0x8E,	#  LATIN SMALL LETTER THORN (ICELANDIC)
-    0x00FF: 0xDF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x37,       #  END OF TRANSMISSION
+    0x0005: 0x2D,       #  ENQUIRY
+    0x0006: 0x2E,       #  ACKNOWLEDGE
+    0x0007: 0x2F,       #  BELL
+    0x0008: 0x16,       #  BACKSPACE
+    0x0009: 0x05,       #  HORIZONTAL TABULATION
+    0x000A: 0x25,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x3C,       #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x32,       #  SYNCHRONOUS IDLE
+    0x0017: 0x26,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x3F,       #  SUBSTITUTE
+    0x001B: 0x27,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x40,       #  SPACE
+    0x0021: 0x5A,       #  EXCLAMATION MARK
+    0x0022: 0x7F,       #  QUOTATION MARK
+    0x0023: 0x7B,       #  NUMBER SIGN
+    0x0024: 0x5B,       #  DOLLAR SIGN
+    0x0025: 0x6C,       #  PERCENT SIGN
+    0x0026: 0x50,       #  AMPERSAND
+    0x0027: 0x7D,       #  APOSTROPHE
+    0x0028: 0x4D,       #  LEFT PARENTHESIS
+    0x0029: 0x5D,       #  RIGHT PARENTHESIS
+    0x002A: 0x5C,       #  ASTERISK
+    0x002B: 0x4E,       #  PLUS SIGN
+    0x002C: 0x6B,       #  COMMA
+    0x002D: 0x60,       #  HYPHEN-MINUS
+    0x002E: 0x4B,       #  FULL STOP
+    0x002F: 0x61,       #  SOLIDUS
+    0x0030: 0xF0,       #  DIGIT ZERO
+    0x0031: 0xF1,       #  DIGIT ONE
+    0x0032: 0xF2,       #  DIGIT TWO
+    0x0033: 0xF3,       #  DIGIT THREE
+    0x0034: 0xF4,       #  DIGIT FOUR
+    0x0035: 0xF5,       #  DIGIT FIVE
+    0x0036: 0xF6,       #  DIGIT SIX
+    0x0037: 0xF7,       #  DIGIT SEVEN
+    0x0038: 0xF8,       #  DIGIT EIGHT
+    0x0039: 0xF9,       #  DIGIT NINE
+    0x003A: 0x7A,       #  COLON
+    0x003B: 0x5E,       #  SEMICOLON
+    0x003C: 0x4C,       #  LESS-THAN SIGN
+    0x003D: 0x7E,       #  EQUALS SIGN
+    0x003E: 0x6E,       #  GREATER-THAN SIGN
+    0x003F: 0x6F,       #  QUESTION MARK
+    0x0040: 0x7C,       #  COMMERCIAL AT
+    0x0041: 0xC1,       #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,       #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,       #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,       #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,       #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,       #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,       #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,       #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,       #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,       #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,       #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,       #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,       #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,       #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,       #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,       #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,       #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,       #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,       #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,       #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,       #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,       #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,       #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0xBA,       #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,       #  REVERSE SOLIDUS
+    0x005D: 0xBB,       #  RIGHT SQUARE BRACKET
+    0x005E: 0xB0,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,       #  LOW LINE
+    0x0060: 0x79,       #  GRAVE ACCENT
+    0x0061: 0x81,       #  LATIN SMALL LETTER A
+    0x0062: 0x82,       #  LATIN SMALL LETTER B
+    0x0063: 0x83,       #  LATIN SMALL LETTER C
+    0x0064: 0x84,       #  LATIN SMALL LETTER D
+    0x0065: 0x85,       #  LATIN SMALL LETTER E
+    0x0066: 0x86,       #  LATIN SMALL LETTER F
+    0x0067: 0x87,       #  LATIN SMALL LETTER G
+    0x0068: 0x88,       #  LATIN SMALL LETTER H
+    0x0069: 0x89,       #  LATIN SMALL LETTER I
+    0x006A: 0x91,       #  LATIN SMALL LETTER J
+    0x006B: 0x92,       #  LATIN SMALL LETTER K
+    0x006C: 0x93,       #  LATIN SMALL LETTER L
+    0x006D: 0x94,       #  LATIN SMALL LETTER M
+    0x006E: 0x95,       #  LATIN SMALL LETTER N
+    0x006F: 0x96,       #  LATIN SMALL LETTER O
+    0x0070: 0x97,       #  LATIN SMALL LETTER P
+    0x0071: 0x98,       #  LATIN SMALL LETTER Q
+    0x0072: 0x99,       #  LATIN SMALL LETTER R
+    0x0073: 0xA2,       #  LATIN SMALL LETTER S
+    0x0074: 0xA3,       #  LATIN SMALL LETTER T
+    0x0075: 0xA4,       #  LATIN SMALL LETTER U
+    0x0076: 0xA5,       #  LATIN SMALL LETTER V
+    0x0077: 0xA6,       #  LATIN SMALL LETTER W
+    0x0078: 0xA7,       #  LATIN SMALL LETTER X
+    0x0079: 0xA8,       #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,       #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,       #  LEFT CURLY BRACKET
+    0x007C: 0x4F,       #  VERTICAL LINE
+    0x007D: 0xD0,       #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,       #  TILDE
+    0x007F: 0x07,       #  DELETE
+    0x0080: 0x20,       #  CONTROL
+    0x0081: 0x21,       #  CONTROL
+    0x0082: 0x22,       #  CONTROL
+    0x0083: 0x23,       #  CONTROL
+    0x0084: 0x24,       #  CONTROL
+    0x0085: 0x15,       #  CONTROL
+    0x0086: 0x06,       #  CONTROL
+    0x0087: 0x17,       #  CONTROL
+    0x0088: 0x28,       #  CONTROL
+    0x0089: 0x29,       #  CONTROL
+    0x008A: 0x2A,       #  CONTROL
+    0x008B: 0x2B,       #  CONTROL
+    0x008C: 0x2C,       #  CONTROL
+    0x008D: 0x09,       #  CONTROL
+    0x008E: 0x0A,       #  CONTROL
+    0x008F: 0x1B,       #  CONTROL
+    0x0090: 0x30,       #  CONTROL
+    0x0091: 0x31,       #  CONTROL
+    0x0092: 0x1A,       #  CONTROL
+    0x0093: 0x33,       #  CONTROL
+    0x0094: 0x34,       #  CONTROL
+    0x0095: 0x35,       #  CONTROL
+    0x0096: 0x36,       #  CONTROL
+    0x0097: 0x08,       #  CONTROL
+    0x0098: 0x38,       #  CONTROL
+    0x0099: 0x39,       #  CONTROL
+    0x009A: 0x3A,       #  CONTROL
+    0x009B: 0x3B,       #  CONTROL
+    0x009C: 0x04,       #  CONTROL
+    0x009D: 0x14,       #  CONTROL
+    0x009E: 0x3E,       #  CONTROL
+    0x009F: 0xFF,       #  CONTROL
+    0x00A0: 0x41,       #  NO-BREAK SPACE
+    0x00A1: 0xAA,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0x4A,       #  CENT SIGN
+    0x00A3: 0xB1,       #  POUND SIGN
+    0x00A4: 0x9F,       #  CURRENCY SIGN
+    0x00A5: 0xB2,       #  YEN SIGN
+    0x00A6: 0x6A,       #  BROKEN BAR
+    0x00A7: 0xB5,       #  SECTION SIGN
+    0x00A8: 0xBD,       #  DIAERESIS
+    0x00A9: 0xB4,       #  COPYRIGHT SIGN
+    0x00AA: 0x9A,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0x8A,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0x5F,       #  NOT SIGN
+    0x00AD: 0xCA,       #  SOFT HYPHEN
+    0x00AE: 0xAF,       #  REGISTERED SIGN
+    0x00AF: 0xBC,       #  MACRON
+    0x00B0: 0x90,       #  DEGREE SIGN
+    0x00B1: 0x8F,       #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,       #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,       #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,       #  ACUTE ACCENT
+    0x00B5: 0xA0,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB3,       #  MIDDLE DOT
+    0x00B8: 0x9D,       #  CEDILLA
+    0x00B9: 0xDA,       #  SUPERSCRIPT ONE
+    0x00BA: 0x9B,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0x8B,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xAB,       #  INVERTED QUESTION MARK
+    0x00C0: 0x64,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0x65,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0x62,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0x66,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x63,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x67,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0x9E,       #  LATIN CAPITAL LIGATURE AE
+    0x00C7: 0x68,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0x74,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x71,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0x72,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0x73,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0x78,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0x75,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0x76,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0x77,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xAC,       #  LATIN CAPITAL LETTER ETH (ICELANDIC)
+    0x00D1: 0x69,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xED,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEB,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xEF,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xEC,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xBF,       #  MULTIPLICATION SIGN
+    0x00D8: 0x80,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xFD,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xFE,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xFB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xFC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xAD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xAE,       #  LATIN CAPITAL LETTER THORN (ICELANDIC)
+    0x00DF: 0x59,       #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00E0: 0x44,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x45,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x42,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x46,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x43,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x47,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0x9C,       #  LATIN SMALL LIGATURE AE
+    0x00E7: 0x48,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x54,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x51,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x52,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x53,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x58,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x55,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x56,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x57,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0x8C,       #  LATIN SMALL LETTER ETH (ICELANDIC)
+    0x00F1: 0x49,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xCD,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xCE,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xCB,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xCF,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xCC,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xE1,       #  DIVISION SIGN
+    0x00F8: 0x70,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xDD,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xDE,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xDB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xDC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0x8D,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0x8E,       #  LATIN SMALL LETTER THORN (ICELANDIC)
+    0x00FF: 0xDF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
 }
-

Modified: python/trunk/Lib/encodings/cp1006.py
==============================================================================
--- python/trunk/Lib/encodings/cp1006.py	(original)
+++ python/trunk/Lib/encodings/cp1006.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,521 +32,520 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u06f0'	#  0xA1 -> EXTENDED ARABIC-INDIC DIGIT ZERO
-    u'\u06f1'	#  0xA2 -> EXTENDED ARABIC-INDIC DIGIT ONE
-    u'\u06f2'	#  0xA3 -> EXTENDED ARABIC-INDIC DIGIT TWO
-    u'\u06f3'	#  0xA4 -> EXTENDED ARABIC-INDIC DIGIT THREE
-    u'\u06f4'	#  0xA5 -> EXTENDED ARABIC-INDIC DIGIT FOUR
-    u'\u06f5'	#  0xA6 -> EXTENDED ARABIC-INDIC DIGIT FIVE
-    u'\u06f6'	#  0xA7 -> EXTENDED ARABIC-INDIC DIGIT SIX
-    u'\u06f7'	#  0xA8 -> EXTENDED ARABIC-INDIC DIGIT SEVEN
-    u'\u06f8'	#  0xA9 -> EXTENDED ARABIC-INDIC DIGIT EIGHT
-    u'\u06f9'	#  0xAA -> EXTENDED ARABIC-INDIC DIGIT NINE
-    u'\u060c'	#  0xAB -> ARABIC COMMA
-    u'\u061b'	#  0xAC -> ARABIC SEMICOLON
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\u061f'	#  0xAE -> ARABIC QUESTION MARK
-    u'\ufe81'	#  0xAF -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    u'\ufe8d'	#  0xB0 -> ARABIC LETTER ALEF ISOLATED FORM
-    u'\ufe8e'	#  0xB1 -> ARABIC LETTER ALEF FINAL FORM
-    u'\ufe8e'	#  0xB2 -> ARABIC LETTER ALEF FINAL FORM
-    u'\ufe8f'	#  0xB3 -> ARABIC LETTER BEH ISOLATED FORM
-    u'\ufe91'	#  0xB4 -> ARABIC LETTER BEH INITIAL FORM
-    u'\ufb56'	#  0xB5 -> ARABIC LETTER PEH ISOLATED FORM
-    u'\ufb58'	#  0xB6 -> ARABIC LETTER PEH INITIAL FORM
-    u'\ufe93'	#  0xB7 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    u'\ufe95'	#  0xB8 -> ARABIC LETTER TEH ISOLATED FORM
-    u'\ufe97'	#  0xB9 -> ARABIC LETTER TEH INITIAL FORM
-    u'\ufb66'	#  0xBA -> ARABIC LETTER TTEH ISOLATED FORM
-    u'\ufb68'	#  0xBB -> ARABIC LETTER TTEH INITIAL FORM
-    u'\ufe99'	#  0xBC -> ARABIC LETTER THEH ISOLATED FORM
-    u'\ufe9b'	#  0xBD -> ARABIC LETTER THEH INITIAL FORM
-    u'\ufe9d'	#  0xBE -> ARABIC LETTER JEEM ISOLATED FORM
-    u'\ufe9f'	#  0xBF -> ARABIC LETTER JEEM INITIAL FORM
-    u'\ufb7a'	#  0xC0 -> ARABIC LETTER TCHEH ISOLATED FORM
-    u'\ufb7c'	#  0xC1 -> ARABIC LETTER TCHEH INITIAL FORM
-    u'\ufea1'	#  0xC2 -> ARABIC LETTER HAH ISOLATED FORM
-    u'\ufea3'	#  0xC3 -> ARABIC LETTER HAH INITIAL FORM
-    u'\ufea5'	#  0xC4 -> ARABIC LETTER KHAH ISOLATED FORM
-    u'\ufea7'	#  0xC5 -> ARABIC LETTER KHAH INITIAL FORM
-    u'\ufea9'	#  0xC6 -> ARABIC LETTER DAL ISOLATED FORM
-    u'\ufb84'	#  0xC7 -> ARABIC LETTER DAHAL ISOLATED FORMN
-    u'\ufeab'	#  0xC8 -> ARABIC LETTER THAL ISOLATED FORM
-    u'\ufead'	#  0xC9 -> ARABIC LETTER REH ISOLATED FORM
-    u'\ufb8c'	#  0xCA -> ARABIC LETTER RREH ISOLATED FORM
-    u'\ufeaf'	#  0xCB -> ARABIC LETTER ZAIN ISOLATED FORM
-    u'\ufb8a'	#  0xCC -> ARABIC LETTER JEH ISOLATED FORM
-    u'\ufeb1'	#  0xCD -> ARABIC LETTER SEEN ISOLATED FORM
-    u'\ufeb3'	#  0xCE -> ARABIC LETTER SEEN INITIAL FORM
-    u'\ufeb5'	#  0xCF -> ARABIC LETTER SHEEN ISOLATED FORM
-    u'\ufeb7'	#  0xD0 -> ARABIC LETTER SHEEN INITIAL FORM
-    u'\ufeb9'	#  0xD1 -> ARABIC LETTER SAD ISOLATED FORM
-    u'\ufebb'	#  0xD2 -> ARABIC LETTER SAD INITIAL FORM
-    u'\ufebd'	#  0xD3 -> ARABIC LETTER DAD ISOLATED FORM
-    u'\ufebf'	#  0xD4 -> ARABIC LETTER DAD INITIAL FORM
-    u'\ufec1'	#  0xD5 -> ARABIC LETTER TAH ISOLATED FORM
-    u'\ufec5'	#  0xD6 -> ARABIC LETTER ZAH ISOLATED FORM
-    u'\ufec9'	#  0xD7 -> ARABIC LETTER AIN ISOLATED FORM
-    u'\ufeca'	#  0xD8 -> ARABIC LETTER AIN FINAL FORM
-    u'\ufecb'	#  0xD9 -> ARABIC LETTER AIN INITIAL FORM
-    u'\ufecc'	#  0xDA -> ARABIC LETTER AIN MEDIAL FORM
-    u'\ufecd'	#  0xDB -> ARABIC LETTER GHAIN ISOLATED FORM
-    u'\ufece'	#  0xDC -> ARABIC LETTER GHAIN FINAL FORM
-    u'\ufecf'	#  0xDD -> ARABIC LETTER GHAIN INITIAL FORM
-    u'\ufed0'	#  0xDE -> ARABIC LETTER GHAIN MEDIAL FORM
-    u'\ufed1'	#  0xDF -> ARABIC LETTER FEH ISOLATED FORM
-    u'\ufed3'	#  0xE0 -> ARABIC LETTER FEH INITIAL FORM
-    u'\ufed5'	#  0xE1 -> ARABIC LETTER QAF ISOLATED FORM
-    u'\ufed7'	#  0xE2 -> ARABIC LETTER QAF INITIAL FORM
-    u'\ufed9'	#  0xE3 -> ARABIC LETTER KAF ISOLATED FORM
-    u'\ufedb'	#  0xE4 -> ARABIC LETTER KAF INITIAL FORM
-    u'\ufb92'	#  0xE5 -> ARABIC LETTER GAF ISOLATED FORM
-    u'\ufb94'	#  0xE6 -> ARABIC LETTER GAF INITIAL FORM
-    u'\ufedd'	#  0xE7 -> ARABIC LETTER LAM ISOLATED FORM
-    u'\ufedf'	#  0xE8 -> ARABIC LETTER LAM INITIAL FORM
-    u'\ufee0'	#  0xE9 -> ARABIC LETTER LAM MEDIAL FORM
-    u'\ufee1'	#  0xEA -> ARABIC LETTER MEEM ISOLATED FORM
-    u'\ufee3'	#  0xEB -> ARABIC LETTER MEEM INITIAL FORM
-    u'\ufb9e'	#  0xEC -> ARABIC LETTER NOON GHUNNA ISOLATED FORM
-    u'\ufee5'	#  0xED -> ARABIC LETTER NOON ISOLATED FORM
-    u'\ufee7'	#  0xEE -> ARABIC LETTER NOON INITIAL FORM
-    u'\ufe85'	#  0xEF -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufeed'	#  0xF0 -> ARABIC LETTER WAW ISOLATED FORM
-    u'\ufba6'	#  0xF1 -> ARABIC LETTER HEH GOAL ISOLATED FORM
-    u'\ufba8'	#  0xF2 -> ARABIC LETTER HEH GOAL INITIAL FORM
-    u'\ufba9'	#  0xF3 -> ARABIC LETTER HEH GOAL MEDIAL FORM
-    u'\ufbaa'	#  0xF4 -> ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-    u'\ufe80'	#  0xF5 -> ARABIC LETTER HAMZA ISOLATED FORM
-    u'\ufe89'	#  0xF6 -> ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufe8a'	#  0xF7 -> ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-    u'\ufe8b'	#  0xF8 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    u'\ufef1'	#  0xF9 -> ARABIC LETTER YEH ISOLATED FORM
-    u'\ufef2'	#  0xFA -> ARABIC LETTER YEH FINAL FORM
-    u'\ufef3'	#  0xFB -> ARABIC LETTER YEH INITIAL FORM
-    u'\ufbb0'	#  0xFC -> ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufbae'	#  0xFD -> ARABIC LETTER YEH BARREE ISOLATED FORM
-    u'\ufe7c'	#  0xFE -> ARABIC SHADDA ISOLATED FORM
-    u'\ufe7d'	#  0xFF -> ARABIC SHADDA MEDIAL FORM
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u06f0'   #  0xA1 -> EXTENDED ARABIC-INDIC DIGIT ZERO
+    u'\u06f1'   #  0xA2 -> EXTENDED ARABIC-INDIC DIGIT ONE
+    u'\u06f2'   #  0xA3 -> EXTENDED ARABIC-INDIC DIGIT TWO
+    u'\u06f3'   #  0xA4 -> EXTENDED ARABIC-INDIC DIGIT THREE
+    u'\u06f4'   #  0xA5 -> EXTENDED ARABIC-INDIC DIGIT FOUR
+    u'\u06f5'   #  0xA6 -> EXTENDED ARABIC-INDIC DIGIT FIVE
+    u'\u06f6'   #  0xA7 -> EXTENDED ARABIC-INDIC DIGIT SIX
+    u'\u06f7'   #  0xA8 -> EXTENDED ARABIC-INDIC DIGIT SEVEN
+    u'\u06f8'   #  0xA9 -> EXTENDED ARABIC-INDIC DIGIT EIGHT
+    u'\u06f9'   #  0xAA -> EXTENDED ARABIC-INDIC DIGIT NINE
+    u'\u060c'   #  0xAB -> ARABIC COMMA
+    u'\u061b'   #  0xAC -> ARABIC SEMICOLON
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\u061f'   #  0xAE -> ARABIC QUESTION MARK
+    u'\ufe81'   #  0xAF -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+    u'\ufe8d'   #  0xB0 -> ARABIC LETTER ALEF ISOLATED FORM
+    u'\ufe8e'   #  0xB1 -> ARABIC LETTER ALEF FINAL FORM
+    u'\ufe8e'   #  0xB2 -> ARABIC LETTER ALEF FINAL FORM
+    u'\ufe8f'   #  0xB3 -> ARABIC LETTER BEH ISOLATED FORM
+    u'\ufe91'   #  0xB4 -> ARABIC LETTER BEH INITIAL FORM
+    u'\ufb56'   #  0xB5 -> ARABIC LETTER PEH ISOLATED FORM
+    u'\ufb58'   #  0xB6 -> ARABIC LETTER PEH INITIAL FORM
+    u'\ufe93'   #  0xB7 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
+    u'\ufe95'   #  0xB8 -> ARABIC LETTER TEH ISOLATED FORM
+    u'\ufe97'   #  0xB9 -> ARABIC LETTER TEH INITIAL FORM
+    u'\ufb66'   #  0xBA -> ARABIC LETTER TTEH ISOLATED FORM
+    u'\ufb68'   #  0xBB -> ARABIC LETTER TTEH INITIAL FORM
+    u'\ufe99'   #  0xBC -> ARABIC LETTER THEH ISOLATED FORM
+    u'\ufe9b'   #  0xBD -> ARABIC LETTER THEH INITIAL FORM
+    u'\ufe9d'   #  0xBE -> ARABIC LETTER JEEM ISOLATED FORM
+    u'\ufe9f'   #  0xBF -> ARABIC LETTER JEEM INITIAL FORM
+    u'\ufb7a'   #  0xC0 -> ARABIC LETTER TCHEH ISOLATED FORM
+    u'\ufb7c'   #  0xC1 -> ARABIC LETTER TCHEH INITIAL FORM
+    u'\ufea1'   #  0xC2 -> ARABIC LETTER HAH ISOLATED FORM
+    u'\ufea3'   #  0xC3 -> ARABIC LETTER HAH INITIAL FORM
+    u'\ufea5'   #  0xC4 -> ARABIC LETTER KHAH ISOLATED FORM
+    u'\ufea7'   #  0xC5 -> ARABIC LETTER KHAH INITIAL FORM
+    u'\ufea9'   #  0xC6 -> ARABIC LETTER DAL ISOLATED FORM
+    u'\ufb84'   #  0xC7 -> ARABIC LETTER DAHAL ISOLATED FORMN
+    u'\ufeab'   #  0xC8 -> ARABIC LETTER THAL ISOLATED FORM
+    u'\ufead'   #  0xC9 -> ARABIC LETTER REH ISOLATED FORM
+    u'\ufb8c'   #  0xCA -> ARABIC LETTER RREH ISOLATED FORM
+    u'\ufeaf'   #  0xCB -> ARABIC LETTER ZAIN ISOLATED FORM
+    u'\ufb8a'   #  0xCC -> ARABIC LETTER JEH ISOLATED FORM
+    u'\ufeb1'   #  0xCD -> ARABIC LETTER SEEN ISOLATED FORM
+    u'\ufeb3'   #  0xCE -> ARABIC LETTER SEEN INITIAL FORM
+    u'\ufeb5'   #  0xCF -> ARABIC LETTER SHEEN ISOLATED FORM
+    u'\ufeb7'   #  0xD0 -> ARABIC LETTER SHEEN INITIAL FORM
+    u'\ufeb9'   #  0xD1 -> ARABIC LETTER SAD ISOLATED FORM
+    u'\ufebb'   #  0xD2 -> ARABIC LETTER SAD INITIAL FORM
+    u'\ufebd'   #  0xD3 -> ARABIC LETTER DAD ISOLATED FORM
+    u'\ufebf'   #  0xD4 -> ARABIC LETTER DAD INITIAL FORM
+    u'\ufec1'   #  0xD5 -> ARABIC LETTER TAH ISOLATED FORM
+    u'\ufec5'   #  0xD6 -> ARABIC LETTER ZAH ISOLATED FORM
+    u'\ufec9'   #  0xD7 -> ARABIC LETTER AIN ISOLATED FORM
+    u'\ufeca'   #  0xD8 -> ARABIC LETTER AIN FINAL FORM
+    u'\ufecb'   #  0xD9 -> ARABIC LETTER AIN INITIAL FORM
+    u'\ufecc'   #  0xDA -> ARABIC LETTER AIN MEDIAL FORM
+    u'\ufecd'   #  0xDB -> ARABIC LETTER GHAIN ISOLATED FORM
+    u'\ufece'   #  0xDC -> ARABIC LETTER GHAIN FINAL FORM
+    u'\ufecf'   #  0xDD -> ARABIC LETTER GHAIN INITIAL FORM
+    u'\ufed0'   #  0xDE -> ARABIC LETTER GHAIN MEDIAL FORM
+    u'\ufed1'   #  0xDF -> ARABIC LETTER FEH ISOLATED FORM
+    u'\ufed3'   #  0xE0 -> ARABIC LETTER FEH INITIAL FORM
+    u'\ufed5'   #  0xE1 -> ARABIC LETTER QAF ISOLATED FORM
+    u'\ufed7'   #  0xE2 -> ARABIC LETTER QAF INITIAL FORM
+    u'\ufed9'   #  0xE3 -> ARABIC LETTER KAF ISOLATED FORM
+    u'\ufedb'   #  0xE4 -> ARABIC LETTER KAF INITIAL FORM
+    u'\ufb92'   #  0xE5 -> ARABIC LETTER GAF ISOLATED FORM
+    u'\ufb94'   #  0xE6 -> ARABIC LETTER GAF INITIAL FORM
+    u'\ufedd'   #  0xE7 -> ARABIC LETTER LAM ISOLATED FORM
+    u'\ufedf'   #  0xE8 -> ARABIC LETTER LAM INITIAL FORM
+    u'\ufee0'   #  0xE9 -> ARABIC LETTER LAM MEDIAL FORM
+    u'\ufee1'   #  0xEA -> ARABIC LETTER MEEM ISOLATED FORM
+    u'\ufee3'   #  0xEB -> ARABIC LETTER MEEM INITIAL FORM
+    u'\ufb9e'   #  0xEC -> ARABIC LETTER NOON GHUNNA ISOLATED FORM
+    u'\ufee5'   #  0xED -> ARABIC LETTER NOON ISOLATED FORM
+    u'\ufee7'   #  0xEE -> ARABIC LETTER NOON INITIAL FORM
+    u'\ufe85'   #  0xEF -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+    u'\ufeed'   #  0xF0 -> ARABIC LETTER WAW ISOLATED FORM
+    u'\ufba6'   #  0xF1 -> ARABIC LETTER HEH GOAL ISOLATED FORM
+    u'\ufba8'   #  0xF2 -> ARABIC LETTER HEH GOAL INITIAL FORM
+    u'\ufba9'   #  0xF3 -> ARABIC LETTER HEH GOAL MEDIAL FORM
+    u'\ufbaa'   #  0xF4 -> ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+    u'\ufe80'   #  0xF5 -> ARABIC LETTER HAMZA ISOLATED FORM
+    u'\ufe89'   #  0xF6 -> ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+    u'\ufe8a'   #  0xF7 -> ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+    u'\ufe8b'   #  0xF8 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+    u'\ufef1'   #  0xF9 -> ARABIC LETTER YEH ISOLATED FORM
+    u'\ufef2'   #  0xFA -> ARABIC LETTER YEH FINAL FORM
+    u'\ufef3'   #  0xFB -> ARABIC LETTER YEH INITIAL FORM
+    u'\ufbb0'   #  0xFC -> ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+    u'\ufbae'   #  0xFD -> ARABIC LETTER YEH BARREE ISOLATED FORM
+    u'\ufe7c'   #  0xFE -> ARABIC SHADDA ISOLATED FORM
+    u'\ufe7d'   #  0xFF -> ARABIC SHADDA MEDIAL FORM
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x060C: 0xAB,	#  ARABIC COMMA
-    0x061B: 0xAC,	#  ARABIC SEMICOLON
-    0x061F: 0xAE,	#  ARABIC QUESTION MARK
-    0x06F0: 0xA1,	#  EXTENDED ARABIC-INDIC DIGIT ZERO
-    0x06F1: 0xA2,	#  EXTENDED ARABIC-INDIC DIGIT ONE
-    0x06F2: 0xA3,	#  EXTENDED ARABIC-INDIC DIGIT TWO
-    0x06F3: 0xA4,	#  EXTENDED ARABIC-INDIC DIGIT THREE
-    0x06F4: 0xA5,	#  EXTENDED ARABIC-INDIC DIGIT FOUR
-    0x06F5: 0xA6,	#  EXTENDED ARABIC-INDIC DIGIT FIVE
-    0x06F6: 0xA7,	#  EXTENDED ARABIC-INDIC DIGIT SIX
-    0x06F7: 0xA8,	#  EXTENDED ARABIC-INDIC DIGIT SEVEN
-    0x06F8: 0xA9,	#  EXTENDED ARABIC-INDIC DIGIT EIGHT
-    0x06F9: 0xAA,	#  EXTENDED ARABIC-INDIC DIGIT NINE
-    0xFB56: 0xB5,	#  ARABIC LETTER PEH ISOLATED FORM
-    0xFB58: 0xB6,	#  ARABIC LETTER PEH INITIAL FORM
-    0xFB66: 0xBA,	#  ARABIC LETTER TTEH ISOLATED FORM
-    0xFB68: 0xBB,	#  ARABIC LETTER TTEH INITIAL FORM
-    0xFB7A: 0xC0,	#  ARABIC LETTER TCHEH ISOLATED FORM
-    0xFB7C: 0xC1,	#  ARABIC LETTER TCHEH INITIAL FORM
-    0xFB84: 0xC7,	#  ARABIC LETTER DAHAL ISOLATED FORMN
-    0xFB8A: 0xCC,	#  ARABIC LETTER JEH ISOLATED FORM
-    0xFB8C: 0xCA,	#  ARABIC LETTER RREH ISOLATED FORM
-    0xFB92: 0xE5,	#  ARABIC LETTER GAF ISOLATED FORM
-    0xFB94: 0xE6,	#  ARABIC LETTER GAF INITIAL FORM
-    0xFB9E: 0xEC,	#  ARABIC LETTER NOON GHUNNA ISOLATED FORM
-    0xFBA6: 0xF1,	#  ARABIC LETTER HEH GOAL ISOLATED FORM
-    0xFBA8: 0xF2,	#  ARABIC LETTER HEH GOAL INITIAL FORM
-    0xFBA9: 0xF3,	#  ARABIC LETTER HEH GOAL MEDIAL FORM
-    0xFBAA: 0xF4,	#  ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-    0xFBAE: 0xFD,	#  ARABIC LETTER YEH BARREE ISOLATED FORM
-    0xFBB0: 0xFC,	#  ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-    0xFE7C: 0xFE,	#  ARABIC SHADDA ISOLATED FORM
-    0xFE7D: 0xFF,	#  ARABIC SHADDA MEDIAL FORM
-    0xFE80: 0xF5,	#  ARABIC LETTER HAMZA ISOLATED FORM
-    0xFE81: 0xAF,	#  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    0xFE85: 0xEF,	#  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    0xFE89: 0xF6,	#  ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-    0xFE8A: 0xF7,	#  ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-    0xFE8B: 0xF8,	#  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    0xFE8D: 0xB0,	#  ARABIC LETTER ALEF ISOLATED FORM
-    0xFE8E: None,	#  ARABIC LETTER ALEF FINAL FORM
-    0xFE8F: 0xB3,	#  ARABIC LETTER BEH ISOLATED FORM
-    0xFE91: 0xB4,	#  ARABIC LETTER BEH INITIAL FORM
-    0xFE93: 0xB7,	#  ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    0xFE95: 0xB8,	#  ARABIC LETTER TEH ISOLATED FORM
-    0xFE97: 0xB9,	#  ARABIC LETTER TEH INITIAL FORM
-    0xFE99: 0xBC,	#  ARABIC LETTER THEH ISOLATED FORM
-    0xFE9B: 0xBD,	#  ARABIC LETTER THEH INITIAL FORM
-    0xFE9D: 0xBE,	#  ARABIC LETTER JEEM ISOLATED FORM
-    0xFE9F: 0xBF,	#  ARABIC LETTER JEEM INITIAL FORM
-    0xFEA1: 0xC2,	#  ARABIC LETTER HAH ISOLATED FORM
-    0xFEA3: 0xC3,	#  ARABIC LETTER HAH INITIAL FORM
-    0xFEA5: 0xC4,	#  ARABIC LETTER KHAH ISOLATED FORM
-    0xFEA7: 0xC5,	#  ARABIC LETTER KHAH INITIAL FORM
-    0xFEA9: 0xC6,	#  ARABIC LETTER DAL ISOLATED FORM
-    0xFEAB: 0xC8,	#  ARABIC LETTER THAL ISOLATED FORM
-    0xFEAD: 0xC9,	#  ARABIC LETTER REH ISOLATED FORM
-    0xFEAF: 0xCB,	#  ARABIC LETTER ZAIN ISOLATED FORM
-    0xFEB1: 0xCD,	#  ARABIC LETTER SEEN ISOLATED FORM
-    0xFEB3: 0xCE,	#  ARABIC LETTER SEEN INITIAL FORM
-    0xFEB5: 0xCF,	#  ARABIC LETTER SHEEN ISOLATED FORM
-    0xFEB7: 0xD0,	#  ARABIC LETTER SHEEN INITIAL FORM
-    0xFEB9: 0xD1,	#  ARABIC LETTER SAD ISOLATED FORM
-    0xFEBB: 0xD2,	#  ARABIC LETTER SAD INITIAL FORM
-    0xFEBD: 0xD3,	#  ARABIC LETTER DAD ISOLATED FORM
-    0xFEBF: 0xD4,	#  ARABIC LETTER DAD INITIAL FORM
-    0xFEC1: 0xD5,	#  ARABIC LETTER TAH ISOLATED FORM
-    0xFEC5: 0xD6,	#  ARABIC LETTER ZAH ISOLATED FORM
-    0xFEC9: 0xD7,	#  ARABIC LETTER AIN ISOLATED FORM
-    0xFECA: 0xD8,	#  ARABIC LETTER AIN FINAL FORM
-    0xFECB: 0xD9,	#  ARABIC LETTER AIN INITIAL FORM
-    0xFECC: 0xDA,	#  ARABIC LETTER AIN MEDIAL FORM
-    0xFECD: 0xDB,	#  ARABIC LETTER GHAIN ISOLATED FORM
-    0xFECE: 0xDC,	#  ARABIC LETTER GHAIN FINAL FORM
-    0xFECF: 0xDD,	#  ARABIC LETTER GHAIN INITIAL FORM
-    0xFED0: 0xDE,	#  ARABIC LETTER GHAIN MEDIAL FORM
-    0xFED1: 0xDF,	#  ARABIC LETTER FEH ISOLATED FORM
-    0xFED3: 0xE0,	#  ARABIC LETTER FEH INITIAL FORM
-    0xFED5: 0xE1,	#  ARABIC LETTER QAF ISOLATED FORM
-    0xFED7: 0xE2,	#  ARABIC LETTER QAF INITIAL FORM
-    0xFED9: 0xE3,	#  ARABIC LETTER KAF ISOLATED FORM
-    0xFEDB: 0xE4,	#  ARABIC LETTER KAF INITIAL FORM
-    0xFEDD: 0xE7,	#  ARABIC LETTER LAM ISOLATED FORM
-    0xFEDF: 0xE8,	#  ARABIC LETTER LAM INITIAL FORM
-    0xFEE0: 0xE9,	#  ARABIC LETTER LAM MEDIAL FORM
-    0xFEE1: 0xEA,	#  ARABIC LETTER MEEM ISOLATED FORM
-    0xFEE3: 0xEB,	#  ARABIC LETTER MEEM INITIAL FORM
-    0xFEE5: 0xED,	#  ARABIC LETTER NOON ISOLATED FORM
-    0xFEE7: 0xEE,	#  ARABIC LETTER NOON INITIAL FORM
-    0xFEED: 0xF0,	#  ARABIC LETTER WAW ISOLATED FORM
-    0xFEF1: 0xF9,	#  ARABIC LETTER YEH ISOLATED FORM
-    0xFEF2: 0xFA,	#  ARABIC LETTER YEH FINAL FORM
-    0xFEF3: 0xFB,	#  ARABIC LETTER YEH INITIAL FORM
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x060C: 0xAB,       #  ARABIC COMMA
+    0x061B: 0xAC,       #  ARABIC SEMICOLON
+    0x061F: 0xAE,       #  ARABIC QUESTION MARK
+    0x06F0: 0xA1,       #  EXTENDED ARABIC-INDIC DIGIT ZERO
+    0x06F1: 0xA2,       #  EXTENDED ARABIC-INDIC DIGIT ONE
+    0x06F2: 0xA3,       #  EXTENDED ARABIC-INDIC DIGIT TWO
+    0x06F3: 0xA4,       #  EXTENDED ARABIC-INDIC DIGIT THREE
+    0x06F4: 0xA5,       #  EXTENDED ARABIC-INDIC DIGIT FOUR
+    0x06F5: 0xA6,       #  EXTENDED ARABIC-INDIC DIGIT FIVE
+    0x06F6: 0xA7,       #  EXTENDED ARABIC-INDIC DIGIT SIX
+    0x06F7: 0xA8,       #  EXTENDED ARABIC-INDIC DIGIT SEVEN
+    0x06F8: 0xA9,       #  EXTENDED ARABIC-INDIC DIGIT EIGHT
+    0x06F9: 0xAA,       #  EXTENDED ARABIC-INDIC DIGIT NINE
+    0xFB56: 0xB5,       #  ARABIC LETTER PEH ISOLATED FORM
+    0xFB58: 0xB6,       #  ARABIC LETTER PEH INITIAL FORM
+    0xFB66: 0xBA,       #  ARABIC LETTER TTEH ISOLATED FORM
+    0xFB68: 0xBB,       #  ARABIC LETTER TTEH INITIAL FORM
+    0xFB7A: 0xC0,       #  ARABIC LETTER TCHEH ISOLATED FORM
+    0xFB7C: 0xC1,       #  ARABIC LETTER TCHEH INITIAL FORM
+    0xFB84: 0xC7,       #  ARABIC LETTER DAHAL ISOLATED FORMN
+    0xFB8A: 0xCC,       #  ARABIC LETTER JEH ISOLATED FORM
+    0xFB8C: 0xCA,       #  ARABIC LETTER RREH ISOLATED FORM
+    0xFB92: 0xE5,       #  ARABIC LETTER GAF ISOLATED FORM
+    0xFB94: 0xE6,       #  ARABIC LETTER GAF INITIAL FORM
+    0xFB9E: 0xEC,       #  ARABIC LETTER NOON GHUNNA ISOLATED FORM
+    0xFBA6: 0xF1,       #  ARABIC LETTER HEH GOAL ISOLATED FORM
+    0xFBA8: 0xF2,       #  ARABIC LETTER HEH GOAL INITIAL FORM
+    0xFBA9: 0xF3,       #  ARABIC LETTER HEH GOAL MEDIAL FORM
+    0xFBAA: 0xF4,       #  ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+    0xFBAE: 0xFD,       #  ARABIC LETTER YEH BARREE ISOLATED FORM
+    0xFBB0: 0xFC,       #  ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+    0xFE7C: 0xFE,       #  ARABIC SHADDA ISOLATED FORM
+    0xFE7D: 0xFF,       #  ARABIC SHADDA MEDIAL FORM
+    0xFE80: 0xF5,       #  ARABIC LETTER HAMZA ISOLATED FORM
+    0xFE81: 0xAF,       #  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+    0xFE85: 0xEF,       #  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+    0xFE89: 0xF6,       #  ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+    0xFE8A: 0xF7,       #  ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+    0xFE8B: 0xF8,       #  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+    0xFE8D: 0xB0,       #  ARABIC LETTER ALEF ISOLATED FORM
+    0xFE8E: None,       #  ARABIC LETTER ALEF FINAL FORM
+    0xFE8F: 0xB3,       #  ARABIC LETTER BEH ISOLATED FORM
+    0xFE91: 0xB4,       #  ARABIC LETTER BEH INITIAL FORM
+    0xFE93: 0xB7,       #  ARABIC LETTER TEH MARBUTA ISOLATED FORM
+    0xFE95: 0xB8,       #  ARABIC LETTER TEH ISOLATED FORM
+    0xFE97: 0xB9,       #  ARABIC LETTER TEH INITIAL FORM
+    0xFE99: 0xBC,       #  ARABIC LETTER THEH ISOLATED FORM
+    0xFE9B: 0xBD,       #  ARABIC LETTER THEH INITIAL FORM
+    0xFE9D: 0xBE,       #  ARABIC LETTER JEEM ISOLATED FORM
+    0xFE9F: 0xBF,       #  ARABIC LETTER JEEM INITIAL FORM
+    0xFEA1: 0xC2,       #  ARABIC LETTER HAH ISOLATED FORM
+    0xFEA3: 0xC3,       #  ARABIC LETTER HAH INITIAL FORM
+    0xFEA5: 0xC4,       #  ARABIC LETTER KHAH ISOLATED FORM
+    0xFEA7: 0xC5,       #  ARABIC LETTER KHAH INITIAL FORM
+    0xFEA9: 0xC6,       #  ARABIC LETTER DAL ISOLATED FORM
+    0xFEAB: 0xC8,       #  ARABIC LETTER THAL ISOLATED FORM
+    0xFEAD: 0xC9,       #  ARABIC LETTER REH ISOLATED FORM
+    0xFEAF: 0xCB,       #  ARABIC LETTER ZAIN ISOLATED FORM
+    0xFEB1: 0xCD,       #  ARABIC LETTER SEEN ISOLATED FORM
+    0xFEB3: 0xCE,       #  ARABIC LETTER SEEN INITIAL FORM
+    0xFEB5: 0xCF,       #  ARABIC LETTER SHEEN ISOLATED FORM
+    0xFEB7: 0xD0,       #  ARABIC LETTER SHEEN INITIAL FORM
+    0xFEB9: 0xD1,       #  ARABIC LETTER SAD ISOLATED FORM
+    0xFEBB: 0xD2,       #  ARABIC LETTER SAD INITIAL FORM
+    0xFEBD: 0xD3,       #  ARABIC LETTER DAD ISOLATED FORM
+    0xFEBF: 0xD4,       #  ARABIC LETTER DAD INITIAL FORM
+    0xFEC1: 0xD5,       #  ARABIC LETTER TAH ISOLATED FORM
+    0xFEC5: 0xD6,       #  ARABIC LETTER ZAH ISOLATED FORM
+    0xFEC9: 0xD7,       #  ARABIC LETTER AIN ISOLATED FORM
+    0xFECA: 0xD8,       #  ARABIC LETTER AIN FINAL FORM
+    0xFECB: 0xD9,       #  ARABIC LETTER AIN INITIAL FORM
+    0xFECC: 0xDA,       #  ARABIC LETTER AIN MEDIAL FORM
+    0xFECD: 0xDB,       #  ARABIC LETTER GHAIN ISOLATED FORM
+    0xFECE: 0xDC,       #  ARABIC LETTER GHAIN FINAL FORM
+    0xFECF: 0xDD,       #  ARABIC LETTER GHAIN INITIAL FORM
+    0xFED0: 0xDE,       #  ARABIC LETTER GHAIN MEDIAL FORM
+    0xFED1: 0xDF,       #  ARABIC LETTER FEH ISOLATED FORM
+    0xFED3: 0xE0,       #  ARABIC LETTER FEH INITIAL FORM
+    0xFED5: 0xE1,       #  ARABIC LETTER QAF ISOLATED FORM
+    0xFED7: 0xE2,       #  ARABIC LETTER QAF INITIAL FORM
+    0xFED9: 0xE3,       #  ARABIC LETTER KAF ISOLATED FORM
+    0xFEDB: 0xE4,       #  ARABIC LETTER KAF INITIAL FORM
+    0xFEDD: 0xE7,       #  ARABIC LETTER LAM ISOLATED FORM
+    0xFEDF: 0xE8,       #  ARABIC LETTER LAM INITIAL FORM
+    0xFEE0: 0xE9,       #  ARABIC LETTER LAM MEDIAL FORM
+    0xFEE1: 0xEA,       #  ARABIC LETTER MEEM ISOLATED FORM
+    0xFEE3: 0xEB,       #  ARABIC LETTER MEEM INITIAL FORM
+    0xFEE5: 0xED,       #  ARABIC LETTER NOON ISOLATED FORM
+    0xFEE7: 0xEE,       #  ARABIC LETTER NOON INITIAL FORM
+    0xFEED: 0xF0,       #  ARABIC LETTER WAW ISOLATED FORM
+    0xFEF1: 0xF9,       #  ARABIC LETTER YEH ISOLATED FORM
+    0xFEF2: 0xFA,       #  ARABIC LETTER YEH FINAL FORM
+    0xFEF3: 0xFB,       #  ARABIC LETTER YEH INITIAL FORM
 }
-

Modified: python/trunk/Lib/encodings/cp1026.py
==============================================================================
--- python/trunk/Lib/encodings/cp1026.py	(original)
+++ python/trunk/Lib/encodings/cp1026.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x9c'	#  0x04 -> CONTROL
-    u'\t'	#  0x05 -> HORIZONTAL TABULATION
-    u'\x86'	#  0x06 -> CONTROL
-    u'\x7f'	#  0x07 -> DELETE
-    u'\x97'	#  0x08 -> CONTROL
-    u'\x8d'	#  0x09 -> CONTROL
-    u'\x8e'	#  0x0A -> CONTROL
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'	#  0x14 -> CONTROL
-    u'\x85'	#  0x15 -> CONTROL
-    u'\x08'	#  0x16 -> BACKSPACE
-    u'\x87'	#  0x17 -> CONTROL
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x92'	#  0x1A -> CONTROL
-    u'\x8f'	#  0x1B -> CONTROL
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u'\x80'	#  0x20 -> CONTROL
-    u'\x81'	#  0x21 -> CONTROL
-    u'\x82'	#  0x22 -> CONTROL
-    u'\x83'	#  0x23 -> CONTROL
-    u'\x84'	#  0x24 -> CONTROL
-    u'\n'	#  0x25 -> LINE FEED
-    u'\x17'	#  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'	#  0x27 -> ESCAPE
-    u'\x88'	#  0x28 -> CONTROL
-    u'\x89'	#  0x29 -> CONTROL
-    u'\x8a'	#  0x2A -> CONTROL
-    u'\x8b'	#  0x2B -> CONTROL
-    u'\x8c'	#  0x2C -> CONTROL
-    u'\x05'	#  0x2D -> ENQUIRY
-    u'\x06'	#  0x2E -> ACKNOWLEDGE
-    u'\x07'	#  0x2F -> BELL
-    u'\x90'	#  0x30 -> CONTROL
-    u'\x91'	#  0x31 -> CONTROL
-    u'\x16'	#  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'	#  0x33 -> CONTROL
-    u'\x94'	#  0x34 -> CONTROL
-    u'\x95'	#  0x35 -> CONTROL
-    u'\x96'	#  0x36 -> CONTROL
-    u'\x04'	#  0x37 -> END OF TRANSMISSION
-    u'\x98'	#  0x38 -> CONTROL
-    u'\x99'	#  0x39 -> CONTROL
-    u'\x9a'	#  0x3A -> CONTROL
-    u'\x9b'	#  0x3B -> CONTROL
-    u'\x14'	#  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'	#  0x3E -> CONTROL
-    u'\x1a'	#  0x3F -> SUBSTITUTE
-    u' '	#  0x40 -> SPACE
-    u'\xa0'	#  0x41 -> NO-BREAK SPACE
-    u'\xe2'	#  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'	#  0x44 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0x45 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe3'	#  0x46 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'	#  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'{'	#  0x48 -> LEFT CURLY BRACKET
-    u'\xf1'	#  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xc7'	#  0x4A -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'.'	#  0x4B -> FULL STOP
-    u'<'	#  0x4C -> LESS-THAN SIGN
-    u'('	#  0x4D -> LEFT PARENTHESIS
-    u'+'	#  0x4E -> PLUS SIGN
-    u'!'	#  0x4F -> EXCLAMATION MARK
-    u'&'	#  0x50 -> AMPERSAND
-    u'\xe9'	#  0x51 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x54 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xed'	#  0x55 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xec'	#  0x58 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xdf'	#  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'\u011e'	#  0x5A -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u0130'	#  0x5B -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'*'	#  0x5C -> ASTERISK
-    u')'	#  0x5D -> RIGHT PARENTHESIS
-    u';'	#  0x5E -> SEMICOLON
-    u'^'	#  0x5F -> CIRCUMFLEX ACCENT
-    u'-'	#  0x60 -> HYPHEN-MINUS
-    u'/'	#  0x61 -> SOLIDUS
-    u'\xc2'	#  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc4'	#  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc0'	#  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc3'	#  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc5'	#  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'['	#  0x68 -> LEFT SQUARE BRACKET
-    u'\xd1'	#  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\u015f'	#  0x6A -> LATIN SMALL LETTER S WITH CEDILLA
-    u','	#  0x6B -> COMMA
-    u'%'	#  0x6C -> PERCENT SIGN
-    u'_'	#  0x6D -> LOW LINE
-    u'>'	#  0x6E -> GREATER-THAN SIGN
-    u'?'	#  0x6F -> QUESTION MARK
-    u'\xf8'	#  0x70 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xc9'	#  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'	#  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'	#  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\u0131'	#  0x79 -> LATIN SMALL LETTER DOTLESS I
-    u':'	#  0x7A -> COLON
-    u'\xd6'	#  0x7B -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u015e'	#  0x7C -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u"'"	#  0x7D -> APOSTROPHE
-    u'='	#  0x7E -> EQUALS SIGN
-    u'\xdc'	#  0x7F -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd8'	#  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'a'	#  0x81 -> LATIN SMALL LETTER A
-    u'b'	#  0x82 -> LATIN SMALL LETTER B
-    u'c'	#  0x83 -> LATIN SMALL LETTER C
-    u'd'	#  0x84 -> LATIN SMALL LETTER D
-    u'e'	#  0x85 -> LATIN SMALL LETTER E
-    u'f'	#  0x86 -> LATIN SMALL LETTER F
-    u'g'	#  0x87 -> LATIN SMALL LETTER G
-    u'h'	#  0x88 -> LATIN SMALL LETTER H
-    u'i'	#  0x89 -> LATIN SMALL LETTER I
-    u'\xab'	#  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'}'	#  0x8C -> RIGHT CURLY BRACKET
-    u'`'	#  0x8D -> GRAVE ACCENT
-    u'\xa6'	#  0x8E -> BROKEN BAR
-    u'\xb1'	#  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'	#  0x90 -> DEGREE SIGN
-    u'j'	#  0x91 -> LATIN SMALL LETTER J
-    u'k'	#  0x92 -> LATIN SMALL LETTER K
-    u'l'	#  0x93 -> LATIN SMALL LETTER L
-    u'm'	#  0x94 -> LATIN SMALL LETTER M
-    u'n'	#  0x95 -> LATIN SMALL LETTER N
-    u'o'	#  0x96 -> LATIN SMALL LETTER O
-    u'p'	#  0x97 -> LATIN SMALL LETTER P
-    u'q'	#  0x98 -> LATIN SMALL LETTER Q
-    u'r'	#  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'	#  0x9A -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0x9B -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'	#  0x9C -> LATIN SMALL LIGATURE AE
-    u'\xb8'	#  0x9D -> CEDILLA
-    u'\xc6'	#  0x9E -> LATIN CAPITAL LIGATURE AE
-    u'\xa4'	#  0x9F -> CURRENCY SIGN
-    u'\xb5'	#  0xA0 -> MICRO SIGN
-    u'\xf6'	#  0xA1 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u's'	#  0xA2 -> LATIN SMALL LETTER S
-    u't'	#  0xA3 -> LATIN SMALL LETTER T
-    u'u'	#  0xA4 -> LATIN SMALL LETTER U
-    u'v'	#  0xA5 -> LATIN SMALL LETTER V
-    u'w'	#  0xA6 -> LATIN SMALL LETTER W
-    u'x'	#  0xA7 -> LATIN SMALL LETTER X
-    u'y'	#  0xA8 -> LATIN SMALL LETTER Y
-    u'z'	#  0xA9 -> LATIN SMALL LETTER Z
-    u'\xa1'	#  0xAA -> INVERTED EXCLAMATION MARK
-    u'\xbf'	#  0xAB -> INVERTED QUESTION MARK
-    u']'	#  0xAC -> RIGHT SQUARE BRACKET
-    u'$'	#  0xAD -> DOLLAR SIGN
-    u'@'	#  0xAE -> COMMERCIAL AT
-    u'\xae'	#  0xAF -> REGISTERED SIGN
-    u'\xa2'	#  0xB0 -> CENT SIGN
-    u'\xa3'	#  0xB1 -> POUND SIGN
-    u'\xa5'	#  0xB2 -> YEN SIGN
-    u'\xb7'	#  0xB3 -> MIDDLE DOT
-    u'\xa9'	#  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'	#  0xB5 -> SECTION SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xbc'	#  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'\xac'	#  0xBA -> NOT SIGN
-    u'|'	#  0xBB -> VERTICAL LINE
-    u'\xaf'	#  0xBC -> MACRON
-    u'\xa8'	#  0xBD -> DIAERESIS
-    u'\xb4'	#  0xBE -> ACUTE ACCENT
-    u'\xd7'	#  0xBF -> MULTIPLICATION SIGN
-    u'\xe7'	#  0xC0 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'A'	#  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'	#  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'	#  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'	#  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'	#  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'	#  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'	#  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'	#  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'	#  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'	#  0xCA -> SOFT HYPHEN
-    u'\xf4'	#  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'~'	#  0xCC -> TILDE
-    u'\xf2'	#  0xCD -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xCE -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'	#  0xCF -> LATIN SMALL LETTER O WITH TILDE
-    u'\u011f'	#  0xD0 -> LATIN SMALL LETTER G WITH BREVE
-    u'J'	#  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'	#  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'	#  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'	#  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'	#  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'	#  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'	#  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'	#  0xDA -> SUPERSCRIPT ONE
-    u'\xfb'	#  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\\'	#  0xDC -> REVERSE SOLIDUS
-    u'\xf9'	#  0xDD -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xDE -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'	#  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xfc'	#  0xE0 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf7'	#  0xE1 -> DIVISION SIGN
-    u'S'	#  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'	#  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'	#  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'	#  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'	#  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'	#  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'	#  0xEA -> SUPERSCRIPT TWO
-    u'\xd4'	#  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'#'	#  0xEC -> NUMBER SIGN
-    u'\xd2'	#  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'	#  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'	#  0xF0 -> DIGIT ZERO
-    u'1'	#  0xF1 -> DIGIT ONE
-    u'2'	#  0xF2 -> DIGIT TWO
-    u'3'	#  0xF3 -> DIGIT THREE
-    u'4'	#  0xF4 -> DIGIT FOUR
-    u'5'	#  0xF5 -> DIGIT FIVE
-    u'6'	#  0xF6 -> DIGIT SIX
-    u'7'	#  0xF7 -> DIGIT SEVEN
-    u'8'	#  0xF8 -> DIGIT EIGHT
-    u'9'	#  0xF9 -> DIGIT NINE
-    u'\xb3'	#  0xFA -> SUPERSCRIPT THREE
-    u'\xdb'	#  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'"'	#  0xFC -> QUOTATION MARK
-    u'\xd9'	#  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'	#  0xFF -> CONTROL
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x9c'     #  0x04 -> CONTROL
+    u'\t'       #  0x05 -> HORIZONTAL TABULATION
+    u'\x86'     #  0x06 -> CONTROL
+    u'\x7f'     #  0x07 -> DELETE
+    u'\x97'     #  0x08 -> CONTROL
+    u'\x8d'     #  0x09 -> CONTROL
+    u'\x8e'     #  0x0A -> CONTROL
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x9d'     #  0x14 -> CONTROL
+    u'\x85'     #  0x15 -> CONTROL
+    u'\x08'     #  0x16 -> BACKSPACE
+    u'\x87'     #  0x17 -> CONTROL
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x92'     #  0x1A -> CONTROL
+    u'\x8f'     #  0x1B -> CONTROL
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u'\x80'     #  0x20 -> CONTROL
+    u'\x81'     #  0x21 -> CONTROL
+    u'\x82'     #  0x22 -> CONTROL
+    u'\x83'     #  0x23 -> CONTROL
+    u'\x84'     #  0x24 -> CONTROL
+    u'\n'       #  0x25 -> LINE FEED
+    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
+    u'\x1b'     #  0x27 -> ESCAPE
+    u'\x88'     #  0x28 -> CONTROL
+    u'\x89'     #  0x29 -> CONTROL
+    u'\x8a'     #  0x2A -> CONTROL
+    u'\x8b'     #  0x2B -> CONTROL
+    u'\x8c'     #  0x2C -> CONTROL
+    u'\x05'     #  0x2D -> ENQUIRY
+    u'\x06'     #  0x2E -> ACKNOWLEDGE
+    u'\x07'     #  0x2F -> BELL
+    u'\x90'     #  0x30 -> CONTROL
+    u'\x91'     #  0x31 -> CONTROL
+    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
+    u'\x93'     #  0x33 -> CONTROL
+    u'\x94'     #  0x34 -> CONTROL
+    u'\x95'     #  0x35 -> CONTROL
+    u'\x96'     #  0x36 -> CONTROL
+    u'\x04'     #  0x37 -> END OF TRANSMISSION
+    u'\x98'     #  0x38 -> CONTROL
+    u'\x99'     #  0x39 -> CONTROL
+    u'\x9a'     #  0x3A -> CONTROL
+    u'\x9b'     #  0x3B -> CONTROL
+    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'     #  0x3E -> CONTROL
+    u'\x1a'     #  0x3F -> SUBSTITUTE
+    u' '        #  0x40 -> SPACE
+    u'\xa0'     #  0x41 -> NO-BREAK SPACE
+    u'\xe2'     #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe0'     #  0x44 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0x45 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe3'     #  0x46 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'     #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'{'        #  0x48 -> LEFT CURLY BRACKET
+    u'\xf1'     #  0x49 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xc7'     #  0x4A -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'.'        #  0x4B -> FULL STOP
+    u'<'        #  0x4C -> LESS-THAN SIGN
+    u'('        #  0x4D -> LEFT PARENTHESIS
+    u'+'        #  0x4E -> PLUS SIGN
+    u'!'        #  0x4F -> EXCLAMATION MARK
+    u'&'        #  0x50 -> AMPERSAND
+    u'\xe9'     #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x54 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xed'     #  0x55 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xec'     #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xdf'     #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
+    u'\u011e'   #  0x5A -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\u0130'   #  0x5B -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'*'        #  0x5C -> ASTERISK
+    u')'        #  0x5D -> RIGHT PARENTHESIS
+    u';'        #  0x5E -> SEMICOLON
+    u'^'        #  0x5F -> CIRCUMFLEX ACCENT
+    u'-'        #  0x60 -> HYPHEN-MINUS
+    u'/'        #  0x61 -> SOLIDUS
+    u'\xc2'     #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc4'     #  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc0'     #  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc3'     #  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc5'     #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'['        #  0x68 -> LEFT SQUARE BRACKET
+    u'\xd1'     #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\u015f'   #  0x6A -> LATIN SMALL LETTER S WITH CEDILLA
+    u','        #  0x6B -> COMMA
+    u'%'        #  0x6C -> PERCENT SIGN
+    u'_'        #  0x6D -> LOW LINE
+    u'>'        #  0x6E -> GREATER-THAN SIGN
+    u'?'        #  0x6F -> QUESTION MARK
+    u'\xf8'     #  0x70 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xc9'     #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'     #  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'     #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\u0131'   #  0x79 -> LATIN SMALL LETTER DOTLESS I
+    u':'        #  0x7A -> COLON
+    u'\xd6'     #  0x7B -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\u015e'   #  0x7C -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u"'"        #  0x7D -> APOSTROPHE
+    u'='        #  0x7E -> EQUALS SIGN
+    u'\xdc'     #  0x7F -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xd8'     #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'a'        #  0x81 -> LATIN SMALL LETTER A
+    u'b'        #  0x82 -> LATIN SMALL LETTER B
+    u'c'        #  0x83 -> LATIN SMALL LETTER C
+    u'd'        #  0x84 -> LATIN SMALL LETTER D
+    u'e'        #  0x85 -> LATIN SMALL LETTER E
+    u'f'        #  0x86 -> LATIN SMALL LETTER F
+    u'g'        #  0x87 -> LATIN SMALL LETTER G
+    u'h'        #  0x88 -> LATIN SMALL LETTER H
+    u'i'        #  0x89 -> LATIN SMALL LETTER I
+    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'}'        #  0x8C -> RIGHT CURLY BRACKET
+    u'`'        #  0x8D -> GRAVE ACCENT
+    u'\xa6'     #  0x8E -> BROKEN BAR
+    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
+    u'\xb0'     #  0x90 -> DEGREE SIGN
+    u'j'        #  0x91 -> LATIN SMALL LETTER J
+    u'k'        #  0x92 -> LATIN SMALL LETTER K
+    u'l'        #  0x93 -> LATIN SMALL LETTER L
+    u'm'        #  0x94 -> LATIN SMALL LETTER M
+    u'n'        #  0x95 -> LATIN SMALL LETTER N
+    u'o'        #  0x96 -> LATIN SMALL LETTER O
+    u'p'        #  0x97 -> LATIN SMALL LETTER P
+    u'q'        #  0x98 -> LATIN SMALL LETTER Q
+    u'r'        #  0x99 -> LATIN SMALL LETTER R
+    u'\xaa'     #  0x9A -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0x9B -> MASCULINE ORDINAL INDICATOR
+    u'\xe6'     #  0x9C -> LATIN SMALL LIGATURE AE
+    u'\xb8'     #  0x9D -> CEDILLA
+    u'\xc6'     #  0x9E -> LATIN CAPITAL LIGATURE AE
+    u'\xa4'     #  0x9F -> CURRENCY SIGN
+    u'\xb5'     #  0xA0 -> MICRO SIGN
+    u'\xf6'     #  0xA1 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u's'        #  0xA2 -> LATIN SMALL LETTER S
+    u't'        #  0xA3 -> LATIN SMALL LETTER T
+    u'u'        #  0xA4 -> LATIN SMALL LETTER U
+    u'v'        #  0xA5 -> LATIN SMALL LETTER V
+    u'w'        #  0xA6 -> LATIN SMALL LETTER W
+    u'x'        #  0xA7 -> LATIN SMALL LETTER X
+    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
+    u'\xa1'     #  0xAA -> INVERTED EXCLAMATION MARK
+    u'\xbf'     #  0xAB -> INVERTED QUESTION MARK
+    u']'        #  0xAC -> RIGHT SQUARE BRACKET
+    u'$'        #  0xAD -> DOLLAR SIGN
+    u'@'        #  0xAE -> COMMERCIAL AT
+    u'\xae'     #  0xAF -> REGISTERED SIGN
+    u'\xa2'     #  0xB0 -> CENT SIGN
+    u'\xa3'     #  0xB1 -> POUND SIGN
+    u'\xa5'     #  0xB2 -> YEN SIGN
+    u'\xb7'     #  0xB3 -> MIDDLE DOT
+    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'     #  0xB5 -> SECTION SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'\xac'     #  0xBA -> NOT SIGN
+    u'|'        #  0xBB -> VERTICAL LINE
+    u'\xaf'     #  0xBC -> MACRON
+    u'\xa8'     #  0xBD -> DIAERESIS
+    u'\xb4'     #  0xBE -> ACUTE ACCENT
+    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
+    u'\xe7'     #  0xC0 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'     #  0xCA -> SOFT HYPHEN
+    u'\xf4'     #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'~'        #  0xCC -> TILDE
+    u'\xf2'     #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf5'     #  0xCF -> LATIN SMALL LETTER O WITH TILDE
+    u'\u011f'   #  0xD0 -> LATIN SMALL LETTER G WITH BREVE
+    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
+    u'\xfb'     #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\\'       #  0xDC -> REVERSE SOLIDUS
+    u'\xf9'     #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xff'     #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\xfc'     #  0xE0 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xf7'     #  0xE1 -> DIVISION SIGN
+    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
+    u'\xd4'     #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'#'        #  0xEC -> NUMBER SIGN
+    u'\xd2'     #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd5'     #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
+    u'0'        #  0xF0 -> DIGIT ZERO
+    u'1'        #  0xF1 -> DIGIT ONE
+    u'2'        #  0xF2 -> DIGIT TWO
+    u'3'        #  0xF3 -> DIGIT THREE
+    u'4'        #  0xF4 -> DIGIT FOUR
+    u'5'        #  0xF5 -> DIGIT FIVE
+    u'6'        #  0xF6 -> DIGIT SIX
+    u'7'        #  0xF7 -> DIGIT SEVEN
+    u'8'        #  0xF8 -> DIGIT EIGHT
+    u'9'        #  0xF9 -> DIGIT NINE
+    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
+    u'\xdb'     #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'"'        #  0xFC -> QUOTATION MARK
+    u'\xd9'     #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\x9f'     #  0xFF -> CONTROL
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x37,	#  END OF TRANSMISSION
-    0x0005: 0x2D,	#  ENQUIRY
-    0x0006: 0x2E,	#  ACKNOWLEDGE
-    0x0007: 0x2F,	#  BELL
-    0x0008: 0x16,	#  BACKSPACE
-    0x0009: 0x05,	#  HORIZONTAL TABULATION
-    0x000A: 0x25,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x3C,	#  DEVICE CONTROL FOUR
-    0x0015: 0x3D,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x32,	#  SYNCHRONOUS IDLE
-    0x0017: 0x26,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x3F,	#  SUBSTITUTE
-    0x001B: 0x27,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x40,	#  SPACE
-    0x0021: 0x4F,	#  EXCLAMATION MARK
-    0x0022: 0xFC,	#  QUOTATION MARK
-    0x0023: 0xEC,	#  NUMBER SIGN
-    0x0024: 0xAD,	#  DOLLAR SIGN
-    0x0025: 0x6C,	#  PERCENT SIGN
-    0x0026: 0x50,	#  AMPERSAND
-    0x0027: 0x7D,	#  APOSTROPHE
-    0x0028: 0x4D,	#  LEFT PARENTHESIS
-    0x0029: 0x5D,	#  RIGHT PARENTHESIS
-    0x002A: 0x5C,	#  ASTERISK
-    0x002B: 0x4E,	#  PLUS SIGN
-    0x002C: 0x6B,	#  COMMA
-    0x002D: 0x60,	#  HYPHEN-MINUS
-    0x002E: 0x4B,	#  FULL STOP
-    0x002F: 0x61,	#  SOLIDUS
-    0x0030: 0xF0,	#  DIGIT ZERO
-    0x0031: 0xF1,	#  DIGIT ONE
-    0x0032: 0xF2,	#  DIGIT TWO
-    0x0033: 0xF3,	#  DIGIT THREE
-    0x0034: 0xF4,	#  DIGIT FOUR
-    0x0035: 0xF5,	#  DIGIT FIVE
-    0x0036: 0xF6,	#  DIGIT SIX
-    0x0037: 0xF7,	#  DIGIT SEVEN
-    0x0038: 0xF8,	#  DIGIT EIGHT
-    0x0039: 0xF9,	#  DIGIT NINE
-    0x003A: 0x7A,	#  COLON
-    0x003B: 0x5E,	#  SEMICOLON
-    0x003C: 0x4C,	#  LESS-THAN SIGN
-    0x003D: 0x7E,	#  EQUALS SIGN
-    0x003E: 0x6E,	#  GREATER-THAN SIGN
-    0x003F: 0x6F,	#  QUESTION MARK
-    0x0040: 0xAE,	#  COMMERCIAL AT
-    0x0041: 0xC1,	#  LATIN CAPITAL LETTER A
-    0x0042: 0xC2,	#  LATIN CAPITAL LETTER B
-    0x0043: 0xC3,	#  LATIN CAPITAL LETTER C
-    0x0044: 0xC4,	#  LATIN CAPITAL LETTER D
-    0x0045: 0xC5,	#  LATIN CAPITAL LETTER E
-    0x0046: 0xC6,	#  LATIN CAPITAL LETTER F
-    0x0047: 0xC7,	#  LATIN CAPITAL LETTER G
-    0x0048: 0xC8,	#  LATIN CAPITAL LETTER H
-    0x0049: 0xC9,	#  LATIN CAPITAL LETTER I
-    0x004A: 0xD1,	#  LATIN CAPITAL LETTER J
-    0x004B: 0xD2,	#  LATIN CAPITAL LETTER K
-    0x004C: 0xD3,	#  LATIN CAPITAL LETTER L
-    0x004D: 0xD4,	#  LATIN CAPITAL LETTER M
-    0x004E: 0xD5,	#  LATIN CAPITAL LETTER N
-    0x004F: 0xD6,	#  LATIN CAPITAL LETTER O
-    0x0050: 0xD7,	#  LATIN CAPITAL LETTER P
-    0x0051: 0xD8,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0xD9,	#  LATIN CAPITAL LETTER R
-    0x0053: 0xE2,	#  LATIN CAPITAL LETTER S
-    0x0054: 0xE3,	#  LATIN CAPITAL LETTER T
-    0x0055: 0xE4,	#  LATIN CAPITAL LETTER U
-    0x0056: 0xE5,	#  LATIN CAPITAL LETTER V
-    0x0057: 0xE6,	#  LATIN CAPITAL LETTER W
-    0x0058: 0xE7,	#  LATIN CAPITAL LETTER X
-    0x0059: 0xE8,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0xE9,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x68,	#  LEFT SQUARE BRACKET
-    0x005C: 0xDC,	#  REVERSE SOLIDUS
-    0x005D: 0xAC,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5F,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x6D,	#  LOW LINE
-    0x0060: 0x8D,	#  GRAVE ACCENT
-    0x0061: 0x81,	#  LATIN SMALL LETTER A
-    0x0062: 0x82,	#  LATIN SMALL LETTER B
-    0x0063: 0x83,	#  LATIN SMALL LETTER C
-    0x0064: 0x84,	#  LATIN SMALL LETTER D
-    0x0065: 0x85,	#  LATIN SMALL LETTER E
-    0x0066: 0x86,	#  LATIN SMALL LETTER F
-    0x0067: 0x87,	#  LATIN SMALL LETTER G
-    0x0068: 0x88,	#  LATIN SMALL LETTER H
-    0x0069: 0x89,	#  LATIN SMALL LETTER I
-    0x006A: 0x91,	#  LATIN SMALL LETTER J
-    0x006B: 0x92,	#  LATIN SMALL LETTER K
-    0x006C: 0x93,	#  LATIN SMALL LETTER L
-    0x006D: 0x94,	#  LATIN SMALL LETTER M
-    0x006E: 0x95,	#  LATIN SMALL LETTER N
-    0x006F: 0x96,	#  LATIN SMALL LETTER O
-    0x0070: 0x97,	#  LATIN SMALL LETTER P
-    0x0071: 0x98,	#  LATIN SMALL LETTER Q
-    0x0072: 0x99,	#  LATIN SMALL LETTER R
-    0x0073: 0xA2,	#  LATIN SMALL LETTER S
-    0x0074: 0xA3,	#  LATIN SMALL LETTER T
-    0x0075: 0xA4,	#  LATIN SMALL LETTER U
-    0x0076: 0xA5,	#  LATIN SMALL LETTER V
-    0x0077: 0xA6,	#  LATIN SMALL LETTER W
-    0x0078: 0xA7,	#  LATIN SMALL LETTER X
-    0x0079: 0xA8,	#  LATIN SMALL LETTER Y
-    0x007A: 0xA9,	#  LATIN SMALL LETTER Z
-    0x007B: 0x48,	#  LEFT CURLY BRACKET
-    0x007C: 0xBB,	#  VERTICAL LINE
-    0x007D: 0x8C,	#  RIGHT CURLY BRACKET
-    0x007E: 0xCC,	#  TILDE
-    0x007F: 0x07,	#  DELETE
-    0x0080: 0x20,	#  CONTROL
-    0x0081: 0x21,	#  CONTROL
-    0x0082: 0x22,	#  CONTROL
-    0x0083: 0x23,	#  CONTROL
-    0x0084: 0x24,	#  CONTROL
-    0x0085: 0x15,	#  CONTROL
-    0x0086: 0x06,	#  CONTROL
-    0x0087: 0x17,	#  CONTROL
-    0x0088: 0x28,	#  CONTROL
-    0x0089: 0x29,	#  CONTROL
-    0x008A: 0x2A,	#  CONTROL
-    0x008B: 0x2B,	#  CONTROL
-    0x008C: 0x2C,	#  CONTROL
-    0x008D: 0x09,	#  CONTROL
-    0x008E: 0x0A,	#  CONTROL
-    0x008F: 0x1B,	#  CONTROL
-    0x0090: 0x30,	#  CONTROL
-    0x0091: 0x31,	#  CONTROL
-    0x0092: 0x1A,	#  CONTROL
-    0x0093: 0x33,	#  CONTROL
-    0x0094: 0x34,	#  CONTROL
-    0x0095: 0x35,	#  CONTROL
-    0x0096: 0x36,	#  CONTROL
-    0x0097: 0x08,	#  CONTROL
-    0x0098: 0x38,	#  CONTROL
-    0x0099: 0x39,	#  CONTROL
-    0x009A: 0x3A,	#  CONTROL
-    0x009B: 0x3B,	#  CONTROL
-    0x009C: 0x04,	#  CONTROL
-    0x009D: 0x14,	#  CONTROL
-    0x009E: 0x3E,	#  CONTROL
-    0x009F: 0xFF,	#  CONTROL
-    0x00A0: 0x41,	#  NO-BREAK SPACE
-    0x00A1: 0xAA,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xB0,	#  CENT SIGN
-    0x00A3: 0xB1,	#  POUND SIGN
-    0x00A4: 0x9F,	#  CURRENCY SIGN
-    0x00A5: 0xB2,	#  YEN SIGN
-    0x00A6: 0x8E,	#  BROKEN BAR
-    0x00A7: 0xB5,	#  SECTION SIGN
-    0x00A8: 0xBD,	#  DIAERESIS
-    0x00A9: 0xB4,	#  COPYRIGHT SIGN
-    0x00AA: 0x9A,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0x8A,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xBA,	#  NOT SIGN
-    0x00AD: 0xCA,	#  SOFT HYPHEN
-    0x00AE: 0xAF,	#  REGISTERED SIGN
-    0x00AF: 0xBC,	#  MACRON
-    0x00B0: 0x90,	#  DEGREE SIGN
-    0x00B1: 0x8F,	#  PLUS-MINUS SIGN
-    0x00B2: 0xEA,	#  SUPERSCRIPT TWO
-    0x00B3: 0xFA,	#  SUPERSCRIPT THREE
-    0x00B4: 0xBE,	#  ACUTE ACCENT
-    0x00B5: 0xA0,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB3,	#  MIDDLE DOT
-    0x00B8: 0x9D,	#  CEDILLA
-    0x00B9: 0xDA,	#  SUPERSCRIPT ONE
-    0x00BA: 0x9B,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0x8B,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xB7,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xB8,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xB9,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xAB,	#  INVERTED QUESTION MARK
-    0x00C0: 0x64,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0x65,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0x62,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0x66,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0x63,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0x67,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0x9E,	#  LATIN CAPITAL LIGATURE AE
-    0x00C7: 0x4A,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0x74,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0x71,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0x72,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0x73,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0x78,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0x75,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0x76,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0x77,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0x69,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xED,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEB,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xEF,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0x7B,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xBF,	#  MULTIPLICATION SIGN
-    0x00D8: 0x80,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xFD,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xFE,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xFB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0x7F,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0x59,	#  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00E0: 0x44,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x45,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x42,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0x46,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0x43,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0x47,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0x9C,	#  LATIN SMALL LIGATURE AE
-    0x00E7: 0xC0,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x54,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x51,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x52,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x53,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0x58,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0x55,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x56,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x57,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0x49,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xCD,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xCE,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xCB,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xCF,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xA1,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xE1,	#  DIVISION SIGN
-    0x00F8: 0x70,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xDD,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xDE,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xDB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xE0,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FF: 0xDF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011E: 0x5A,	#  LATIN CAPITAL LETTER G WITH BREVE
-    0x011F: 0xD0,	#  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0x5B,	#  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0x79,	#  LATIN SMALL LETTER DOTLESS I
-    0x015E: 0x7C,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015F: 0x6A,	#  LATIN SMALL LETTER S WITH CEDILLA
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x37,       #  END OF TRANSMISSION
+    0x0005: 0x2D,       #  ENQUIRY
+    0x0006: 0x2E,       #  ACKNOWLEDGE
+    0x0007: 0x2F,       #  BELL
+    0x0008: 0x16,       #  BACKSPACE
+    0x0009: 0x05,       #  HORIZONTAL TABULATION
+    0x000A: 0x25,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x3C,       #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x32,       #  SYNCHRONOUS IDLE
+    0x0017: 0x26,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x3F,       #  SUBSTITUTE
+    0x001B: 0x27,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x40,       #  SPACE
+    0x0021: 0x4F,       #  EXCLAMATION MARK
+    0x0022: 0xFC,       #  QUOTATION MARK
+    0x0023: 0xEC,       #  NUMBER SIGN
+    0x0024: 0xAD,       #  DOLLAR SIGN
+    0x0025: 0x6C,       #  PERCENT SIGN
+    0x0026: 0x50,       #  AMPERSAND
+    0x0027: 0x7D,       #  APOSTROPHE
+    0x0028: 0x4D,       #  LEFT PARENTHESIS
+    0x0029: 0x5D,       #  RIGHT PARENTHESIS
+    0x002A: 0x5C,       #  ASTERISK
+    0x002B: 0x4E,       #  PLUS SIGN
+    0x002C: 0x6B,       #  COMMA
+    0x002D: 0x60,       #  HYPHEN-MINUS
+    0x002E: 0x4B,       #  FULL STOP
+    0x002F: 0x61,       #  SOLIDUS
+    0x0030: 0xF0,       #  DIGIT ZERO
+    0x0031: 0xF1,       #  DIGIT ONE
+    0x0032: 0xF2,       #  DIGIT TWO
+    0x0033: 0xF3,       #  DIGIT THREE
+    0x0034: 0xF4,       #  DIGIT FOUR
+    0x0035: 0xF5,       #  DIGIT FIVE
+    0x0036: 0xF6,       #  DIGIT SIX
+    0x0037: 0xF7,       #  DIGIT SEVEN
+    0x0038: 0xF8,       #  DIGIT EIGHT
+    0x0039: 0xF9,       #  DIGIT NINE
+    0x003A: 0x7A,       #  COLON
+    0x003B: 0x5E,       #  SEMICOLON
+    0x003C: 0x4C,       #  LESS-THAN SIGN
+    0x003D: 0x7E,       #  EQUALS SIGN
+    0x003E: 0x6E,       #  GREATER-THAN SIGN
+    0x003F: 0x6F,       #  QUESTION MARK
+    0x0040: 0xAE,       #  COMMERCIAL AT
+    0x0041: 0xC1,       #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,       #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,       #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,       #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,       #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,       #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,       #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,       #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,       #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,       #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,       #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,       #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,       #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,       #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,       #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,       #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,       #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,       #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,       #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,       #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,       #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,       #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,       #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x68,       #  LEFT SQUARE BRACKET
+    0x005C: 0xDC,       #  REVERSE SOLIDUS
+    0x005D: 0xAC,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5F,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,       #  LOW LINE
+    0x0060: 0x8D,       #  GRAVE ACCENT
+    0x0061: 0x81,       #  LATIN SMALL LETTER A
+    0x0062: 0x82,       #  LATIN SMALL LETTER B
+    0x0063: 0x83,       #  LATIN SMALL LETTER C
+    0x0064: 0x84,       #  LATIN SMALL LETTER D
+    0x0065: 0x85,       #  LATIN SMALL LETTER E
+    0x0066: 0x86,       #  LATIN SMALL LETTER F
+    0x0067: 0x87,       #  LATIN SMALL LETTER G
+    0x0068: 0x88,       #  LATIN SMALL LETTER H
+    0x0069: 0x89,       #  LATIN SMALL LETTER I
+    0x006A: 0x91,       #  LATIN SMALL LETTER J
+    0x006B: 0x92,       #  LATIN SMALL LETTER K
+    0x006C: 0x93,       #  LATIN SMALL LETTER L
+    0x006D: 0x94,       #  LATIN SMALL LETTER M
+    0x006E: 0x95,       #  LATIN SMALL LETTER N
+    0x006F: 0x96,       #  LATIN SMALL LETTER O
+    0x0070: 0x97,       #  LATIN SMALL LETTER P
+    0x0071: 0x98,       #  LATIN SMALL LETTER Q
+    0x0072: 0x99,       #  LATIN SMALL LETTER R
+    0x0073: 0xA2,       #  LATIN SMALL LETTER S
+    0x0074: 0xA3,       #  LATIN SMALL LETTER T
+    0x0075: 0xA4,       #  LATIN SMALL LETTER U
+    0x0076: 0xA5,       #  LATIN SMALL LETTER V
+    0x0077: 0xA6,       #  LATIN SMALL LETTER W
+    0x0078: 0xA7,       #  LATIN SMALL LETTER X
+    0x0079: 0xA8,       #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,       #  LATIN SMALL LETTER Z
+    0x007B: 0x48,       #  LEFT CURLY BRACKET
+    0x007C: 0xBB,       #  VERTICAL LINE
+    0x007D: 0x8C,       #  RIGHT CURLY BRACKET
+    0x007E: 0xCC,       #  TILDE
+    0x007F: 0x07,       #  DELETE
+    0x0080: 0x20,       #  CONTROL
+    0x0081: 0x21,       #  CONTROL
+    0x0082: 0x22,       #  CONTROL
+    0x0083: 0x23,       #  CONTROL
+    0x0084: 0x24,       #  CONTROL
+    0x0085: 0x15,       #  CONTROL
+    0x0086: 0x06,       #  CONTROL
+    0x0087: 0x17,       #  CONTROL
+    0x0088: 0x28,       #  CONTROL
+    0x0089: 0x29,       #  CONTROL
+    0x008A: 0x2A,       #  CONTROL
+    0x008B: 0x2B,       #  CONTROL
+    0x008C: 0x2C,       #  CONTROL
+    0x008D: 0x09,       #  CONTROL
+    0x008E: 0x0A,       #  CONTROL
+    0x008F: 0x1B,       #  CONTROL
+    0x0090: 0x30,       #  CONTROL
+    0x0091: 0x31,       #  CONTROL
+    0x0092: 0x1A,       #  CONTROL
+    0x0093: 0x33,       #  CONTROL
+    0x0094: 0x34,       #  CONTROL
+    0x0095: 0x35,       #  CONTROL
+    0x0096: 0x36,       #  CONTROL
+    0x0097: 0x08,       #  CONTROL
+    0x0098: 0x38,       #  CONTROL
+    0x0099: 0x39,       #  CONTROL
+    0x009A: 0x3A,       #  CONTROL
+    0x009B: 0x3B,       #  CONTROL
+    0x009C: 0x04,       #  CONTROL
+    0x009D: 0x14,       #  CONTROL
+    0x009E: 0x3E,       #  CONTROL
+    0x009F: 0xFF,       #  CONTROL
+    0x00A0: 0x41,       #  NO-BREAK SPACE
+    0x00A1: 0xAA,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xB0,       #  CENT SIGN
+    0x00A3: 0xB1,       #  POUND SIGN
+    0x00A4: 0x9F,       #  CURRENCY SIGN
+    0x00A5: 0xB2,       #  YEN SIGN
+    0x00A6: 0x8E,       #  BROKEN BAR
+    0x00A7: 0xB5,       #  SECTION SIGN
+    0x00A8: 0xBD,       #  DIAERESIS
+    0x00A9: 0xB4,       #  COPYRIGHT SIGN
+    0x00AA: 0x9A,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0x8A,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xBA,       #  NOT SIGN
+    0x00AD: 0xCA,       #  SOFT HYPHEN
+    0x00AE: 0xAF,       #  REGISTERED SIGN
+    0x00AF: 0xBC,       #  MACRON
+    0x00B0: 0x90,       #  DEGREE SIGN
+    0x00B1: 0x8F,       #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,       #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,       #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,       #  ACUTE ACCENT
+    0x00B5: 0xA0,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB3,       #  MIDDLE DOT
+    0x00B8: 0x9D,       #  CEDILLA
+    0x00B9: 0xDA,       #  SUPERSCRIPT ONE
+    0x00BA: 0x9B,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0x8B,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xAB,       #  INVERTED QUESTION MARK
+    0x00C0: 0x64,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0x65,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0x62,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0x66,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x63,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x67,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0x9E,       #  LATIN CAPITAL LIGATURE AE
+    0x00C7: 0x4A,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0x74,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x71,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0x72,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0x73,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0x78,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0x75,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0x76,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0x77,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x69,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xED,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEB,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xEF,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x7B,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xBF,       #  MULTIPLICATION SIGN
+    0x00D8: 0x80,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xFD,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xFE,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xFB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x7F,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0x59,       #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00E0: 0x44,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x45,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x42,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x46,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x43,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x47,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0x9C,       #  LATIN SMALL LIGATURE AE
+    0x00E7: 0xC0,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x54,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x51,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x52,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x53,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x58,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x55,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x56,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x57,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x49,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xCD,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xCE,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xCB,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xCF,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xA1,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xE1,       #  DIVISION SIGN
+    0x00F8: 0x70,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xDD,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xDE,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xDB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xE0,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xDF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x011E: 0x5A,       #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xD0,       #  LATIN SMALL LETTER G WITH BREVE
+    0x0130: 0x5B,       #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0x79,       #  LATIN SMALL LETTER DOTLESS I
+    0x015E: 0x7C,       #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0x6A,       #  LATIN SMALL LETTER S WITH CEDILLA
 }
-

Modified: python/trunk/Lib/encodings/cp1140.py
==============================================================================
--- python/trunk/Lib/encodings/cp1140.py	(original)
+++ python/trunk/Lib/encodings/cp1140.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x9c'	#  0x04 -> CONTROL
-    u'\t'	#  0x05 -> HORIZONTAL TABULATION
-    u'\x86'	#  0x06 -> CONTROL
-    u'\x7f'	#  0x07 -> DELETE
-    u'\x97'	#  0x08 -> CONTROL
-    u'\x8d'	#  0x09 -> CONTROL
-    u'\x8e'	#  0x0A -> CONTROL
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'	#  0x14 -> CONTROL
-    u'\x85'	#  0x15 -> CONTROL
-    u'\x08'	#  0x16 -> BACKSPACE
-    u'\x87'	#  0x17 -> CONTROL
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x92'	#  0x1A -> CONTROL
-    u'\x8f'	#  0x1B -> CONTROL
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u'\x80'	#  0x20 -> CONTROL
-    u'\x81'	#  0x21 -> CONTROL
-    u'\x82'	#  0x22 -> CONTROL
-    u'\x83'	#  0x23 -> CONTROL
-    u'\x84'	#  0x24 -> CONTROL
-    u'\n'	#  0x25 -> LINE FEED
-    u'\x17'	#  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'	#  0x27 -> ESCAPE
-    u'\x88'	#  0x28 -> CONTROL
-    u'\x89'	#  0x29 -> CONTROL
-    u'\x8a'	#  0x2A -> CONTROL
-    u'\x8b'	#  0x2B -> CONTROL
-    u'\x8c'	#  0x2C -> CONTROL
-    u'\x05'	#  0x2D -> ENQUIRY
-    u'\x06'	#  0x2E -> ACKNOWLEDGE
-    u'\x07'	#  0x2F -> BELL
-    u'\x90'	#  0x30 -> CONTROL
-    u'\x91'	#  0x31 -> CONTROL
-    u'\x16'	#  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'	#  0x33 -> CONTROL
-    u'\x94'	#  0x34 -> CONTROL
-    u'\x95'	#  0x35 -> CONTROL
-    u'\x96'	#  0x36 -> CONTROL
-    u'\x04'	#  0x37 -> END OF TRANSMISSION
-    u'\x98'	#  0x38 -> CONTROL
-    u'\x99'	#  0x39 -> CONTROL
-    u'\x9a'	#  0x3A -> CONTROL
-    u'\x9b'	#  0x3B -> CONTROL
-    u'\x14'	#  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'	#  0x3E -> CONTROL
-    u'\x1a'	#  0x3F -> SUBSTITUTE
-    u' '	#  0x40 -> SPACE
-    u'\xa0'	#  0x41 -> NO-BREAK SPACE
-    u'\xe2'	#  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'	#  0x44 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0x45 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe3'	#  0x46 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'	#  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xf1'	#  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xa2'	#  0x4A -> CENT SIGN
-    u'.'	#  0x4B -> FULL STOP
-    u'<'	#  0x4C -> LESS-THAN SIGN
-    u'('	#  0x4D -> LEFT PARENTHESIS
-    u'+'	#  0x4E -> PLUS SIGN
-    u'|'	#  0x4F -> VERTICAL LINE
-    u'&'	#  0x50 -> AMPERSAND
-    u'\xe9'	#  0x51 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x54 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xed'	#  0x55 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xec'	#  0x58 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xdf'	#  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'!'	#  0x5A -> EXCLAMATION MARK
-    u'$'	#  0x5B -> DOLLAR SIGN
-    u'*'	#  0x5C -> ASTERISK
-    u')'	#  0x5D -> RIGHT PARENTHESIS
-    u';'	#  0x5E -> SEMICOLON
-    u'\xac'	#  0x5F -> NOT SIGN
-    u'-'	#  0x60 -> HYPHEN-MINUS
-    u'/'	#  0x61 -> SOLIDUS
-    u'\xc2'	#  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc4'	#  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc0'	#  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc3'	#  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc5'	#  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'	#  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xd1'	#  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xa6'	#  0x6A -> BROKEN BAR
-    u','	#  0x6B -> COMMA
-    u'%'	#  0x6C -> PERCENT SIGN
-    u'_'	#  0x6D -> LOW LINE
-    u'>'	#  0x6E -> GREATER-THAN SIGN
-    u'?'	#  0x6F -> QUESTION MARK
-    u'\xf8'	#  0x70 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xc9'	#  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'	#  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'	#  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'`'	#  0x79 -> GRAVE ACCENT
-    u':'	#  0x7A -> COLON
-    u'#'	#  0x7B -> NUMBER SIGN
-    u'@'	#  0x7C -> COMMERCIAL AT
-    u"'"	#  0x7D -> APOSTROPHE
-    u'='	#  0x7E -> EQUALS SIGN
-    u'"'	#  0x7F -> QUOTATION MARK
-    u'\xd8'	#  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'a'	#  0x81 -> LATIN SMALL LETTER A
-    u'b'	#  0x82 -> LATIN SMALL LETTER B
-    u'c'	#  0x83 -> LATIN SMALL LETTER C
-    u'd'	#  0x84 -> LATIN SMALL LETTER D
-    u'e'	#  0x85 -> LATIN SMALL LETTER E
-    u'f'	#  0x86 -> LATIN SMALL LETTER F
-    u'g'	#  0x87 -> LATIN SMALL LETTER G
-    u'h'	#  0x88 -> LATIN SMALL LETTER H
-    u'i'	#  0x89 -> LATIN SMALL LETTER I
-    u'\xab'	#  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xf0'	#  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
-    u'\xfd'	#  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'	#  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
-    u'\xb1'	#  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'	#  0x90 -> DEGREE SIGN
-    u'j'	#  0x91 -> LATIN SMALL LETTER J
-    u'k'	#  0x92 -> LATIN SMALL LETTER K
-    u'l'	#  0x93 -> LATIN SMALL LETTER L
-    u'm'	#  0x94 -> LATIN SMALL LETTER M
-    u'n'	#  0x95 -> LATIN SMALL LETTER N
-    u'o'	#  0x96 -> LATIN SMALL LETTER O
-    u'p'	#  0x97 -> LATIN SMALL LETTER P
-    u'q'	#  0x98 -> LATIN SMALL LETTER Q
-    u'r'	#  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'	#  0x9A -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0x9B -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'	#  0x9C -> LATIN SMALL LIGATURE AE
-    u'\xb8'	#  0x9D -> CEDILLA
-    u'\xc6'	#  0x9E -> LATIN CAPITAL LIGATURE AE
-    u'\u20ac'	#  0x9F -> EURO SIGN
-    u'\xb5'	#  0xA0 -> MICRO SIGN
-    u'~'	#  0xA1 -> TILDE
-    u's'	#  0xA2 -> LATIN SMALL LETTER S
-    u't'	#  0xA3 -> LATIN SMALL LETTER T
-    u'u'	#  0xA4 -> LATIN SMALL LETTER U
-    u'v'	#  0xA5 -> LATIN SMALL LETTER V
-    u'w'	#  0xA6 -> LATIN SMALL LETTER W
-    u'x'	#  0xA7 -> LATIN SMALL LETTER X
-    u'y'	#  0xA8 -> LATIN SMALL LETTER Y
-    u'z'	#  0xA9 -> LATIN SMALL LETTER Z
-    u'\xa1'	#  0xAA -> INVERTED EXCLAMATION MARK
-    u'\xbf'	#  0xAB -> INVERTED QUESTION MARK
-    u'\xd0'	#  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
-    u'\xdd'	#  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'	#  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
-    u'\xae'	#  0xAF -> REGISTERED SIGN
-    u'^'	#  0xB0 -> CIRCUMFLEX ACCENT
-    u'\xa3'	#  0xB1 -> POUND SIGN
-    u'\xa5'	#  0xB2 -> YEN SIGN
-    u'\xb7'	#  0xB3 -> MIDDLE DOT
-    u'\xa9'	#  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'	#  0xB5 -> SECTION SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xbc'	#  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'['	#  0xBA -> LEFT SQUARE BRACKET
-    u']'	#  0xBB -> RIGHT SQUARE BRACKET
-    u'\xaf'	#  0xBC -> MACRON
-    u'\xa8'	#  0xBD -> DIAERESIS
-    u'\xb4'	#  0xBE -> ACUTE ACCENT
-    u'\xd7'	#  0xBF -> MULTIPLICATION SIGN
-    u'{'	#  0xC0 -> LEFT CURLY BRACKET
-    u'A'	#  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'	#  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'	#  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'	#  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'	#  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'	#  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'	#  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'	#  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'	#  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'	#  0xCA -> SOFT HYPHEN
-    u'\xf4'	#  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'	#  0xCD -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xCE -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'	#  0xCF -> LATIN SMALL LETTER O WITH TILDE
-    u'}'	#  0xD0 -> RIGHT CURLY BRACKET
-    u'J'	#  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'	#  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'	#  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'	#  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'	#  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'	#  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'	#  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'	#  0xDA -> SUPERSCRIPT ONE
-    u'\xfb'	#  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf9'	#  0xDD -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xDE -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'	#  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\\'	#  0xE0 -> REVERSE SOLIDUS
-    u'\xf7'	#  0xE1 -> DIVISION SIGN
-    u'S'	#  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'	#  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'	#  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'	#  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'	#  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'	#  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'	#  0xEA -> SUPERSCRIPT TWO
-    u'\xd4'	#  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd6'	#  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd2'	#  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'	#  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'	#  0xF0 -> DIGIT ZERO
-    u'1'	#  0xF1 -> DIGIT ONE
-    u'2'	#  0xF2 -> DIGIT TWO
-    u'3'	#  0xF3 -> DIGIT THREE
-    u'4'	#  0xF4 -> DIGIT FOUR
-    u'5'	#  0xF5 -> DIGIT FIVE
-    u'6'	#  0xF6 -> DIGIT SIX
-    u'7'	#  0xF7 -> DIGIT SEVEN
-    u'8'	#  0xF8 -> DIGIT EIGHT
-    u'9'	#  0xF9 -> DIGIT NINE
-    u'\xb3'	#  0xFA -> SUPERSCRIPT THREE
-    u'\xdb'	#  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd9'	#  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'	#  0xFF -> CONTROL
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x9c'     #  0x04 -> CONTROL
+    u'\t'       #  0x05 -> HORIZONTAL TABULATION
+    u'\x86'     #  0x06 -> CONTROL
+    u'\x7f'     #  0x07 -> DELETE
+    u'\x97'     #  0x08 -> CONTROL
+    u'\x8d'     #  0x09 -> CONTROL
+    u'\x8e'     #  0x0A -> CONTROL
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x9d'     #  0x14 -> CONTROL
+    u'\x85'     #  0x15 -> CONTROL
+    u'\x08'     #  0x16 -> BACKSPACE
+    u'\x87'     #  0x17 -> CONTROL
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x92'     #  0x1A -> CONTROL
+    u'\x8f'     #  0x1B -> CONTROL
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u'\x80'     #  0x20 -> CONTROL
+    u'\x81'     #  0x21 -> CONTROL
+    u'\x82'     #  0x22 -> CONTROL
+    u'\x83'     #  0x23 -> CONTROL
+    u'\x84'     #  0x24 -> CONTROL
+    u'\n'       #  0x25 -> LINE FEED
+    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
+    u'\x1b'     #  0x27 -> ESCAPE
+    u'\x88'     #  0x28 -> CONTROL
+    u'\x89'     #  0x29 -> CONTROL
+    u'\x8a'     #  0x2A -> CONTROL
+    u'\x8b'     #  0x2B -> CONTROL
+    u'\x8c'     #  0x2C -> CONTROL
+    u'\x05'     #  0x2D -> ENQUIRY
+    u'\x06'     #  0x2E -> ACKNOWLEDGE
+    u'\x07'     #  0x2F -> BELL
+    u'\x90'     #  0x30 -> CONTROL
+    u'\x91'     #  0x31 -> CONTROL
+    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
+    u'\x93'     #  0x33 -> CONTROL
+    u'\x94'     #  0x34 -> CONTROL
+    u'\x95'     #  0x35 -> CONTROL
+    u'\x96'     #  0x36 -> CONTROL
+    u'\x04'     #  0x37 -> END OF TRANSMISSION
+    u'\x98'     #  0x38 -> CONTROL
+    u'\x99'     #  0x39 -> CONTROL
+    u'\x9a'     #  0x3A -> CONTROL
+    u'\x9b'     #  0x3B -> CONTROL
+    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'     #  0x3E -> CONTROL
+    u'\x1a'     #  0x3F -> SUBSTITUTE
+    u' '        #  0x40 -> SPACE
+    u'\xa0'     #  0x41 -> NO-BREAK SPACE
+    u'\xe2'     #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe0'     #  0x44 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0x45 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe3'     #  0x46 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'     #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xf1'     #  0x49 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xa2'     #  0x4A -> CENT SIGN
+    u'.'        #  0x4B -> FULL STOP
+    u'<'        #  0x4C -> LESS-THAN SIGN
+    u'('        #  0x4D -> LEFT PARENTHESIS
+    u'+'        #  0x4E -> PLUS SIGN
+    u'|'        #  0x4F -> VERTICAL LINE
+    u'&'        #  0x50 -> AMPERSAND
+    u'\xe9'     #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x54 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xed'     #  0x55 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xec'     #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xdf'     #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
+    u'!'        #  0x5A -> EXCLAMATION MARK
+    u'$'        #  0x5B -> DOLLAR SIGN
+    u'*'        #  0x5C -> ASTERISK
+    u')'        #  0x5D -> RIGHT PARENTHESIS
+    u';'        #  0x5E -> SEMICOLON
+    u'\xac'     #  0x5F -> NOT SIGN
+    u'-'        #  0x60 -> HYPHEN-MINUS
+    u'/'        #  0x61 -> SOLIDUS
+    u'\xc2'     #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc4'     #  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc0'     #  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc3'     #  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc5'     #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc7'     #  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xd1'     #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xa6'     #  0x6A -> BROKEN BAR
+    u','        #  0x6B -> COMMA
+    u'%'        #  0x6C -> PERCENT SIGN
+    u'_'        #  0x6D -> LOW LINE
+    u'>'        #  0x6E -> GREATER-THAN SIGN
+    u'?'        #  0x6F -> QUESTION MARK
+    u'\xf8'     #  0x70 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xc9'     #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'     #  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'     #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'`'        #  0x79 -> GRAVE ACCENT
+    u':'        #  0x7A -> COLON
+    u'#'        #  0x7B -> NUMBER SIGN
+    u'@'        #  0x7C -> COMMERCIAL AT
+    u"'"        #  0x7D -> APOSTROPHE
+    u'='        #  0x7E -> EQUALS SIGN
+    u'"'        #  0x7F -> QUOTATION MARK
+    u'\xd8'     #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'a'        #  0x81 -> LATIN SMALL LETTER A
+    u'b'        #  0x82 -> LATIN SMALL LETTER B
+    u'c'        #  0x83 -> LATIN SMALL LETTER C
+    u'd'        #  0x84 -> LATIN SMALL LETTER D
+    u'e'        #  0x85 -> LATIN SMALL LETTER E
+    u'f'        #  0x86 -> LATIN SMALL LETTER F
+    u'g'        #  0x87 -> LATIN SMALL LETTER G
+    u'h'        #  0x88 -> LATIN SMALL LETTER H
+    u'i'        #  0x89 -> LATIN SMALL LETTER I
+    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xf0'     #  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
+    u'\xfd'     #  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'     #  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
+    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
+    u'\xb0'     #  0x90 -> DEGREE SIGN
+    u'j'        #  0x91 -> LATIN SMALL LETTER J
+    u'k'        #  0x92 -> LATIN SMALL LETTER K
+    u'l'        #  0x93 -> LATIN SMALL LETTER L
+    u'm'        #  0x94 -> LATIN SMALL LETTER M
+    u'n'        #  0x95 -> LATIN SMALL LETTER N
+    u'o'        #  0x96 -> LATIN SMALL LETTER O
+    u'p'        #  0x97 -> LATIN SMALL LETTER P
+    u'q'        #  0x98 -> LATIN SMALL LETTER Q
+    u'r'        #  0x99 -> LATIN SMALL LETTER R
+    u'\xaa'     #  0x9A -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0x9B -> MASCULINE ORDINAL INDICATOR
+    u'\xe6'     #  0x9C -> LATIN SMALL LIGATURE AE
+    u'\xb8'     #  0x9D -> CEDILLA
+    u'\xc6'     #  0x9E -> LATIN CAPITAL LIGATURE AE
+    u'\u20ac'   #  0x9F -> EURO SIGN
+    u'\xb5'     #  0xA0 -> MICRO SIGN
+    u'~'        #  0xA1 -> TILDE
+    u's'        #  0xA2 -> LATIN SMALL LETTER S
+    u't'        #  0xA3 -> LATIN SMALL LETTER T
+    u'u'        #  0xA4 -> LATIN SMALL LETTER U
+    u'v'        #  0xA5 -> LATIN SMALL LETTER V
+    u'w'        #  0xA6 -> LATIN SMALL LETTER W
+    u'x'        #  0xA7 -> LATIN SMALL LETTER X
+    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
+    u'\xa1'     #  0xAA -> INVERTED EXCLAMATION MARK
+    u'\xbf'     #  0xAB -> INVERTED QUESTION MARK
+    u'\xd0'     #  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
+    u'\xdd'     #  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'     #  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
+    u'\xae'     #  0xAF -> REGISTERED SIGN
+    u'^'        #  0xB0 -> CIRCUMFLEX ACCENT
+    u'\xa3'     #  0xB1 -> POUND SIGN
+    u'\xa5'     #  0xB2 -> YEN SIGN
+    u'\xb7'     #  0xB3 -> MIDDLE DOT
+    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'     #  0xB5 -> SECTION SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'['        #  0xBA -> LEFT SQUARE BRACKET
+    u']'        #  0xBB -> RIGHT SQUARE BRACKET
+    u'\xaf'     #  0xBC -> MACRON
+    u'\xa8'     #  0xBD -> DIAERESIS
+    u'\xb4'     #  0xBE -> ACUTE ACCENT
+    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
+    u'{'        #  0xC0 -> LEFT CURLY BRACKET
+    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'     #  0xCA -> SOFT HYPHEN
+    u'\xf4'     #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'     #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf5'     #  0xCF -> LATIN SMALL LETTER O WITH TILDE
+    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
+    u'\xfb'     #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xf9'     #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xff'     #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\\'       #  0xE0 -> REVERSE SOLIDUS
+    u'\xf7'     #  0xE1 -> DIVISION SIGN
+    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
+    u'\xd4'     #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd6'     #  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd2'     #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd5'     #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
+    u'0'        #  0xF0 -> DIGIT ZERO
+    u'1'        #  0xF1 -> DIGIT ONE
+    u'2'        #  0xF2 -> DIGIT TWO
+    u'3'        #  0xF3 -> DIGIT THREE
+    u'4'        #  0xF4 -> DIGIT FOUR
+    u'5'        #  0xF5 -> DIGIT FIVE
+    u'6'        #  0xF6 -> DIGIT SIX
+    u'7'        #  0xF7 -> DIGIT SEVEN
+    u'8'        #  0xF8 -> DIGIT EIGHT
+    u'9'        #  0xF9 -> DIGIT NINE
+    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
+    u'\xdb'     #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xd9'     #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\x9f'     #  0xFF -> CONTROL
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x37,	#  END OF TRANSMISSION
-    0x0005: 0x2D,	#  ENQUIRY
-    0x0006: 0x2E,	#  ACKNOWLEDGE
-    0x0007: 0x2F,	#  BELL
-    0x0008: 0x16,	#  BACKSPACE
-    0x0009: 0x05,	#  HORIZONTAL TABULATION
-    0x000A: 0x25,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x3C,	#  DEVICE CONTROL FOUR
-    0x0015: 0x3D,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x32,	#  SYNCHRONOUS IDLE
-    0x0017: 0x26,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x3F,	#  SUBSTITUTE
-    0x001B: 0x27,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x40,	#  SPACE
-    0x0021: 0x5A,	#  EXCLAMATION MARK
-    0x0022: 0x7F,	#  QUOTATION MARK
-    0x0023: 0x7B,	#  NUMBER SIGN
-    0x0024: 0x5B,	#  DOLLAR SIGN
-    0x0025: 0x6C,	#  PERCENT SIGN
-    0x0026: 0x50,	#  AMPERSAND
-    0x0027: 0x7D,	#  APOSTROPHE
-    0x0028: 0x4D,	#  LEFT PARENTHESIS
-    0x0029: 0x5D,	#  RIGHT PARENTHESIS
-    0x002A: 0x5C,	#  ASTERISK
-    0x002B: 0x4E,	#  PLUS SIGN
-    0x002C: 0x6B,	#  COMMA
-    0x002D: 0x60,	#  HYPHEN-MINUS
-    0x002E: 0x4B,	#  FULL STOP
-    0x002F: 0x61,	#  SOLIDUS
-    0x0030: 0xF0,	#  DIGIT ZERO
-    0x0031: 0xF1,	#  DIGIT ONE
-    0x0032: 0xF2,	#  DIGIT TWO
-    0x0033: 0xF3,	#  DIGIT THREE
-    0x0034: 0xF4,	#  DIGIT FOUR
-    0x0035: 0xF5,	#  DIGIT FIVE
-    0x0036: 0xF6,	#  DIGIT SIX
-    0x0037: 0xF7,	#  DIGIT SEVEN
-    0x0038: 0xF8,	#  DIGIT EIGHT
-    0x0039: 0xF9,	#  DIGIT NINE
-    0x003A: 0x7A,	#  COLON
-    0x003B: 0x5E,	#  SEMICOLON
-    0x003C: 0x4C,	#  LESS-THAN SIGN
-    0x003D: 0x7E,	#  EQUALS SIGN
-    0x003E: 0x6E,	#  GREATER-THAN SIGN
-    0x003F: 0x6F,	#  QUESTION MARK
-    0x0040: 0x7C,	#  COMMERCIAL AT
-    0x0041: 0xC1,	#  LATIN CAPITAL LETTER A
-    0x0042: 0xC2,	#  LATIN CAPITAL LETTER B
-    0x0043: 0xC3,	#  LATIN CAPITAL LETTER C
-    0x0044: 0xC4,	#  LATIN CAPITAL LETTER D
-    0x0045: 0xC5,	#  LATIN CAPITAL LETTER E
-    0x0046: 0xC6,	#  LATIN CAPITAL LETTER F
-    0x0047: 0xC7,	#  LATIN CAPITAL LETTER G
-    0x0048: 0xC8,	#  LATIN CAPITAL LETTER H
-    0x0049: 0xC9,	#  LATIN CAPITAL LETTER I
-    0x004A: 0xD1,	#  LATIN CAPITAL LETTER J
-    0x004B: 0xD2,	#  LATIN CAPITAL LETTER K
-    0x004C: 0xD3,	#  LATIN CAPITAL LETTER L
-    0x004D: 0xD4,	#  LATIN CAPITAL LETTER M
-    0x004E: 0xD5,	#  LATIN CAPITAL LETTER N
-    0x004F: 0xD6,	#  LATIN CAPITAL LETTER O
-    0x0050: 0xD7,	#  LATIN CAPITAL LETTER P
-    0x0051: 0xD8,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0xD9,	#  LATIN CAPITAL LETTER R
-    0x0053: 0xE2,	#  LATIN CAPITAL LETTER S
-    0x0054: 0xE3,	#  LATIN CAPITAL LETTER T
-    0x0055: 0xE4,	#  LATIN CAPITAL LETTER U
-    0x0056: 0xE5,	#  LATIN CAPITAL LETTER V
-    0x0057: 0xE6,	#  LATIN CAPITAL LETTER W
-    0x0058: 0xE7,	#  LATIN CAPITAL LETTER X
-    0x0059: 0xE8,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0xE9,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0xBA,	#  LEFT SQUARE BRACKET
-    0x005C: 0xE0,	#  REVERSE SOLIDUS
-    0x005D: 0xBB,	#  RIGHT SQUARE BRACKET
-    0x005E: 0xB0,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x6D,	#  LOW LINE
-    0x0060: 0x79,	#  GRAVE ACCENT
-    0x0061: 0x81,	#  LATIN SMALL LETTER A
-    0x0062: 0x82,	#  LATIN SMALL LETTER B
-    0x0063: 0x83,	#  LATIN SMALL LETTER C
-    0x0064: 0x84,	#  LATIN SMALL LETTER D
-    0x0065: 0x85,	#  LATIN SMALL LETTER E
-    0x0066: 0x86,	#  LATIN SMALL LETTER F
-    0x0067: 0x87,	#  LATIN SMALL LETTER G
-    0x0068: 0x88,	#  LATIN SMALL LETTER H
-    0x0069: 0x89,	#  LATIN SMALL LETTER I
-    0x006A: 0x91,	#  LATIN SMALL LETTER J
-    0x006B: 0x92,	#  LATIN SMALL LETTER K
-    0x006C: 0x93,	#  LATIN SMALL LETTER L
-    0x006D: 0x94,	#  LATIN SMALL LETTER M
-    0x006E: 0x95,	#  LATIN SMALL LETTER N
-    0x006F: 0x96,	#  LATIN SMALL LETTER O
-    0x0070: 0x97,	#  LATIN SMALL LETTER P
-    0x0071: 0x98,	#  LATIN SMALL LETTER Q
-    0x0072: 0x99,	#  LATIN SMALL LETTER R
-    0x0073: 0xA2,	#  LATIN SMALL LETTER S
-    0x0074: 0xA3,	#  LATIN SMALL LETTER T
-    0x0075: 0xA4,	#  LATIN SMALL LETTER U
-    0x0076: 0xA5,	#  LATIN SMALL LETTER V
-    0x0077: 0xA6,	#  LATIN SMALL LETTER W
-    0x0078: 0xA7,	#  LATIN SMALL LETTER X
-    0x0079: 0xA8,	#  LATIN SMALL LETTER Y
-    0x007A: 0xA9,	#  LATIN SMALL LETTER Z
-    0x007B: 0xC0,	#  LEFT CURLY BRACKET
-    0x007C: 0x4F,	#  VERTICAL LINE
-    0x007D: 0xD0,	#  RIGHT CURLY BRACKET
-    0x007E: 0xA1,	#  TILDE
-    0x007F: 0x07,	#  DELETE
-    0x0080: 0x20,	#  CONTROL
-    0x0081: 0x21,	#  CONTROL
-    0x0082: 0x22,	#  CONTROL
-    0x0083: 0x23,	#  CONTROL
-    0x0084: 0x24,	#  CONTROL
-    0x0085: 0x15,	#  CONTROL
-    0x0086: 0x06,	#  CONTROL
-    0x0087: 0x17,	#  CONTROL
-    0x0088: 0x28,	#  CONTROL
-    0x0089: 0x29,	#  CONTROL
-    0x008A: 0x2A,	#  CONTROL
-    0x008B: 0x2B,	#  CONTROL
-    0x008C: 0x2C,	#  CONTROL
-    0x008D: 0x09,	#  CONTROL
-    0x008E: 0x0A,	#  CONTROL
-    0x008F: 0x1B,	#  CONTROL
-    0x0090: 0x30,	#  CONTROL
-    0x0091: 0x31,	#  CONTROL
-    0x0092: 0x1A,	#  CONTROL
-    0x0093: 0x33,	#  CONTROL
-    0x0094: 0x34,	#  CONTROL
-    0x0095: 0x35,	#  CONTROL
-    0x0096: 0x36,	#  CONTROL
-    0x0097: 0x08,	#  CONTROL
-    0x0098: 0x38,	#  CONTROL
-    0x0099: 0x39,	#  CONTROL
-    0x009A: 0x3A,	#  CONTROL
-    0x009B: 0x3B,	#  CONTROL
-    0x009C: 0x04,	#  CONTROL
-    0x009D: 0x14,	#  CONTROL
-    0x009E: 0x3E,	#  CONTROL
-    0x009F: 0xFF,	#  CONTROL
-    0x00A0: 0x41,	#  NO-BREAK SPACE
-    0x00A1: 0xAA,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0x4A,	#  CENT SIGN
-    0x00A3: 0xB1,	#  POUND SIGN
-    0x00A5: 0xB2,	#  YEN SIGN
-    0x00A6: 0x6A,	#  BROKEN BAR
-    0x00A7: 0xB5,	#  SECTION SIGN
-    0x00A8: 0xBD,	#  DIAERESIS
-    0x00A9: 0xB4,	#  COPYRIGHT SIGN
-    0x00AA: 0x9A,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0x8A,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0x5F,	#  NOT SIGN
-    0x00AD: 0xCA,	#  SOFT HYPHEN
-    0x00AE: 0xAF,	#  REGISTERED SIGN
-    0x00AF: 0xBC,	#  MACRON
-    0x00B0: 0x90,	#  DEGREE SIGN
-    0x00B1: 0x8F,	#  PLUS-MINUS SIGN
-    0x00B2: 0xEA,	#  SUPERSCRIPT TWO
-    0x00B3: 0xFA,	#  SUPERSCRIPT THREE
-    0x00B4: 0xBE,	#  ACUTE ACCENT
-    0x00B5: 0xA0,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB3,	#  MIDDLE DOT
-    0x00B8: 0x9D,	#  CEDILLA
-    0x00B9: 0xDA,	#  SUPERSCRIPT ONE
-    0x00BA: 0x9B,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0x8B,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xB7,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xB8,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xB9,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xAB,	#  INVERTED QUESTION MARK
-    0x00C0: 0x64,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0x65,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0x62,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0x66,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0x63,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0x67,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0x9E,	#  LATIN CAPITAL LIGATURE AE
-    0x00C7: 0x68,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0x74,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0x71,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0x72,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0x73,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0x78,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0x75,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0x76,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0x77,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D0: 0xAC,	#  LATIN CAPITAL LETTER ETH (ICELANDIC)
-    0x00D1: 0x69,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xED,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEB,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xEF,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xEC,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xBF,	#  MULTIPLICATION SIGN
-    0x00D8: 0x80,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xFD,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xFE,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xFB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xFC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xAD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DE: 0xAE,	#  LATIN CAPITAL LETTER THORN (ICELANDIC)
-    0x00DF: 0x59,	#  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00E0: 0x44,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x45,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x42,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0x46,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0x43,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0x47,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0x9C,	#  LATIN SMALL LIGATURE AE
-    0x00E7: 0x48,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x54,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x51,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x52,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x53,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0x58,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0x55,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x56,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x57,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F0: 0x8C,	#  LATIN SMALL LETTER ETH (ICELANDIC)
-    0x00F1: 0x49,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xCD,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xCE,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xCB,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xCF,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xCC,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xE1,	#  DIVISION SIGN
-    0x00F8: 0x70,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xDD,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xDE,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xDB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xDC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0x8D,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00FE: 0x8E,	#  LATIN SMALL LETTER THORN (ICELANDIC)
-    0x00FF: 0xDF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x20AC: 0x9F,	#  EURO SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x37,       #  END OF TRANSMISSION
+    0x0005: 0x2D,       #  ENQUIRY
+    0x0006: 0x2E,       #  ACKNOWLEDGE
+    0x0007: 0x2F,       #  BELL
+    0x0008: 0x16,       #  BACKSPACE
+    0x0009: 0x05,       #  HORIZONTAL TABULATION
+    0x000A: 0x25,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x3C,       #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x32,       #  SYNCHRONOUS IDLE
+    0x0017: 0x26,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x3F,       #  SUBSTITUTE
+    0x001B: 0x27,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x40,       #  SPACE
+    0x0021: 0x5A,       #  EXCLAMATION MARK
+    0x0022: 0x7F,       #  QUOTATION MARK
+    0x0023: 0x7B,       #  NUMBER SIGN
+    0x0024: 0x5B,       #  DOLLAR SIGN
+    0x0025: 0x6C,       #  PERCENT SIGN
+    0x0026: 0x50,       #  AMPERSAND
+    0x0027: 0x7D,       #  APOSTROPHE
+    0x0028: 0x4D,       #  LEFT PARENTHESIS
+    0x0029: 0x5D,       #  RIGHT PARENTHESIS
+    0x002A: 0x5C,       #  ASTERISK
+    0x002B: 0x4E,       #  PLUS SIGN
+    0x002C: 0x6B,       #  COMMA
+    0x002D: 0x60,       #  HYPHEN-MINUS
+    0x002E: 0x4B,       #  FULL STOP
+    0x002F: 0x61,       #  SOLIDUS
+    0x0030: 0xF0,       #  DIGIT ZERO
+    0x0031: 0xF1,       #  DIGIT ONE
+    0x0032: 0xF2,       #  DIGIT TWO
+    0x0033: 0xF3,       #  DIGIT THREE
+    0x0034: 0xF4,       #  DIGIT FOUR
+    0x0035: 0xF5,       #  DIGIT FIVE
+    0x0036: 0xF6,       #  DIGIT SIX
+    0x0037: 0xF7,       #  DIGIT SEVEN
+    0x0038: 0xF8,       #  DIGIT EIGHT
+    0x0039: 0xF9,       #  DIGIT NINE
+    0x003A: 0x7A,       #  COLON
+    0x003B: 0x5E,       #  SEMICOLON
+    0x003C: 0x4C,       #  LESS-THAN SIGN
+    0x003D: 0x7E,       #  EQUALS SIGN
+    0x003E: 0x6E,       #  GREATER-THAN SIGN
+    0x003F: 0x6F,       #  QUESTION MARK
+    0x0040: 0x7C,       #  COMMERCIAL AT
+    0x0041: 0xC1,       #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,       #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,       #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,       #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,       #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,       #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,       #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,       #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,       #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,       #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,       #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,       #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,       #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,       #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,       #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,       #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,       #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,       #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,       #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,       #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,       #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,       #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,       #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0xBA,       #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,       #  REVERSE SOLIDUS
+    0x005D: 0xBB,       #  RIGHT SQUARE BRACKET
+    0x005E: 0xB0,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,       #  LOW LINE
+    0x0060: 0x79,       #  GRAVE ACCENT
+    0x0061: 0x81,       #  LATIN SMALL LETTER A
+    0x0062: 0x82,       #  LATIN SMALL LETTER B
+    0x0063: 0x83,       #  LATIN SMALL LETTER C
+    0x0064: 0x84,       #  LATIN SMALL LETTER D
+    0x0065: 0x85,       #  LATIN SMALL LETTER E
+    0x0066: 0x86,       #  LATIN SMALL LETTER F
+    0x0067: 0x87,       #  LATIN SMALL LETTER G
+    0x0068: 0x88,       #  LATIN SMALL LETTER H
+    0x0069: 0x89,       #  LATIN SMALL LETTER I
+    0x006A: 0x91,       #  LATIN SMALL LETTER J
+    0x006B: 0x92,       #  LATIN SMALL LETTER K
+    0x006C: 0x93,       #  LATIN SMALL LETTER L
+    0x006D: 0x94,       #  LATIN SMALL LETTER M
+    0x006E: 0x95,       #  LATIN SMALL LETTER N
+    0x006F: 0x96,       #  LATIN SMALL LETTER O
+    0x0070: 0x97,       #  LATIN SMALL LETTER P
+    0x0071: 0x98,       #  LATIN SMALL LETTER Q
+    0x0072: 0x99,       #  LATIN SMALL LETTER R
+    0x0073: 0xA2,       #  LATIN SMALL LETTER S
+    0x0074: 0xA3,       #  LATIN SMALL LETTER T
+    0x0075: 0xA4,       #  LATIN SMALL LETTER U
+    0x0076: 0xA5,       #  LATIN SMALL LETTER V
+    0x0077: 0xA6,       #  LATIN SMALL LETTER W
+    0x0078: 0xA7,       #  LATIN SMALL LETTER X
+    0x0079: 0xA8,       #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,       #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,       #  LEFT CURLY BRACKET
+    0x007C: 0x4F,       #  VERTICAL LINE
+    0x007D: 0xD0,       #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,       #  TILDE
+    0x007F: 0x07,       #  DELETE
+    0x0080: 0x20,       #  CONTROL
+    0x0081: 0x21,       #  CONTROL
+    0x0082: 0x22,       #  CONTROL
+    0x0083: 0x23,       #  CONTROL
+    0x0084: 0x24,       #  CONTROL
+    0x0085: 0x15,       #  CONTROL
+    0x0086: 0x06,       #  CONTROL
+    0x0087: 0x17,       #  CONTROL
+    0x0088: 0x28,       #  CONTROL
+    0x0089: 0x29,       #  CONTROL
+    0x008A: 0x2A,       #  CONTROL
+    0x008B: 0x2B,       #  CONTROL
+    0x008C: 0x2C,       #  CONTROL
+    0x008D: 0x09,       #  CONTROL
+    0x008E: 0x0A,       #  CONTROL
+    0x008F: 0x1B,       #  CONTROL
+    0x0090: 0x30,       #  CONTROL
+    0x0091: 0x31,       #  CONTROL
+    0x0092: 0x1A,       #  CONTROL
+    0x0093: 0x33,       #  CONTROL
+    0x0094: 0x34,       #  CONTROL
+    0x0095: 0x35,       #  CONTROL
+    0x0096: 0x36,       #  CONTROL
+    0x0097: 0x08,       #  CONTROL
+    0x0098: 0x38,       #  CONTROL
+    0x0099: 0x39,       #  CONTROL
+    0x009A: 0x3A,       #  CONTROL
+    0x009B: 0x3B,       #  CONTROL
+    0x009C: 0x04,       #  CONTROL
+    0x009D: 0x14,       #  CONTROL
+    0x009E: 0x3E,       #  CONTROL
+    0x009F: 0xFF,       #  CONTROL
+    0x00A0: 0x41,       #  NO-BREAK SPACE
+    0x00A1: 0xAA,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0x4A,       #  CENT SIGN
+    0x00A3: 0xB1,       #  POUND SIGN
+    0x00A5: 0xB2,       #  YEN SIGN
+    0x00A6: 0x6A,       #  BROKEN BAR
+    0x00A7: 0xB5,       #  SECTION SIGN
+    0x00A8: 0xBD,       #  DIAERESIS
+    0x00A9: 0xB4,       #  COPYRIGHT SIGN
+    0x00AA: 0x9A,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0x8A,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0x5F,       #  NOT SIGN
+    0x00AD: 0xCA,       #  SOFT HYPHEN
+    0x00AE: 0xAF,       #  REGISTERED SIGN
+    0x00AF: 0xBC,       #  MACRON
+    0x00B0: 0x90,       #  DEGREE SIGN
+    0x00B1: 0x8F,       #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,       #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,       #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,       #  ACUTE ACCENT
+    0x00B5: 0xA0,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB3,       #  MIDDLE DOT
+    0x00B8: 0x9D,       #  CEDILLA
+    0x00B9: 0xDA,       #  SUPERSCRIPT ONE
+    0x00BA: 0x9B,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0x8B,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xAB,       #  INVERTED QUESTION MARK
+    0x00C0: 0x64,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0x65,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0x62,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0x66,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x63,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x67,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0x9E,       #  LATIN CAPITAL LIGATURE AE
+    0x00C7: 0x68,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0x74,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x71,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0x72,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0x73,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0x78,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0x75,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0x76,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0x77,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xAC,       #  LATIN CAPITAL LETTER ETH (ICELANDIC)
+    0x00D1: 0x69,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xED,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEB,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xEF,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xEC,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xBF,       #  MULTIPLICATION SIGN
+    0x00D8: 0x80,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xFD,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xFE,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xFB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xFC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xAD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xAE,       #  LATIN CAPITAL LETTER THORN (ICELANDIC)
+    0x00DF: 0x59,       #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00E0: 0x44,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x45,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x42,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x46,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x43,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x47,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0x9C,       #  LATIN SMALL LIGATURE AE
+    0x00E7: 0x48,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x54,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x51,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x52,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x53,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x58,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x55,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x56,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x57,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0x8C,       #  LATIN SMALL LETTER ETH (ICELANDIC)
+    0x00F1: 0x49,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xCD,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xCE,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xCB,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xCF,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xCC,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xE1,       #  DIVISION SIGN
+    0x00F8: 0x70,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xDD,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xDE,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xDB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xDC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0x8D,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0x8E,       #  LATIN SMALL LETTER THORN (ICELANDIC)
+    0x00FF: 0xDF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x20AC: 0x9F,       #  EURO SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp1250.py
==============================================================================
--- python/trunk/Lib/encodings/cp1250.py	(original)
+++ python/trunk/Lib/encodings/cp1250.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,517 +32,516 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u20ac'	#  0x80 -> EURO SIGN
-    u'\ufffe'	#  0x81 -> UNDEFINED
-    u'\u201a'	#  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\ufffe'	#  0x83 -> UNDEFINED
-    u'\u201e'	#  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'	#  0x86 -> DAGGER
-    u'\u2021'	#  0x87 -> DOUBLE DAGGER
-    u'\ufffe'	#  0x88 -> UNDEFINED
-    u'\u2030'	#  0x89 -> PER MILLE SIGN
-    u'\u0160'	#  0x8A -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2039'	#  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u015a'	#  0x8C -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u0164'	#  0x8D -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u017d'	#  0x8E -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u0179'	#  0x8F -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\ufffe'	#  0x90 -> UNDEFINED
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\ufffe'	#  0x98 -> UNDEFINED
-    u'\u2122'	#  0x99 -> TRADE MARK SIGN
-    u'\u0161'	#  0x9A -> LATIN SMALL LETTER S WITH CARON
-    u'\u203a'	#  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u015b'	#  0x9C -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u0165'	#  0x9D -> LATIN SMALL LETTER T WITH CARON
-    u'\u017e'	#  0x9E -> LATIN SMALL LETTER Z WITH CARON
-    u'\u017a'	#  0x9F -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u02c7'	#  0xA1 -> CARON
-    u'\u02d8'	#  0xA2 -> BREVE
-    u'\u0141'	#  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\u0104'	#  0xA5 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u015e'	#  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\u017b'	#  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u02db'	#  0xB2 -> OGONEK
-    u'\u0142'	#  0xB3 -> LATIN SMALL LETTER L WITH STROKE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\u0105'	#  0xB9 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u015f'	#  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u013d'	#  0xBC -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u02dd'	#  0xBD -> DOUBLE ACUTE ACCENT
-    u'\u013e'	#  0xBE -> LATIN SMALL LETTER L WITH CARON
-    u'\u017c'	#  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u0154'	#  0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'	#  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0139'	#  0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u0106'	#  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\u010c'	#  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'	#  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u011a'	#  0xCC -> LATIN CAPITAL LETTER E WITH CARON
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u010e'	#  0xCF -> LATIN CAPITAL LETTER D WITH CARON
-    u'\u0110'	#  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0143'	#  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0147'	#  0xD2 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0150'	#  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\u0158'	#  0xD8 -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u016e'	#  0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u0170'	#  0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'	#  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0162'	#  0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\u0155'	#  0xE0 -> LATIN SMALL LETTER R WITH ACUTE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'	#  0xE3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u013a'	#  0xE5 -> LATIN SMALL LETTER L WITH ACUTE
-    u'\u0107'	#  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\u010d'	#  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'	#  0xEA -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u011b'	#  0xEC -> LATIN SMALL LETTER E WITH CARON
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u010f'	#  0xEF -> LATIN SMALL LETTER D WITH CARON
-    u'\u0111'	#  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0144'	#  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0148'	#  0xF2 -> LATIN SMALL LETTER N WITH CARON
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0151'	#  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\u0159'	#  0xF8 -> LATIN SMALL LETTER R WITH CARON
-    u'\u016f'	#  0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u0171'	#  0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'	#  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0163'	#  0xFE -> LATIN SMALL LETTER T WITH CEDILLA
-    u'\u02d9'	#  0xFF -> DOT ABOVE
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u20ac'   #  0x80 -> EURO SIGN
+    u'\ufffe'   #  0x81 -> UNDEFINED
+    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
+    u'\ufffe'   #  0x83 -> UNDEFINED
+    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\u2020'   #  0x86 -> DAGGER
+    u'\u2021'   #  0x87 -> DOUBLE DAGGER
+    u'\ufffe'   #  0x88 -> UNDEFINED
+    u'\u2030'   #  0x89 -> PER MILLE SIGN
+    u'\u0160'   #  0x8A -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u015a'   #  0x8C -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u0164'   #  0x8D -> LATIN CAPITAL LETTER T WITH CARON
+    u'\u017d'   #  0x8E -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u0179'   #  0x8F -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\ufffe'   #  0x90 -> UNDEFINED
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\ufffe'   #  0x98 -> UNDEFINED
+    u'\u2122'   #  0x99 -> TRADE MARK SIGN
+    u'\u0161'   #  0x9A -> LATIN SMALL LETTER S WITH CARON
+    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u015b'   #  0x9C -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u0165'   #  0x9D -> LATIN SMALL LETTER T WITH CARON
+    u'\u017e'   #  0x9E -> LATIN SMALL LETTER Z WITH CARON
+    u'\u017a'   #  0x9F -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u02c7'   #  0xA1 -> CARON
+    u'\u02d8'   #  0xA2 -> BREVE
+    u'\u0141'   #  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\u0104'   #  0xA5 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u015e'   #  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\u017b'   #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u02db'   #  0xB2 -> OGONEK
+    u'\u0142'   #  0xB3 -> LATIN SMALL LETTER L WITH STROKE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\u0105'   #  0xB9 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u015f'   #  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u013d'   #  0xBC -> LATIN CAPITAL LETTER L WITH CARON
+    u'\u02dd'   #  0xBD -> DOUBLE ACUTE ACCENT
+    u'\u013e'   #  0xBE -> LATIN SMALL LETTER L WITH CARON
+    u'\u017c'   #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u0154'   #  0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0102'   #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u0139'   #  0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
+    u'\u0106'   #  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0118'   #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u011a'   #  0xCC -> LATIN CAPITAL LETTER E WITH CARON
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\u010e'   #  0xCF -> LATIN CAPITAL LETTER D WITH CARON
+    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\u0147'   #  0xD2 -> LATIN CAPITAL LETTER N WITH CARON
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0150'   #  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0158'   #  0xD8 -> LATIN CAPITAL LETTER R WITH CARON
+    u'\u016e'   #  0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\u0170'   #  0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\u0162'   #  0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\u0155'   #  0xE0 -> LATIN SMALL LETTER R WITH ACUTE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0103'   #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u013a'   #  0xE5 -> LATIN SMALL LETTER L WITH ACUTE
+    u'\u0107'   #  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0119'   #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u011b'   #  0xEC -> LATIN SMALL LETTER E WITH CARON
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\u010f'   #  0xEF -> LATIN SMALL LETTER D WITH CARON
+    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0148'   #  0xF2 -> LATIN SMALL LETTER N WITH CARON
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u0151'   #  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\u0159'   #  0xF8 -> LATIN SMALL LETTER R WITH CARON
+    u'\u016f'   #  0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\u0171'   #  0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\u0163'   #  0xFE -> LATIN SMALL LETTER T WITH CEDILLA
+    u'\u02d9'   #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xDD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0xFD,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x0102: 0xC3,	#  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xE3,	#  LATIN SMALL LETTER A WITH BREVE
-    0x0104: 0xA5,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xB9,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xC6,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xE6,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x010C: 0xC8,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010D: 0xE8,	#  LATIN SMALL LETTER C WITH CARON
-    0x010E: 0xCF,	#  LATIN CAPITAL LETTER D WITH CARON
-    0x010F: 0xEF,	#  LATIN SMALL LETTER D WITH CARON
-    0x0110: 0xD0,	#  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xF0,	#  LATIN SMALL LETTER D WITH STROKE
-    0x0118: 0xCA,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xEA,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x011A: 0xCC,	#  LATIN CAPITAL LETTER E WITH CARON
-    0x011B: 0xEC,	#  LATIN SMALL LETTER E WITH CARON
-    0x0139: 0xC5,	#  LATIN CAPITAL LETTER L WITH ACUTE
-    0x013A: 0xE5,	#  LATIN SMALL LETTER L WITH ACUTE
-    0x013D: 0xBC,	#  LATIN CAPITAL LETTER L WITH CARON
-    0x013E: 0xBE,	#  LATIN SMALL LETTER L WITH CARON
-    0x0141: 0xA3,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xB3,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xD1,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xF1,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x0147: 0xD2,	#  LATIN CAPITAL LETTER N WITH CARON
-    0x0148: 0xF2,	#  LATIN SMALL LETTER N WITH CARON
-    0x0150: 0xD5,	#  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0xF5,	#  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0154: 0xC0,	#  LATIN CAPITAL LETTER R WITH ACUTE
-    0x0155: 0xE0,	#  LATIN SMALL LETTER R WITH ACUTE
-    0x0158: 0xD8,	#  LATIN CAPITAL LETTER R WITH CARON
-    0x0159: 0xF8,	#  LATIN SMALL LETTER R WITH CARON
-    0x015A: 0x8C,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015B: 0x9C,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x015E: 0xAA,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015F: 0xBA,	#  LATIN SMALL LETTER S WITH CEDILLA
-    0x0160: 0x8A,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x9A,	#  LATIN SMALL LETTER S WITH CARON
-    0x0162: 0xDE,	#  LATIN CAPITAL LETTER T WITH CEDILLA
-    0x0163: 0xFE,	#  LATIN SMALL LETTER T WITH CEDILLA
-    0x0164: 0x8D,	#  LATIN CAPITAL LETTER T WITH CARON
-    0x0165: 0x9D,	#  LATIN SMALL LETTER T WITH CARON
-    0x016E: 0xD9,	#  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x016F: 0xF9,	#  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0170: 0xDB,	#  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0xFB,	#  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0179: 0x8F,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017A: 0x9F,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x017B: 0xAF,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017C: 0xBF,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017D: 0x8E,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0x9E,	#  LATIN SMALL LETTER Z WITH CARON
-    0x02C7: 0xA1,	#  CARON
-    0x02D8: 0xA2,	#  BREVE
-    0x02D9: 0xFF,	#  DOT ABOVE
-    0x02DB: 0xB2,	#  OGONEK
-    0x02DD: 0xBD,	#  DOUBLE ACUTE ACCENT
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0x82,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0x84,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0x86,	#  DAGGER
-    0x2021: 0x87,	#  DOUBLE DAGGER
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x89,	#  PER MILLE SIGN
-    0x2039: 0x8B,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0x9B,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC: 0x80,	#  EURO SIGN
-    0x2122: 0x99,	#  TRADE MARK SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x0102: 0xC3,       #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xE3,       #  LATIN SMALL LETTER A WITH BREVE
+    0x0104: 0xA5,       #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xB9,       #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC6,       #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE6,       #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,       #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,       #  LATIN SMALL LETTER C WITH CARON
+    0x010E: 0xCF,       #  LATIN CAPITAL LETTER D WITH CARON
+    0x010F: 0xEF,       #  LATIN SMALL LETTER D WITH CARON
+    0x0110: 0xD0,       #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,       #  LATIN SMALL LETTER D WITH STROKE
+    0x0118: 0xCA,       #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xEA,       #  LATIN SMALL LETTER E WITH OGONEK
+    0x011A: 0xCC,       #  LATIN CAPITAL LETTER E WITH CARON
+    0x011B: 0xEC,       #  LATIN SMALL LETTER E WITH CARON
+    0x0139: 0xC5,       #  LATIN CAPITAL LETTER L WITH ACUTE
+    0x013A: 0xE5,       #  LATIN SMALL LETTER L WITH ACUTE
+    0x013D: 0xBC,       #  LATIN CAPITAL LETTER L WITH CARON
+    0x013E: 0xBE,       #  LATIN SMALL LETTER L WITH CARON
+    0x0141: 0xA3,       #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xB3,       #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,       #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,       #  LATIN SMALL LETTER N WITH ACUTE
+    0x0147: 0xD2,       #  LATIN CAPITAL LETTER N WITH CARON
+    0x0148: 0xF2,       #  LATIN SMALL LETTER N WITH CARON
+    0x0150: 0xD5,       #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x0151: 0xF5,       #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x0154: 0xC0,       #  LATIN CAPITAL LETTER R WITH ACUTE
+    0x0155: 0xE0,       #  LATIN SMALL LETTER R WITH ACUTE
+    0x0158: 0xD8,       #  LATIN CAPITAL LETTER R WITH CARON
+    0x0159: 0xF8,       #  LATIN SMALL LETTER R WITH CARON
+    0x015A: 0x8C,       #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0x9C,       #  LATIN SMALL LETTER S WITH ACUTE
+    0x015E: 0xAA,       #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xBA,       #  LATIN SMALL LETTER S WITH CEDILLA
+    0x0160: 0x8A,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0x9A,       #  LATIN SMALL LETTER S WITH CARON
+    0x0162: 0xDE,       #  LATIN CAPITAL LETTER T WITH CEDILLA
+    0x0163: 0xFE,       #  LATIN SMALL LETTER T WITH CEDILLA
+    0x0164: 0x8D,       #  LATIN CAPITAL LETTER T WITH CARON
+    0x0165: 0x9D,       #  LATIN SMALL LETTER T WITH CARON
+    0x016E: 0xD9,       #  LATIN CAPITAL LETTER U WITH RING ABOVE
+    0x016F: 0xF9,       #  LATIN SMALL LETTER U WITH RING ABOVE
+    0x0170: 0xDB,       #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x0171: 0xFB,       #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x0179: 0x8F,       #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0x9F,       #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xAF,       #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xBF,       #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0x8E,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0x9E,       #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0xA1,       #  CARON
+    0x02D8: 0xA2,       #  BREVE
+    0x02D9: 0xFF,       #  DOT ABOVE
+    0x02DB: 0xB2,       #  OGONEK
+    0x02DD: 0xBD,       #  DOUBLE ACUTE ACCENT
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0x82,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0x86,       #  DAGGER
+    0x2021: 0x87,       #  DOUBLE DAGGER
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x89,       #  PER MILLE SIGN
+    0x2039: 0x8B,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,       #  EURO SIGN
+    0x2122: 0x99,       #  TRADE MARK SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp1251.py
==============================================================================
--- python/trunk/Lib/encodings/cp1251.py	(original)
+++ python/trunk/Lib/encodings/cp1251.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,521 +32,520 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u0402'	#  0x80 -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0403'	#  0x81 -> CYRILLIC CAPITAL LETTER GJE
-    u'\u201a'	#  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0453'	#  0x83 -> CYRILLIC SMALL LETTER GJE
-    u'\u201e'	#  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'	#  0x86 -> DAGGER
-    u'\u2021'	#  0x87 -> DOUBLE DAGGER
-    u'\u20ac'	#  0x88 -> EURO SIGN
-    u'\u2030'	#  0x89 -> PER MILLE SIGN
-    u'\u0409'	#  0x8A -> CYRILLIC CAPITAL LETTER LJE
-    u'\u2039'	#  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u040a'	#  0x8C -> CYRILLIC CAPITAL LETTER NJE
-    u'\u040c'	#  0x8D -> CYRILLIC CAPITAL LETTER KJE
-    u'\u040b'	#  0x8E -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u040f'	#  0x8F -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u0452'	#  0x90 -> CYRILLIC SMALL LETTER DJE
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\ufffe'	#  0x98 -> UNDEFINED
-    u'\u2122'	#  0x99 -> TRADE MARK SIGN
-    u'\u0459'	#  0x9A -> CYRILLIC SMALL LETTER LJE
-    u'\u203a'	#  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u045a'	#  0x9C -> CYRILLIC SMALL LETTER NJE
-    u'\u045c'	#  0x9D -> CYRILLIC SMALL LETTER KJE
-    u'\u045b'	#  0x9E -> CYRILLIC SMALL LETTER TSHE
-    u'\u045f'	#  0x9F -> CYRILLIC SMALL LETTER DZHE
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u040e'	#  0xA1 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045e'	#  0xA2 -> CYRILLIC SMALL LETTER SHORT U
-    u'\u0408'	#  0xA3 -> CYRILLIC CAPITAL LETTER JE
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\u0490'	#  0xA5 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\u0401'	#  0xA8 -> CYRILLIC CAPITAL LETTER IO
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u0404'	#  0xAA -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\u0407'	#  0xAF -> CYRILLIC CAPITAL LETTER YI
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u0406'	#  0xB2 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0456'	#  0xB3 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0491'	#  0xB4 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\u0451'	#  0xB8 -> CYRILLIC SMALL LETTER IO
-    u'\u2116'	#  0xB9 -> NUMERO SIGN
-    u'\u0454'	#  0xBA -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0458'	#  0xBC -> CYRILLIC SMALL LETTER JE
-    u'\u0405'	#  0xBD -> CYRILLIC CAPITAL LETTER DZE
-    u'\u0455'	#  0xBE -> CYRILLIC SMALL LETTER DZE
-    u'\u0457'	#  0xBF -> CYRILLIC SMALL LETTER YI
-    u'\u0410'	#  0xC0 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'	#  0xC1 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'	#  0xC2 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'	#  0xC3 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'	#  0xC4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'	#  0xC5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'	#  0xC6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'	#  0xC7 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'	#  0xC8 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'	#  0xC9 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'	#  0xCA -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'	#  0xCB -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'	#  0xCC -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'	#  0xCD -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'	#  0xCE -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'	#  0xCF -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'	#  0xD0 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'	#  0xD1 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'	#  0xD2 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'	#  0xD3 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'	#  0xD4 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'	#  0xD5 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'	#  0xD6 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'	#  0xD7 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'	#  0xD8 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'	#  0xD9 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'	#  0xDA -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'	#  0xDB -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'	#  0xDC -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'	#  0xDD -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'	#  0xDE -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'	#  0xDF -> CYRILLIC CAPITAL LETTER YA
-    u'\u0430'	#  0xE0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'	#  0xE1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'	#  0xE2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'	#  0xE3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'	#  0xE4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'	#  0xE5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'	#  0xE6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'	#  0xE7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'	#  0xE8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'	#  0xE9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'	#  0xEA -> CYRILLIC SMALL LETTER KA
-    u'\u043b'	#  0xEB -> CYRILLIC SMALL LETTER EL
-    u'\u043c'	#  0xEC -> CYRILLIC SMALL LETTER EM
-    u'\u043d'	#  0xED -> CYRILLIC SMALL LETTER EN
-    u'\u043e'	#  0xEE -> CYRILLIC SMALL LETTER O
-    u'\u043f'	#  0xEF -> CYRILLIC SMALL LETTER PE
-    u'\u0440'	#  0xF0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'	#  0xF1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'	#  0xF2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'	#  0xF3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'	#  0xF4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'	#  0xF5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'	#  0xF6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'	#  0xF7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'	#  0xF8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'	#  0xF9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'	#  0xFA -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'	#  0xFB -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'	#  0xFC -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'	#  0xFD -> CYRILLIC SMALL LETTER E
-    u'\u044e'	#  0xFE -> CYRILLIC SMALL LETTER YU
-    u'\u044f'	#  0xFF -> CYRILLIC SMALL LETTER YA
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u0402'   #  0x80 -> CYRILLIC CAPITAL LETTER DJE
+    u'\u0403'   #  0x81 -> CYRILLIC CAPITAL LETTER GJE
+    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u0453'   #  0x83 -> CYRILLIC SMALL LETTER GJE
+    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\u2020'   #  0x86 -> DAGGER
+    u'\u2021'   #  0x87 -> DOUBLE DAGGER
+    u'\u20ac'   #  0x88 -> EURO SIGN
+    u'\u2030'   #  0x89 -> PER MILLE SIGN
+    u'\u0409'   #  0x8A -> CYRILLIC CAPITAL LETTER LJE
+    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u040a'   #  0x8C -> CYRILLIC CAPITAL LETTER NJE
+    u'\u040c'   #  0x8D -> CYRILLIC CAPITAL LETTER KJE
+    u'\u040b'   #  0x8E -> CYRILLIC CAPITAL LETTER TSHE
+    u'\u040f'   #  0x8F -> CYRILLIC CAPITAL LETTER DZHE
+    u'\u0452'   #  0x90 -> CYRILLIC SMALL LETTER DJE
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\ufffe'   #  0x98 -> UNDEFINED
+    u'\u2122'   #  0x99 -> TRADE MARK SIGN
+    u'\u0459'   #  0x9A -> CYRILLIC SMALL LETTER LJE
+    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u045a'   #  0x9C -> CYRILLIC SMALL LETTER NJE
+    u'\u045c'   #  0x9D -> CYRILLIC SMALL LETTER KJE
+    u'\u045b'   #  0x9E -> CYRILLIC SMALL LETTER TSHE
+    u'\u045f'   #  0x9F -> CYRILLIC SMALL LETTER DZHE
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u040e'   #  0xA1 -> CYRILLIC CAPITAL LETTER SHORT U
+    u'\u045e'   #  0xA2 -> CYRILLIC SMALL LETTER SHORT U
+    u'\u0408'   #  0xA3 -> CYRILLIC CAPITAL LETTER JE
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\u0490'   #  0xA5 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\u0401'   #  0xA8 -> CYRILLIC CAPITAL LETTER IO
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u0404'   #  0xAA -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\u0407'   #  0xAF -> CYRILLIC CAPITAL LETTER YI
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u0406'   #  0xB2 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0456'   #  0xB3 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0491'   #  0xB4 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\u0451'   #  0xB8 -> CYRILLIC SMALL LETTER IO
+    u'\u2116'   #  0xB9 -> NUMERO SIGN
+    u'\u0454'   #  0xBA -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u0458'   #  0xBC -> CYRILLIC SMALL LETTER JE
+    u'\u0405'   #  0xBD -> CYRILLIC CAPITAL LETTER DZE
+    u'\u0455'   #  0xBE -> CYRILLIC SMALL LETTER DZE
+    u'\u0457'   #  0xBF -> CYRILLIC SMALL LETTER YI
+    u'\u0410'   #  0xC0 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'   #  0xC1 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0412'   #  0xC2 -> CYRILLIC CAPITAL LETTER VE
+    u'\u0413'   #  0xC3 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0414'   #  0xC4 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'   #  0xC5 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0416'   #  0xC6 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0417'   #  0xC7 -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0418'   #  0xC8 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'   #  0xC9 -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'   #  0xCA -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'   #  0xCB -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'   #  0xCC -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'   #  0xCD -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'   #  0xCE -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'   #  0xCF -> CYRILLIC CAPITAL LETTER PE
+    u'\u0420'   #  0xD0 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'   #  0xD1 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'   #  0xD2 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'   #  0xD3 -> CYRILLIC CAPITAL LETTER U
+    u'\u0424'   #  0xD4 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0425'   #  0xD5 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0426'   #  0xD6 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0427'   #  0xD7 -> CYRILLIC CAPITAL LETTER CHE
+    u'\u0428'   #  0xD8 -> CYRILLIC CAPITAL LETTER SHA
+    u'\u0429'   #  0xD9 -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u042a'   #  0xDA -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\u042b'   #  0xDB -> CYRILLIC CAPITAL LETTER YERU
+    u'\u042c'   #  0xDC -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042d'   #  0xDD -> CYRILLIC CAPITAL LETTER E
+    u'\u042e'   #  0xDE -> CYRILLIC CAPITAL LETTER YU
+    u'\u042f'   #  0xDF -> CYRILLIC CAPITAL LETTER YA
+    u'\u0430'   #  0xE0 -> CYRILLIC SMALL LETTER A
+    u'\u0431'   #  0xE1 -> CYRILLIC SMALL LETTER BE
+    u'\u0432'   #  0xE2 -> CYRILLIC SMALL LETTER VE
+    u'\u0433'   #  0xE3 -> CYRILLIC SMALL LETTER GHE
+    u'\u0434'   #  0xE4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'   #  0xE5 -> CYRILLIC SMALL LETTER IE
+    u'\u0436'   #  0xE6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0437'   #  0xE7 -> CYRILLIC SMALL LETTER ZE
+    u'\u0438'   #  0xE8 -> CYRILLIC SMALL LETTER I
+    u'\u0439'   #  0xE9 -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'   #  0xEA -> CYRILLIC SMALL LETTER KA
+    u'\u043b'   #  0xEB -> CYRILLIC SMALL LETTER EL
+    u'\u043c'   #  0xEC -> CYRILLIC SMALL LETTER EM
+    u'\u043d'   #  0xED -> CYRILLIC SMALL LETTER EN
+    u'\u043e'   #  0xEE -> CYRILLIC SMALL LETTER O
+    u'\u043f'   #  0xEF -> CYRILLIC SMALL LETTER PE
+    u'\u0440'   #  0xF0 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'   #  0xF1 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'   #  0xF2 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'   #  0xF3 -> CYRILLIC SMALL LETTER U
+    u'\u0444'   #  0xF4 -> CYRILLIC SMALL LETTER EF
+    u'\u0445'   #  0xF5 -> CYRILLIC SMALL LETTER HA
+    u'\u0446'   #  0xF6 -> CYRILLIC SMALL LETTER TSE
+    u'\u0447'   #  0xF7 -> CYRILLIC SMALL LETTER CHE
+    u'\u0448'   #  0xF8 -> CYRILLIC SMALL LETTER SHA
+    u'\u0449'   #  0xF9 -> CYRILLIC SMALL LETTER SHCHA
+    u'\u044a'   #  0xFA -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u044b'   #  0xFB -> CYRILLIC SMALL LETTER YERU
+    u'\u044c'   #  0xFC -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044d'   #  0xFD -> CYRILLIC SMALL LETTER E
+    u'\u044e'   #  0xFE -> CYRILLIC SMALL LETTER YU
+    u'\u044f'   #  0xFF -> CYRILLIC SMALL LETTER YA
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x0401: 0xA8,	#  CYRILLIC CAPITAL LETTER IO
-    0x0402: 0x80,	#  CYRILLIC CAPITAL LETTER DJE
-    0x0403: 0x81,	#  CYRILLIC CAPITAL LETTER GJE
-    0x0404: 0xAA,	#  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0405: 0xBD,	#  CYRILLIC CAPITAL LETTER DZE
-    0x0406: 0xB2,	#  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0xAF,	#  CYRILLIC CAPITAL LETTER YI
-    0x0408: 0xA3,	#  CYRILLIC CAPITAL LETTER JE
-    0x0409: 0x8A,	#  CYRILLIC CAPITAL LETTER LJE
-    0x040A: 0x8C,	#  CYRILLIC CAPITAL LETTER NJE
-    0x040B: 0x8E,	#  CYRILLIC CAPITAL LETTER TSHE
-    0x040C: 0x8D,	#  CYRILLIC CAPITAL LETTER KJE
-    0x040E: 0xA1,	#  CYRILLIC CAPITAL LETTER SHORT U
-    0x040F: 0x8F,	#  CYRILLIC CAPITAL LETTER DZHE
-    0x0410: 0xC0,	#  CYRILLIC CAPITAL LETTER A
-    0x0411: 0xC1,	#  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0xC2,	#  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0xC3,	#  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0xC4,	#  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0xC5,	#  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0xC6,	#  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0xC7,	#  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0xC8,	#  CYRILLIC CAPITAL LETTER I
-    0x0419: 0xC9,	#  CYRILLIC CAPITAL LETTER SHORT I
-    0x041A: 0xCA,	#  CYRILLIC CAPITAL LETTER KA
-    0x041B: 0xCB,	#  CYRILLIC CAPITAL LETTER EL
-    0x041C: 0xCC,	#  CYRILLIC CAPITAL LETTER EM
-    0x041D: 0xCD,	#  CYRILLIC CAPITAL LETTER EN
-    0x041E: 0xCE,	#  CYRILLIC CAPITAL LETTER O
-    0x041F: 0xCF,	#  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0xD0,	#  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0xD1,	#  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0xD2,	#  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0xD3,	#  CYRILLIC CAPITAL LETTER U
-    0x0424: 0xD4,	#  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0xD5,	#  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0xD6,	#  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0xD7,	#  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0xD8,	#  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0xD9,	#  CYRILLIC CAPITAL LETTER SHCHA
-    0x042A: 0xDA,	#  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042B: 0xDB,	#  CYRILLIC CAPITAL LETTER YERU
-    0x042C: 0xDC,	#  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042D: 0xDD,	#  CYRILLIC CAPITAL LETTER E
-    0x042E: 0xDE,	#  CYRILLIC CAPITAL LETTER YU
-    0x042F: 0xDF,	#  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xE0,	#  CYRILLIC SMALL LETTER A
-    0x0431: 0xE1,	#  CYRILLIC SMALL LETTER BE
-    0x0432: 0xE2,	#  CYRILLIC SMALL LETTER VE
-    0x0433: 0xE3,	#  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xE4,	#  CYRILLIC SMALL LETTER DE
-    0x0435: 0xE5,	#  CYRILLIC SMALL LETTER IE
-    0x0436: 0xE6,	#  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xE7,	#  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xE8,	#  CYRILLIC SMALL LETTER I
-    0x0439: 0xE9,	#  CYRILLIC SMALL LETTER SHORT I
-    0x043A: 0xEA,	#  CYRILLIC SMALL LETTER KA
-    0x043B: 0xEB,	#  CYRILLIC SMALL LETTER EL
-    0x043C: 0xEC,	#  CYRILLIC SMALL LETTER EM
-    0x043D: 0xED,	#  CYRILLIC SMALL LETTER EN
-    0x043E: 0xEE,	#  CYRILLIC SMALL LETTER O
-    0x043F: 0xEF,	#  CYRILLIC SMALL LETTER PE
-    0x0440: 0xF0,	#  CYRILLIC SMALL LETTER ER
-    0x0441: 0xF1,	#  CYRILLIC SMALL LETTER ES
-    0x0442: 0xF2,	#  CYRILLIC SMALL LETTER TE
-    0x0443: 0xF3,	#  CYRILLIC SMALL LETTER U
-    0x0444: 0xF4,	#  CYRILLIC SMALL LETTER EF
-    0x0445: 0xF5,	#  CYRILLIC SMALL LETTER HA
-    0x0446: 0xF6,	#  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xF7,	#  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xF8,	#  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xF9,	#  CYRILLIC SMALL LETTER SHCHA
-    0x044A: 0xFA,	#  CYRILLIC SMALL LETTER HARD SIGN
-    0x044B: 0xFB,	#  CYRILLIC SMALL LETTER YERU
-    0x044C: 0xFC,	#  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044D: 0xFD,	#  CYRILLIC SMALL LETTER E
-    0x044E: 0xFE,	#  CYRILLIC SMALL LETTER YU
-    0x044F: 0xFF,	#  CYRILLIC SMALL LETTER YA
-    0x0451: 0xB8,	#  CYRILLIC SMALL LETTER IO
-    0x0452: 0x90,	#  CYRILLIC SMALL LETTER DJE
-    0x0453: 0x83,	#  CYRILLIC SMALL LETTER GJE
-    0x0454: 0xBA,	#  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0455: 0xBE,	#  CYRILLIC SMALL LETTER DZE
-    0x0456: 0xB3,	#  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0xBF,	#  CYRILLIC SMALL LETTER YI
-    0x0458: 0xBC,	#  CYRILLIC SMALL LETTER JE
-    0x0459: 0x9A,	#  CYRILLIC SMALL LETTER LJE
-    0x045A: 0x9C,	#  CYRILLIC SMALL LETTER NJE
-    0x045B: 0x9E,	#  CYRILLIC SMALL LETTER TSHE
-    0x045C: 0x9D,	#  CYRILLIC SMALL LETTER KJE
-    0x045E: 0xA2,	#  CYRILLIC SMALL LETTER SHORT U
-    0x045F: 0x9F,	#  CYRILLIC SMALL LETTER DZHE
-    0x0490: 0xA5,	#  CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    0x0491: 0xB4,	#  CYRILLIC SMALL LETTER GHE WITH UPTURN
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0x82,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0x84,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0x86,	#  DAGGER
-    0x2021: 0x87,	#  DOUBLE DAGGER
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x89,	#  PER MILLE SIGN
-    0x2039: 0x8B,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0x9B,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC: 0x88,	#  EURO SIGN
-    0x2116: 0xB9,	#  NUMERO SIGN
-    0x2122: 0x99,	#  TRADE MARK SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x0401: 0xA8,       #  CYRILLIC CAPITAL LETTER IO
+    0x0402: 0x80,       #  CYRILLIC CAPITAL LETTER DJE
+    0x0403: 0x81,       #  CYRILLIC CAPITAL LETTER GJE
+    0x0404: 0xAA,       #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0405: 0xBD,       #  CYRILLIC CAPITAL LETTER DZE
+    0x0406: 0xB2,       #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0407: 0xAF,       #  CYRILLIC CAPITAL LETTER YI
+    0x0408: 0xA3,       #  CYRILLIC CAPITAL LETTER JE
+    0x0409: 0x8A,       #  CYRILLIC CAPITAL LETTER LJE
+    0x040A: 0x8C,       #  CYRILLIC CAPITAL LETTER NJE
+    0x040B: 0x8E,       #  CYRILLIC CAPITAL LETTER TSHE
+    0x040C: 0x8D,       #  CYRILLIC CAPITAL LETTER KJE
+    0x040E: 0xA1,       #  CYRILLIC CAPITAL LETTER SHORT U
+    0x040F: 0x8F,       #  CYRILLIC CAPITAL LETTER DZHE
+    0x0410: 0xC0,       #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0xC1,       #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0xC2,       #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0xC3,       #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0xC4,       #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0xC5,       #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0xC6,       #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0xC7,       #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0xC8,       #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0xC9,       #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041A: 0xCA,       #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0xCB,       #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0xCC,       #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0xCD,       #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0xCE,       #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0xCF,       #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0xD0,       #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0xD1,       #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0xD2,       #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0xD3,       #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0xD4,       #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0xD5,       #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0xD6,       #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0xD7,       #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0xD8,       #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0xD9,       #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042A: 0xDA,       #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0xDB,       #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0xDC,       #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0xDD,       #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0xDE,       #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0xDF,       #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xE0,       #  CYRILLIC SMALL LETTER A
+    0x0431: 0xE1,       #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xE2,       #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xE3,       #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xE4,       #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xE5,       #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xE6,       #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xE7,       #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xE8,       #  CYRILLIC SMALL LETTER I
+    0x0439: 0xE9,       #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xEA,       #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xEB,       #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xEC,       #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xED,       #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xEE,       #  CYRILLIC SMALL LETTER O
+    0x043F: 0xEF,       #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xF0,       #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xF1,       #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xF2,       #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xF3,       #  CYRILLIC SMALL LETTER U
+    0x0444: 0xF4,       #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xF5,       #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xF6,       #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xF7,       #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xF8,       #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xF9,       #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xFA,       #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xFB,       #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xFC,       #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xFD,       #  CYRILLIC SMALL LETTER E
+    0x044E: 0xFE,       #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xFF,       #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xB8,       #  CYRILLIC SMALL LETTER IO
+    0x0452: 0x90,       #  CYRILLIC SMALL LETTER DJE
+    0x0453: 0x83,       #  CYRILLIC SMALL LETTER GJE
+    0x0454: 0xBA,       #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0455: 0xBE,       #  CYRILLIC SMALL LETTER DZE
+    0x0456: 0xB3,       #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0457: 0xBF,       #  CYRILLIC SMALL LETTER YI
+    0x0458: 0xBC,       #  CYRILLIC SMALL LETTER JE
+    0x0459: 0x9A,       #  CYRILLIC SMALL LETTER LJE
+    0x045A: 0x9C,       #  CYRILLIC SMALL LETTER NJE
+    0x045B: 0x9E,       #  CYRILLIC SMALL LETTER TSHE
+    0x045C: 0x9D,       #  CYRILLIC SMALL LETTER KJE
+    0x045E: 0xA2,       #  CYRILLIC SMALL LETTER SHORT U
+    0x045F: 0x9F,       #  CYRILLIC SMALL LETTER DZHE
+    0x0490: 0xA5,       #  CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+    0x0491: 0xB4,       #  CYRILLIC SMALL LETTER GHE WITH UPTURN
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0x82,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0x86,       #  DAGGER
+    0x2021: 0x87,       #  DOUBLE DAGGER
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x89,       #  PER MILLE SIGN
+    0x2039: 0x8B,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x88,       #  EURO SIGN
+    0x2116: 0xB9,       #  NUMERO SIGN
+    0x2122: 0x99,       #  TRADE MARK SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp1252.py
==============================================================================
--- python/trunk/Lib/encodings/cp1252.py	(original)
+++ python/trunk/Lib/encodings/cp1252.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,517 +32,516 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u20ac'	#  0x80 -> EURO SIGN
-    u'\ufffe'	#  0x81 -> UNDEFINED
-    u'\u201a'	#  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'	#  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'	#  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'	#  0x86 -> DAGGER
-    u'\u2021'	#  0x87 -> DOUBLE DAGGER
-    u'\u02c6'	#  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'	#  0x89 -> PER MILLE SIGN
-    u'\u0160'	#  0x8A -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2039'	#  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'	#  0x8C -> LATIN CAPITAL LIGATURE OE
-    u'\ufffe'	#  0x8D -> UNDEFINED
-    u'\u017d'	#  0x8E -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\ufffe'	#  0x8F -> UNDEFINED
-    u'\ufffe'	#  0x90 -> UNDEFINED
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\u02dc'	#  0x98 -> SMALL TILDE
-    u'\u2122'	#  0x99 -> TRADE MARK SIGN
-    u'\u0161'	#  0x9A -> LATIN SMALL LETTER S WITH CARON
-    u'\u203a'	#  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'	#  0x9C -> LATIN SMALL LIGATURE OE
-    u'\ufffe'	#  0x9D -> UNDEFINED
-    u'\u017e'	#  0x9E -> LATIN SMALL LETTER Z WITH CARON
-    u'\u0178'	#  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\xa1'	#  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'	#  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'	#  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'	#  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'	#  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'	#  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'	#  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'	#  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'	#  0xD0 -> LATIN CAPITAL LETTER ETH
-    u'\xd1'	#  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'	#  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'	#  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'	#  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'	#  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'	#  0xDE -> LATIN CAPITAL LETTER THORN
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'	#  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'	#  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'	#  0xF0 -> LATIN SMALL LETTER ETH
-    u'\xf1'	#  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'	#  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\xf8'	#  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'	#  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'	#  0xFE -> LATIN SMALL LETTER THORN
-    u'\xff'	#  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u20ac'   #  0x80 -> EURO SIGN
+    u'\ufffe'   #  0x81 -> UNDEFINED
+    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\u2020'   #  0x86 -> DAGGER
+    u'\u2021'   #  0x87 -> DOUBLE DAGGER
+    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u2030'   #  0x89 -> PER MILLE SIGN
+    u'\u0160'   #  0x8A -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u0152'   #  0x8C -> LATIN CAPITAL LIGATURE OE
+    u'\ufffe'   #  0x8D -> UNDEFINED
+    u'\u017d'   #  0x8E -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\ufffe'   #  0x8F -> UNDEFINED
+    u'\ufffe'   #  0x90 -> UNDEFINED
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\u02dc'   #  0x98 -> SMALL TILDE
+    u'\u2122'   #  0x99 -> TRADE MARK SIGN
+    u'\u0161'   #  0x9A -> LATIN SMALL LETTER S WITH CARON
+    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0153'   #  0x9C -> LATIN SMALL LIGATURE OE
+    u'\ufffe'   #  0x9D -> UNDEFINED
+    u'\u017e'   #  0x9E -> LATIN SMALL LETTER Z WITH CARON
+    u'\u0178'   #  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xd0'     #  0xD0 -> LATIN CAPITAL LETTER ETH
+    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf0'     #  0xF0 -> LATIN SMALL LETTER ETH
+    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'     #  0xFE -> LATIN SMALL LETTER THORN
+    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A1: 0xA1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xAA,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BA: 0xBA,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xBF,	#  INVERTED QUESTION MARK
-    0x00C0: 0xC0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xC3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xC8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xCA,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xCC,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D0: 0xD0,	#  LATIN CAPITAL LETTER ETH
-    0x00D1: 0xD1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xD2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D8: 0xD8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xD9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xDD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DE: 0xDE,	#  LATIN CAPITAL LETTER THORN
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0xE3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0xEC,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F0: 0xF0,	#  LATIN SMALL LETTER ETH
-    0x00F1: 0xF1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xF2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F8: 0xF8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0xFD,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00FE: 0xFE,	#  LATIN SMALL LETTER THORN
-    0x00FF: 0xFF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0152: 0x8C,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0x9C,	#  LATIN SMALL LIGATURE OE
-    0x0160: 0x8A,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x9A,	#  LATIN SMALL LETTER S WITH CARON
-    0x0178: 0x9F,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x017D: 0x8E,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0x9E,	#  LATIN SMALL LETTER Z WITH CARON
-    0x0192: 0x83,	#  LATIN SMALL LETTER F WITH HOOK
-    0x02C6: 0x88,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02DC: 0x98,	#  SMALL TILDE
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0x82,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0x84,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0x86,	#  DAGGER
-    0x2021: 0x87,	#  DOUBLE DAGGER
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x89,	#  PER MILLE SIGN
-    0x2039: 0x8B,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0x9B,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC: 0x80,	#  EURO SIGN
-    0x2122: 0x99,	#  TRADE MARK SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A1: 0xA1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xAA,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,       #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xD0,       #  LATIN CAPITAL LETTER ETH
+    0x00D1: 0xD1,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,       #  LATIN CAPITAL LETTER THORN
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xF0,       #  LATIN SMALL LETTER ETH
+    0x00F1: 0xF1,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F8: 0xF8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xFE,       #  LATIN SMALL LETTER THORN
+    0x00FF: 0xFF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0152: 0x8C,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0x9C,       #  LATIN SMALL LIGATURE OE
+    0x0160: 0x8A,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0x9A,       #  LATIN SMALL LETTER S WITH CARON
+    0x0178: 0x9F,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x017D: 0x8E,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0x9E,       #  LATIN SMALL LETTER Z WITH CARON
+    0x0192: 0x83,       #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0x88,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02DC: 0x98,       #  SMALL TILDE
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0x82,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0x86,       #  DAGGER
+    0x2021: 0x87,       #  DOUBLE DAGGER
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x89,       #  PER MILLE SIGN
+    0x2039: 0x8B,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,       #  EURO SIGN
+    0x2122: 0x99,       #  TRADE MARK SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp1253.py
==============================================================================
--- python/trunk/Lib/encodings/cp1253.py	(original)
+++ python/trunk/Lib/encodings/cp1253.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,505 +32,504 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u20ac'	#  0x80 -> EURO SIGN
-    u'\ufffe'	#  0x81 -> UNDEFINED
-    u'\u201a'	#  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'	#  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'	#  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'	#  0x86 -> DAGGER
-    u'\u2021'	#  0x87 -> DOUBLE DAGGER
-    u'\ufffe'	#  0x88 -> UNDEFINED
-    u'\u2030'	#  0x89 -> PER MILLE SIGN
-    u'\ufffe'	#  0x8A -> UNDEFINED
-    u'\u2039'	#  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'	#  0x8C -> UNDEFINED
-    u'\ufffe'	#  0x8D -> UNDEFINED
-    u'\ufffe'	#  0x8E -> UNDEFINED
-    u'\ufffe'	#  0x8F -> UNDEFINED
-    u'\ufffe'	#  0x90 -> UNDEFINED
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\ufffe'	#  0x98 -> UNDEFINED
-    u'\u2122'	#  0x99 -> TRADE MARK SIGN
-    u'\ufffe'	#  0x9A -> UNDEFINED
-    u'\u203a'	#  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'	#  0x9C -> UNDEFINED
-    u'\ufffe'	#  0x9D -> UNDEFINED
-    u'\ufffe'	#  0x9E -> UNDEFINED
-    u'\ufffe'	#  0x9F -> UNDEFINED
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u0385'	#  0xA1 -> GREEK DIALYTIKA TONOS
-    u'\u0386'	#  0xA2 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\ufffe'	#  0xAA -> UNDEFINED
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\u2015'	#  0xAF -> HORIZONTAL BAR
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\u0384'	#  0xB4 -> GREEK TONOS
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\u0388'	#  0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'	#  0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'	#  0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u038c'	#  0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\u038e'	#  0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'	#  0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\u0390'	#  0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u0391'	#  0xC1 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'	#  0xC2 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'	#  0xC3 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'	#  0xC4 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'	#  0xC5 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'	#  0xC6 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'	#  0xC7 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'	#  0xC8 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'	#  0xC9 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'	#  0xCA -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'	#  0xCB -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'	#  0xCC -> GREEK CAPITAL LETTER MU
-    u'\u039d'	#  0xCD -> GREEK CAPITAL LETTER NU
-    u'\u039e'	#  0xCE -> GREEK CAPITAL LETTER XI
-    u'\u039f'	#  0xCF -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'	#  0xD0 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'	#  0xD1 -> GREEK CAPITAL LETTER RHO
-    u'\ufffe'	#  0xD2 -> UNDEFINED
-    u'\u03a3'	#  0xD3 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'	#  0xD4 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'	#  0xD5 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'	#  0xD6 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'	#  0xD7 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'	#  0xD8 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'	#  0xD9 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03aa'	#  0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'	#  0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ac'	#  0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'	#  0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'	#  0xDE -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'	#  0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03b0'	#  0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u03b1'	#  0xE1 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'	#  0xE2 -> GREEK SMALL LETTER BETA
-    u'\u03b3'	#  0xE3 -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'	#  0xE4 -> GREEK SMALL LETTER DELTA
-    u'\u03b5'	#  0xE5 -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'	#  0xE6 -> GREEK SMALL LETTER ZETA
-    u'\u03b7'	#  0xE7 -> GREEK SMALL LETTER ETA
-    u'\u03b8'	#  0xE8 -> GREEK SMALL LETTER THETA
-    u'\u03b9'	#  0xE9 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'	#  0xEA -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'	#  0xEB -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'	#  0xEC -> GREEK SMALL LETTER MU
-    u'\u03bd'	#  0xED -> GREEK SMALL LETTER NU
-    u'\u03be'	#  0xEE -> GREEK SMALL LETTER XI
-    u'\u03bf'	#  0xEF -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'	#  0xF0 -> GREEK SMALL LETTER PI
-    u'\u03c1'	#  0xF1 -> GREEK SMALL LETTER RHO
-    u'\u03c2'	#  0xF2 -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c3'	#  0xF3 -> GREEK SMALL LETTER SIGMA
-    u'\u03c4'	#  0xF4 -> GREEK SMALL LETTER TAU
-    u'\u03c5'	#  0xF5 -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'	#  0xF6 -> GREEK SMALL LETTER PHI
-    u'\u03c7'	#  0xF7 -> GREEK SMALL LETTER CHI
-    u'\u03c8'	#  0xF8 -> GREEK SMALL LETTER PSI
-    u'\u03c9'	#  0xF9 -> GREEK SMALL LETTER OMEGA
-    u'\u03ca'	#  0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03cb'	#  0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03cc'	#  0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'	#  0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03ce'	#  0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\ufffe'	#  0xFF -> UNDEFINED
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u20ac'   #  0x80 -> EURO SIGN
+    u'\ufffe'   #  0x81 -> UNDEFINED
+    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\u2020'   #  0x86 -> DAGGER
+    u'\u2021'   #  0x87 -> DOUBLE DAGGER
+    u'\ufffe'   #  0x88 -> UNDEFINED
+    u'\u2030'   #  0x89 -> PER MILLE SIGN
+    u'\ufffe'   #  0x8A -> UNDEFINED
+    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'   #  0x8C -> UNDEFINED
+    u'\ufffe'   #  0x8D -> UNDEFINED
+    u'\ufffe'   #  0x8E -> UNDEFINED
+    u'\ufffe'   #  0x8F -> UNDEFINED
+    u'\ufffe'   #  0x90 -> UNDEFINED
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\ufffe'   #  0x98 -> UNDEFINED
+    u'\u2122'   #  0x99 -> TRADE MARK SIGN
+    u'\ufffe'   #  0x9A -> UNDEFINED
+    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'   #  0x9C -> UNDEFINED
+    u'\ufffe'   #  0x9D -> UNDEFINED
+    u'\ufffe'   #  0x9E -> UNDEFINED
+    u'\ufffe'   #  0x9F -> UNDEFINED
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u0385'   #  0xA1 -> GREEK DIALYTIKA TONOS
+    u'\u0386'   #  0xA2 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\ufffe'   #  0xAA -> UNDEFINED
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\u2015'   #  0xAF -> HORIZONTAL BAR
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\u0384'   #  0xB4 -> GREEK TONOS
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\u0388'   #  0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
+    u'\u0389'   #  0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
+    u'\u038a'   #  0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u038c'   #  0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\u038e'   #  0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
+    u'\u038f'   #  0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
+    u'\u0390'   #  0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    u'\u0391'   #  0xC1 -> GREEK CAPITAL LETTER ALPHA
+    u'\u0392'   #  0xC2 -> GREEK CAPITAL LETTER BETA
+    u'\u0393'   #  0xC3 -> GREEK CAPITAL LETTER GAMMA
+    u'\u0394'   #  0xC4 -> GREEK CAPITAL LETTER DELTA
+    u'\u0395'   #  0xC5 -> GREEK CAPITAL LETTER EPSILON
+    u'\u0396'   #  0xC6 -> GREEK CAPITAL LETTER ZETA
+    u'\u0397'   #  0xC7 -> GREEK CAPITAL LETTER ETA
+    u'\u0398'   #  0xC8 -> GREEK CAPITAL LETTER THETA
+    u'\u0399'   #  0xC9 -> GREEK CAPITAL LETTER IOTA
+    u'\u039a'   #  0xCA -> GREEK CAPITAL LETTER KAPPA
+    u'\u039b'   #  0xCB -> GREEK CAPITAL LETTER LAMDA
+    u'\u039c'   #  0xCC -> GREEK CAPITAL LETTER MU
+    u'\u039d'   #  0xCD -> GREEK CAPITAL LETTER NU
+    u'\u039e'   #  0xCE -> GREEK CAPITAL LETTER XI
+    u'\u039f'   #  0xCF -> GREEK CAPITAL LETTER OMICRON
+    u'\u03a0'   #  0xD0 -> GREEK CAPITAL LETTER PI
+    u'\u03a1'   #  0xD1 -> GREEK CAPITAL LETTER RHO
+    u'\ufffe'   #  0xD2 -> UNDEFINED
+    u'\u03a3'   #  0xD3 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03a4'   #  0xD4 -> GREEK CAPITAL LETTER TAU
+    u'\u03a5'   #  0xD5 -> GREEK CAPITAL LETTER UPSILON
+    u'\u03a6'   #  0xD6 -> GREEK CAPITAL LETTER PHI
+    u'\u03a7'   #  0xD7 -> GREEK CAPITAL LETTER CHI
+    u'\u03a8'   #  0xD8 -> GREEK CAPITAL LETTER PSI
+    u'\u03a9'   #  0xD9 -> GREEK CAPITAL LETTER OMEGA
+    u'\u03aa'   #  0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    u'\u03ab'   #  0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    u'\u03ac'   #  0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\u03ad'   #  0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'   #  0xDE -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03af'   #  0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03b0'   #  0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    u'\u03b1'   #  0xE1 -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'   #  0xE2 -> GREEK SMALL LETTER BETA
+    u'\u03b3'   #  0xE3 -> GREEK SMALL LETTER GAMMA
+    u'\u03b4'   #  0xE4 -> GREEK SMALL LETTER DELTA
+    u'\u03b5'   #  0xE5 -> GREEK SMALL LETTER EPSILON
+    u'\u03b6'   #  0xE6 -> GREEK SMALL LETTER ZETA
+    u'\u03b7'   #  0xE7 -> GREEK SMALL LETTER ETA
+    u'\u03b8'   #  0xE8 -> GREEK SMALL LETTER THETA
+    u'\u03b9'   #  0xE9 -> GREEK SMALL LETTER IOTA
+    u'\u03ba'   #  0xEA -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'   #  0xEB -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'   #  0xEC -> GREEK SMALL LETTER MU
+    u'\u03bd'   #  0xED -> GREEK SMALL LETTER NU
+    u'\u03be'   #  0xEE -> GREEK SMALL LETTER XI
+    u'\u03bf'   #  0xEF -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'   #  0xF0 -> GREEK SMALL LETTER PI
+    u'\u03c1'   #  0xF1 -> GREEK SMALL LETTER RHO
+    u'\u03c2'   #  0xF2 -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c3'   #  0xF3 -> GREEK SMALL LETTER SIGMA
+    u'\u03c4'   #  0xF4 -> GREEK SMALL LETTER TAU
+    u'\u03c5'   #  0xF5 -> GREEK SMALL LETTER UPSILON
+    u'\u03c6'   #  0xF6 -> GREEK SMALL LETTER PHI
+    u'\u03c7'   #  0xF7 -> GREEK SMALL LETTER CHI
+    u'\u03c8'   #  0xF8 -> GREEK SMALL LETTER PSI
+    u'\u03c9'   #  0xF9 -> GREEK SMALL LETTER OMEGA
+    u'\u03ca'   #  0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u03cb'   #  0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u03cc'   #  0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u03cd'   #  0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u03ce'   #  0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\ufffe'   #  0xFF -> UNDEFINED
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x0192: 0x83,	#  LATIN SMALL LETTER F WITH HOOK
-    0x0384: 0xB4,	#  GREEK TONOS
-    0x0385: 0xA1,	#  GREEK DIALYTIKA TONOS
-    0x0386: 0xA2,	#  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0xB8,	#  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0xB9,	#  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038A: 0xBA,	#  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038C: 0xBC,	#  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038E: 0xBE,	#  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038F: 0xBF,	#  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0xC0,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x0391: 0xC1,	#  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0xC2,	#  GREEK CAPITAL LETTER BETA
-    0x0393: 0xC3,	#  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0xC4,	#  GREEK CAPITAL LETTER DELTA
-    0x0395: 0xC5,	#  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0xC6,	#  GREEK CAPITAL LETTER ZETA
-    0x0397: 0xC7,	#  GREEK CAPITAL LETTER ETA
-    0x0398: 0xC8,	#  GREEK CAPITAL LETTER THETA
-    0x0399: 0xC9,	#  GREEK CAPITAL LETTER IOTA
-    0x039A: 0xCA,	#  GREEK CAPITAL LETTER KAPPA
-    0x039B: 0xCB,	#  GREEK CAPITAL LETTER LAMDA
-    0x039C: 0xCC,	#  GREEK CAPITAL LETTER MU
-    0x039D: 0xCD,	#  GREEK CAPITAL LETTER NU
-    0x039E: 0xCE,	#  GREEK CAPITAL LETTER XI
-    0x039F: 0xCF,	#  GREEK CAPITAL LETTER OMICRON
-    0x03A0: 0xD0,	#  GREEK CAPITAL LETTER PI
-    0x03A1: 0xD1,	#  GREEK CAPITAL LETTER RHO
-    0x03A3: 0xD3,	#  GREEK CAPITAL LETTER SIGMA
-    0x03A4: 0xD4,	#  GREEK CAPITAL LETTER TAU
-    0x03A5: 0xD5,	#  GREEK CAPITAL LETTER UPSILON
-    0x03A6: 0xD6,	#  GREEK CAPITAL LETTER PHI
-    0x03A7: 0xD7,	#  GREEK CAPITAL LETTER CHI
-    0x03A8: 0xD8,	#  GREEK CAPITAL LETTER PSI
-    0x03A9: 0xD9,	#  GREEK CAPITAL LETTER OMEGA
-    0x03AA: 0xDA,	#  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03AB: 0xDB,	#  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03AC: 0xDC,	#  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03AD: 0xDD,	#  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03AE: 0xDE,	#  GREEK SMALL LETTER ETA WITH TONOS
-    0x03AF: 0xDF,	#  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03B0: 0xE0,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03B1: 0xE1,	#  GREEK SMALL LETTER ALPHA
-    0x03B2: 0xE2,	#  GREEK SMALL LETTER BETA
-    0x03B3: 0xE3,	#  GREEK SMALL LETTER GAMMA
-    0x03B4: 0xE4,	#  GREEK SMALL LETTER DELTA
-    0x03B5: 0xE5,	#  GREEK SMALL LETTER EPSILON
-    0x03B6: 0xE6,	#  GREEK SMALL LETTER ZETA
-    0x03B7: 0xE7,	#  GREEK SMALL LETTER ETA
-    0x03B8: 0xE8,	#  GREEK SMALL LETTER THETA
-    0x03B9: 0xE9,	#  GREEK SMALL LETTER IOTA
-    0x03BA: 0xEA,	#  GREEK SMALL LETTER KAPPA
-    0x03BB: 0xEB,	#  GREEK SMALL LETTER LAMDA
-    0x03BC: 0xEC,	#  GREEK SMALL LETTER MU
-    0x03BD: 0xED,	#  GREEK SMALL LETTER NU
-    0x03BE: 0xEE,	#  GREEK SMALL LETTER XI
-    0x03BF: 0xEF,	#  GREEK SMALL LETTER OMICRON
-    0x03C0: 0xF0,	#  GREEK SMALL LETTER PI
-    0x03C1: 0xF1,	#  GREEK SMALL LETTER RHO
-    0x03C2: 0xF2,	#  GREEK SMALL LETTER FINAL SIGMA
-    0x03C3: 0xF3,	#  GREEK SMALL LETTER SIGMA
-    0x03C4: 0xF4,	#  GREEK SMALL LETTER TAU
-    0x03C5: 0xF5,	#  GREEK SMALL LETTER UPSILON
-    0x03C6: 0xF6,	#  GREEK SMALL LETTER PHI
-    0x03C7: 0xF7,	#  GREEK SMALL LETTER CHI
-    0x03C8: 0xF8,	#  GREEK SMALL LETTER PSI
-    0x03C9: 0xF9,	#  GREEK SMALL LETTER OMEGA
-    0x03CA: 0xFA,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03CB: 0xFB,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03CC: 0xFC,	#  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03CD: 0xFD,	#  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03CE: 0xFE,	#  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2015: 0xAF,	#  HORIZONTAL BAR
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0x82,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0x84,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0x86,	#  DAGGER
-    0x2021: 0x87,	#  DOUBLE DAGGER
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x89,	#  PER MILLE SIGN
-    0x2039: 0x8B,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0x9B,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC: 0x80,	#  EURO SIGN
-    0x2122: 0x99,	#  TRADE MARK SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x0192: 0x83,       #  LATIN SMALL LETTER F WITH HOOK
+    0x0384: 0xB4,       #  GREEK TONOS
+    0x0385: 0xA1,       #  GREEK DIALYTIKA TONOS
+    0x0386: 0xA2,       #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0388: 0xB8,       #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x0389: 0xB9,       #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x038A: 0xBA,       #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038C: 0xBC,       #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038E: 0xBE,       #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038F: 0xBF,       #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0390: 0xC0,       #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x0391: 0xC1,       #  GREEK CAPITAL LETTER ALPHA
+    0x0392: 0xC2,       #  GREEK CAPITAL LETTER BETA
+    0x0393: 0xC3,       #  GREEK CAPITAL LETTER GAMMA
+    0x0394: 0xC4,       #  GREEK CAPITAL LETTER DELTA
+    0x0395: 0xC5,       #  GREEK CAPITAL LETTER EPSILON
+    0x0396: 0xC6,       #  GREEK CAPITAL LETTER ZETA
+    0x0397: 0xC7,       #  GREEK CAPITAL LETTER ETA
+    0x0398: 0xC8,       #  GREEK CAPITAL LETTER THETA
+    0x0399: 0xC9,       #  GREEK CAPITAL LETTER IOTA
+    0x039A: 0xCA,       #  GREEK CAPITAL LETTER KAPPA
+    0x039B: 0xCB,       #  GREEK CAPITAL LETTER LAMDA
+    0x039C: 0xCC,       #  GREEK CAPITAL LETTER MU
+    0x039D: 0xCD,       #  GREEK CAPITAL LETTER NU
+    0x039E: 0xCE,       #  GREEK CAPITAL LETTER XI
+    0x039F: 0xCF,       #  GREEK CAPITAL LETTER OMICRON
+    0x03A0: 0xD0,       #  GREEK CAPITAL LETTER PI
+    0x03A1: 0xD1,       #  GREEK CAPITAL LETTER RHO
+    0x03A3: 0xD3,       #  GREEK CAPITAL LETTER SIGMA
+    0x03A4: 0xD4,       #  GREEK CAPITAL LETTER TAU
+    0x03A5: 0xD5,       #  GREEK CAPITAL LETTER UPSILON
+    0x03A6: 0xD6,       #  GREEK CAPITAL LETTER PHI
+    0x03A7: 0xD7,       #  GREEK CAPITAL LETTER CHI
+    0x03A8: 0xD8,       #  GREEK CAPITAL LETTER PSI
+    0x03A9: 0xD9,       #  GREEK CAPITAL LETTER OMEGA
+    0x03AA: 0xDA,       #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03AB: 0xDB,       #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03AC: 0xDC,       #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03AD: 0xDD,       #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03AE: 0xDE,       #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03AF: 0xDF,       #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03B0: 0xE0,       #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x03B1: 0xE1,       #  GREEK SMALL LETTER ALPHA
+    0x03B2: 0xE2,       #  GREEK SMALL LETTER BETA
+    0x03B3: 0xE3,       #  GREEK SMALL LETTER GAMMA
+    0x03B4: 0xE4,       #  GREEK SMALL LETTER DELTA
+    0x03B5: 0xE5,       #  GREEK SMALL LETTER EPSILON
+    0x03B6: 0xE6,       #  GREEK SMALL LETTER ZETA
+    0x03B7: 0xE7,       #  GREEK SMALL LETTER ETA
+    0x03B8: 0xE8,       #  GREEK SMALL LETTER THETA
+    0x03B9: 0xE9,       #  GREEK SMALL LETTER IOTA
+    0x03BA: 0xEA,       #  GREEK SMALL LETTER KAPPA
+    0x03BB: 0xEB,       #  GREEK SMALL LETTER LAMDA
+    0x03BC: 0xEC,       #  GREEK SMALL LETTER MU
+    0x03BD: 0xED,       #  GREEK SMALL LETTER NU
+    0x03BE: 0xEE,       #  GREEK SMALL LETTER XI
+    0x03BF: 0xEF,       #  GREEK SMALL LETTER OMICRON
+    0x03C0: 0xF0,       #  GREEK SMALL LETTER PI
+    0x03C1: 0xF1,       #  GREEK SMALL LETTER RHO
+    0x03C2: 0xF2,       #  GREEK SMALL LETTER FINAL SIGMA
+    0x03C3: 0xF3,       #  GREEK SMALL LETTER SIGMA
+    0x03C4: 0xF4,       #  GREEK SMALL LETTER TAU
+    0x03C5: 0xF5,       #  GREEK SMALL LETTER UPSILON
+    0x03C6: 0xF6,       #  GREEK SMALL LETTER PHI
+    0x03C7: 0xF7,       #  GREEK SMALL LETTER CHI
+    0x03C8: 0xF8,       #  GREEK SMALL LETTER PSI
+    0x03C9: 0xF9,       #  GREEK SMALL LETTER OMEGA
+    0x03CA: 0xFA,       #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03CB: 0xFB,       #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03CC: 0xFC,       #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03CD: 0xFD,       #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03CE: 0xFE,       #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2015: 0xAF,       #  HORIZONTAL BAR
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0x82,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0x86,       #  DAGGER
+    0x2021: 0x87,       #  DOUBLE DAGGER
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x89,       #  PER MILLE SIGN
+    0x2039: 0x8B,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,       #  EURO SIGN
+    0x2122: 0x99,       #  TRADE MARK SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp1254.py
==============================================================================
--- python/trunk/Lib/encodings/cp1254.py	(original)
+++ python/trunk/Lib/encodings/cp1254.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,515 +32,514 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u20ac'	#  0x80 -> EURO SIGN
-    u'\ufffe'	#  0x81 -> UNDEFINED
-    u'\u201a'	#  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'	#  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'	#  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'	#  0x86 -> DAGGER
-    u'\u2021'	#  0x87 -> DOUBLE DAGGER
-    u'\u02c6'	#  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'	#  0x89 -> PER MILLE SIGN
-    u'\u0160'	#  0x8A -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2039'	#  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'	#  0x8C -> LATIN CAPITAL LIGATURE OE
-    u'\ufffe'	#  0x8D -> UNDEFINED
-    u'\ufffe'	#  0x8E -> UNDEFINED
-    u'\ufffe'	#  0x8F -> UNDEFINED
-    u'\ufffe'	#  0x90 -> UNDEFINED
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\u02dc'	#  0x98 -> SMALL TILDE
-    u'\u2122'	#  0x99 -> TRADE MARK SIGN
-    u'\u0161'	#  0x9A -> LATIN SMALL LETTER S WITH CARON
-    u'\u203a'	#  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'	#  0x9C -> LATIN SMALL LIGATURE OE
-    u'\ufffe'	#  0x9D -> UNDEFINED
-    u'\ufffe'	#  0x9E -> UNDEFINED
-    u'\u0178'	#  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\xa1'	#  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'	#  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'	#  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'	#  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'	#  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'	#  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'	#  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'	#  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u011e'	#  0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\xd1'	#  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'	#  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'	#  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'	#  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0130'	#  0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u015e'	#  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'	#  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'	#  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u011f'	#  0xF0 -> LATIN SMALL LETTER G WITH BREVE
-    u'\xf1'	#  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'	#  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\xf8'	#  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0131'	#  0xFD -> LATIN SMALL LETTER DOTLESS I
-    u'\u015f'	#  0xFE -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xff'	#  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u20ac'   #  0x80 -> EURO SIGN
+    u'\ufffe'   #  0x81 -> UNDEFINED
+    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\u2020'   #  0x86 -> DAGGER
+    u'\u2021'   #  0x87 -> DOUBLE DAGGER
+    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u2030'   #  0x89 -> PER MILLE SIGN
+    u'\u0160'   #  0x8A -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u0152'   #  0x8C -> LATIN CAPITAL LIGATURE OE
+    u'\ufffe'   #  0x8D -> UNDEFINED
+    u'\ufffe'   #  0x8E -> UNDEFINED
+    u'\ufffe'   #  0x8F -> UNDEFINED
+    u'\ufffe'   #  0x90 -> UNDEFINED
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\u02dc'   #  0x98 -> SMALL TILDE
+    u'\u2122'   #  0x99 -> TRADE MARK SIGN
+    u'\u0161'   #  0x9A -> LATIN SMALL LETTER S WITH CARON
+    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0153'   #  0x9C -> LATIN SMALL LIGATURE OE
+    u'\ufffe'   #  0x9D -> UNDEFINED
+    u'\ufffe'   #  0x9E -> UNDEFINED
+    u'\u0178'   #  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u011e'   #  0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0130'   #  0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'\u015e'   #  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u011f'   #  0xF0 -> LATIN SMALL LETTER G WITH BREVE
+    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u0131'   #  0xFD -> LATIN SMALL LETTER DOTLESS I
+    u'\u015f'   #  0xFE -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A1: 0xA1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xAA,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BA: 0xBA,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xBF,	#  INVERTED QUESTION MARK
-    0x00C0: 0xC0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xC3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xC8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xCA,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xCC,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0xD1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xD2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D8: 0xD8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xD9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0xE3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0xEC,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0xF1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xF2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F8: 0xF8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FF: 0xFF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011E: 0xD0,	#  LATIN CAPITAL LETTER G WITH BREVE
-    0x011F: 0xF0,	#  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0xDD,	#  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0xFD,	#  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0x8C,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0x9C,	#  LATIN SMALL LIGATURE OE
-    0x015E: 0xDE,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015F: 0xFE,	#  LATIN SMALL LETTER S WITH CEDILLA
-    0x0160: 0x8A,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x9A,	#  LATIN SMALL LETTER S WITH CARON
-    0x0178: 0x9F,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0x83,	#  LATIN SMALL LETTER F WITH HOOK
-    0x02C6: 0x88,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02DC: 0x98,	#  SMALL TILDE
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0x82,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0x84,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0x86,	#  DAGGER
-    0x2021: 0x87,	#  DOUBLE DAGGER
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x89,	#  PER MILLE SIGN
-    0x2039: 0x8B,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0x9B,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC: 0x80,	#  EURO SIGN
-    0x2122: 0x99,	#  TRADE MARK SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A1: 0xA1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xAA,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,       #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F8: 0xF8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xFF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x011E: 0xD0,       #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xF0,       #  LATIN SMALL LETTER G WITH BREVE
+    0x0130: 0xDD,       #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0xFD,       #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0x8C,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0x9C,       #  LATIN SMALL LIGATURE OE
+    0x015E: 0xDE,       #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xFE,       #  LATIN SMALL LETTER S WITH CEDILLA
+    0x0160: 0x8A,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0x9A,       #  LATIN SMALL LETTER S WITH CARON
+    0x0178: 0x9F,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0x83,       #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0x88,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02DC: 0x98,       #  SMALL TILDE
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0x82,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0x86,       #  DAGGER
+    0x2021: 0x87,       #  DOUBLE DAGGER
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x89,       #  PER MILLE SIGN
+    0x2039: 0x8B,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,       #  EURO SIGN
+    0x2122: 0x99,       #  TRADE MARK SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp1255.py
==============================================================================
--- python/trunk/Lib/encodings/cp1255.py	(original)
+++ python/trunk/Lib/encodings/cp1255.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,499 +32,498 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u20ac'	#  0x80 -> EURO SIGN
-    u'\ufffe'	#  0x81 -> UNDEFINED
-    u'\u201a'	#  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'	#  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'	#  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'	#  0x86 -> DAGGER
-    u'\u2021'	#  0x87 -> DOUBLE DAGGER
-    u'\u02c6'	#  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'	#  0x89 -> PER MILLE SIGN
-    u'\ufffe'	#  0x8A -> UNDEFINED
-    u'\u2039'	#  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'	#  0x8C -> UNDEFINED
-    u'\ufffe'	#  0x8D -> UNDEFINED
-    u'\ufffe'	#  0x8E -> UNDEFINED
-    u'\ufffe'	#  0x8F -> UNDEFINED
-    u'\ufffe'	#  0x90 -> UNDEFINED
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\u02dc'	#  0x98 -> SMALL TILDE
-    u'\u2122'	#  0x99 -> TRADE MARK SIGN
-    u'\ufffe'	#  0x9A -> UNDEFINED
-    u'\u203a'	#  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'	#  0x9C -> UNDEFINED
-    u'\ufffe'	#  0x9D -> UNDEFINED
-    u'\ufffe'	#  0x9E -> UNDEFINED
-    u'\ufffe'	#  0x9F -> UNDEFINED
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\xa1'	#  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\u20aa'	#  0xA4 -> NEW SHEQEL SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\xd7'	#  0xAA -> MULTIPLICATION SIGN
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\xf7'	#  0xBA -> DIVISION SIGN
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'	#  0xBF -> INVERTED QUESTION MARK
-    u'\u05b0'	#  0xC0 -> HEBREW POINT SHEVA
-    u'\u05b1'	#  0xC1 -> HEBREW POINT HATAF SEGOL
-    u'\u05b2'	#  0xC2 -> HEBREW POINT HATAF PATAH
-    u'\u05b3'	#  0xC3 -> HEBREW POINT HATAF QAMATS
-    u'\u05b4'	#  0xC4 -> HEBREW POINT HIRIQ
-    u'\u05b5'	#  0xC5 -> HEBREW POINT TSERE
-    u'\u05b6'	#  0xC6 -> HEBREW POINT SEGOL
-    u'\u05b7'	#  0xC7 -> HEBREW POINT PATAH
-    u'\u05b8'	#  0xC8 -> HEBREW POINT QAMATS
-    u'\u05b9'	#  0xC9 -> HEBREW POINT HOLAM
-    u'\ufffe'	#  0xCA -> UNDEFINED
-    u'\u05bb'	#  0xCB -> HEBREW POINT QUBUTS
-    u'\u05bc'	#  0xCC -> HEBREW POINT DAGESH OR MAPIQ
-    u'\u05bd'	#  0xCD -> HEBREW POINT METEG
-    u'\u05be'	#  0xCE -> HEBREW PUNCTUATION MAQAF
-    u'\u05bf'	#  0xCF -> HEBREW POINT RAFE
-    u'\u05c0'	#  0xD0 -> HEBREW PUNCTUATION PASEQ
-    u'\u05c1'	#  0xD1 -> HEBREW POINT SHIN DOT
-    u'\u05c2'	#  0xD2 -> HEBREW POINT SIN DOT
-    u'\u05c3'	#  0xD3 -> HEBREW PUNCTUATION SOF PASUQ
-    u'\u05f0'	#  0xD4 -> HEBREW LIGATURE YIDDISH DOUBLE VAV
-    u'\u05f1'	#  0xD5 -> HEBREW LIGATURE YIDDISH VAV YOD
-    u'\u05f2'	#  0xD6 -> HEBREW LIGATURE YIDDISH DOUBLE YOD
-    u'\u05f3'	#  0xD7 -> HEBREW PUNCTUATION GERESH
-    u'\u05f4'	#  0xD8 -> HEBREW PUNCTUATION GERSHAYIM
-    u'\ufffe'	#  0xD9 -> UNDEFINED
-    u'\ufffe'	#  0xDA -> UNDEFINED
-    u'\ufffe'	#  0xDB -> UNDEFINED
-    u'\ufffe'	#  0xDC -> UNDEFINED
-    u'\ufffe'	#  0xDD -> UNDEFINED
-    u'\ufffe'	#  0xDE -> UNDEFINED
-    u'\ufffe'	#  0xDF -> UNDEFINED
-    u'\u05d0'	#  0xE0 -> HEBREW LETTER ALEF
-    u'\u05d1'	#  0xE1 -> HEBREW LETTER BET
-    u'\u05d2'	#  0xE2 -> HEBREW LETTER GIMEL
-    u'\u05d3'	#  0xE3 -> HEBREW LETTER DALET
-    u'\u05d4'	#  0xE4 -> HEBREW LETTER HE
-    u'\u05d5'	#  0xE5 -> HEBREW LETTER VAV
-    u'\u05d6'	#  0xE6 -> HEBREW LETTER ZAYIN
-    u'\u05d7'	#  0xE7 -> HEBREW LETTER HET
-    u'\u05d8'	#  0xE8 -> HEBREW LETTER TET
-    u'\u05d9'	#  0xE9 -> HEBREW LETTER YOD
-    u'\u05da'	#  0xEA -> HEBREW LETTER FINAL KAF
-    u'\u05db'	#  0xEB -> HEBREW LETTER KAF
-    u'\u05dc'	#  0xEC -> HEBREW LETTER LAMED
-    u'\u05dd'	#  0xED -> HEBREW LETTER FINAL MEM
-    u'\u05de'	#  0xEE -> HEBREW LETTER MEM
-    u'\u05df'	#  0xEF -> HEBREW LETTER FINAL NUN
-    u'\u05e0'	#  0xF0 -> HEBREW LETTER NUN
-    u'\u05e1'	#  0xF1 -> HEBREW LETTER SAMEKH
-    u'\u05e2'	#  0xF2 -> HEBREW LETTER AYIN
-    u'\u05e3'	#  0xF3 -> HEBREW LETTER FINAL PE
-    u'\u05e4'	#  0xF4 -> HEBREW LETTER PE
-    u'\u05e5'	#  0xF5 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'	#  0xF6 -> HEBREW LETTER TSADI
-    u'\u05e7'	#  0xF7 -> HEBREW LETTER QOF
-    u'\u05e8'	#  0xF8 -> HEBREW LETTER RESH
-    u'\u05e9'	#  0xF9 -> HEBREW LETTER SHIN
-    u'\u05ea'	#  0xFA -> HEBREW LETTER TAV
-    u'\ufffe'	#  0xFB -> UNDEFINED
-    u'\ufffe'	#  0xFC -> UNDEFINED
-    u'\u200e'	#  0xFD -> LEFT-TO-RIGHT MARK
-    u'\u200f'	#  0xFE -> RIGHT-TO-LEFT MARK
-    u'\ufffe'	#  0xFF -> UNDEFINED
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u20ac'   #  0x80 -> EURO SIGN
+    u'\ufffe'   #  0x81 -> UNDEFINED
+    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\u2020'   #  0x86 -> DAGGER
+    u'\u2021'   #  0x87 -> DOUBLE DAGGER
+    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u2030'   #  0x89 -> PER MILLE SIGN
+    u'\ufffe'   #  0x8A -> UNDEFINED
+    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'   #  0x8C -> UNDEFINED
+    u'\ufffe'   #  0x8D -> UNDEFINED
+    u'\ufffe'   #  0x8E -> UNDEFINED
+    u'\ufffe'   #  0x8F -> UNDEFINED
+    u'\ufffe'   #  0x90 -> UNDEFINED
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\u02dc'   #  0x98 -> SMALL TILDE
+    u'\u2122'   #  0x99 -> TRADE MARK SIGN
+    u'\ufffe'   #  0x9A -> UNDEFINED
+    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'   #  0x9C -> UNDEFINED
+    u'\ufffe'   #  0x9D -> UNDEFINED
+    u'\ufffe'   #  0x9E -> UNDEFINED
+    u'\ufffe'   #  0x9F -> UNDEFINED
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\u20aa'   #  0xA4 -> NEW SHEQEL SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\xd7'     #  0xAA -> MULTIPLICATION SIGN
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\xf7'     #  0xBA -> DIVISION SIGN
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
+    u'\u05b0'   #  0xC0 -> HEBREW POINT SHEVA
+    u'\u05b1'   #  0xC1 -> HEBREW POINT HATAF SEGOL
+    u'\u05b2'   #  0xC2 -> HEBREW POINT HATAF PATAH
+    u'\u05b3'   #  0xC3 -> HEBREW POINT HATAF QAMATS
+    u'\u05b4'   #  0xC4 -> HEBREW POINT HIRIQ
+    u'\u05b5'   #  0xC5 -> HEBREW POINT TSERE
+    u'\u05b6'   #  0xC6 -> HEBREW POINT SEGOL
+    u'\u05b7'   #  0xC7 -> HEBREW POINT PATAH
+    u'\u05b8'   #  0xC8 -> HEBREW POINT QAMATS
+    u'\u05b9'   #  0xC9 -> HEBREW POINT HOLAM
+    u'\ufffe'   #  0xCA -> UNDEFINED
+    u'\u05bb'   #  0xCB -> HEBREW POINT QUBUTS
+    u'\u05bc'   #  0xCC -> HEBREW POINT DAGESH OR MAPIQ
+    u'\u05bd'   #  0xCD -> HEBREW POINT METEG
+    u'\u05be'   #  0xCE -> HEBREW PUNCTUATION MAQAF
+    u'\u05bf'   #  0xCF -> HEBREW POINT RAFE
+    u'\u05c0'   #  0xD0 -> HEBREW PUNCTUATION PASEQ
+    u'\u05c1'   #  0xD1 -> HEBREW POINT SHIN DOT
+    u'\u05c2'   #  0xD2 -> HEBREW POINT SIN DOT
+    u'\u05c3'   #  0xD3 -> HEBREW PUNCTUATION SOF PASUQ
+    u'\u05f0'   #  0xD4 -> HEBREW LIGATURE YIDDISH DOUBLE VAV
+    u'\u05f1'   #  0xD5 -> HEBREW LIGATURE YIDDISH VAV YOD
+    u'\u05f2'   #  0xD6 -> HEBREW LIGATURE YIDDISH DOUBLE YOD
+    u'\u05f3'   #  0xD7 -> HEBREW PUNCTUATION GERESH
+    u'\u05f4'   #  0xD8 -> HEBREW PUNCTUATION GERSHAYIM
+    u'\ufffe'   #  0xD9 -> UNDEFINED
+    u'\ufffe'   #  0xDA -> UNDEFINED
+    u'\ufffe'   #  0xDB -> UNDEFINED
+    u'\ufffe'   #  0xDC -> UNDEFINED
+    u'\ufffe'   #  0xDD -> UNDEFINED
+    u'\ufffe'   #  0xDE -> UNDEFINED
+    u'\ufffe'   #  0xDF -> UNDEFINED
+    u'\u05d0'   #  0xE0 -> HEBREW LETTER ALEF
+    u'\u05d1'   #  0xE1 -> HEBREW LETTER BET
+    u'\u05d2'   #  0xE2 -> HEBREW LETTER GIMEL
+    u'\u05d3'   #  0xE3 -> HEBREW LETTER DALET
+    u'\u05d4'   #  0xE4 -> HEBREW LETTER HE
+    u'\u05d5'   #  0xE5 -> HEBREW LETTER VAV
+    u'\u05d6'   #  0xE6 -> HEBREW LETTER ZAYIN
+    u'\u05d7'   #  0xE7 -> HEBREW LETTER HET
+    u'\u05d8'   #  0xE8 -> HEBREW LETTER TET
+    u'\u05d9'   #  0xE9 -> HEBREW LETTER YOD
+    u'\u05da'   #  0xEA -> HEBREW LETTER FINAL KAF
+    u'\u05db'   #  0xEB -> HEBREW LETTER KAF
+    u'\u05dc'   #  0xEC -> HEBREW LETTER LAMED
+    u'\u05dd'   #  0xED -> HEBREW LETTER FINAL MEM
+    u'\u05de'   #  0xEE -> HEBREW LETTER MEM
+    u'\u05df'   #  0xEF -> HEBREW LETTER FINAL NUN
+    u'\u05e0'   #  0xF0 -> HEBREW LETTER NUN
+    u'\u05e1'   #  0xF1 -> HEBREW LETTER SAMEKH
+    u'\u05e2'   #  0xF2 -> HEBREW LETTER AYIN
+    u'\u05e3'   #  0xF3 -> HEBREW LETTER FINAL PE
+    u'\u05e4'   #  0xF4 -> HEBREW LETTER PE
+    u'\u05e5'   #  0xF5 -> HEBREW LETTER FINAL TSADI
+    u'\u05e6'   #  0xF6 -> HEBREW LETTER TSADI
+    u'\u05e7'   #  0xF7 -> HEBREW LETTER QOF
+    u'\u05e8'   #  0xF8 -> HEBREW LETTER RESH
+    u'\u05e9'   #  0xF9 -> HEBREW LETTER SHIN
+    u'\u05ea'   #  0xFA -> HEBREW LETTER TAV
+    u'\ufffe'   #  0xFB -> UNDEFINED
+    u'\ufffe'   #  0xFC -> UNDEFINED
+    u'\u200e'   #  0xFD -> LEFT-TO-RIGHT MARK
+    u'\u200f'   #  0xFE -> RIGHT-TO-LEFT MARK
+    u'\ufffe'   #  0xFF -> UNDEFINED
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A1: 0xA1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xBF,	#  INVERTED QUESTION MARK
-    0x00D7: 0xAA,	#  MULTIPLICATION SIGN
-    0x00F7: 0xBA,	#  DIVISION SIGN
-    0x0192: 0x83,	#  LATIN SMALL LETTER F WITH HOOK
-    0x02C6: 0x88,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02DC: 0x98,	#  SMALL TILDE
-    0x05B0: 0xC0,	#  HEBREW POINT SHEVA
-    0x05B1: 0xC1,	#  HEBREW POINT HATAF SEGOL
-    0x05B2: 0xC2,	#  HEBREW POINT HATAF PATAH
-    0x05B3: 0xC3,	#  HEBREW POINT HATAF QAMATS
-    0x05B4: 0xC4,	#  HEBREW POINT HIRIQ
-    0x05B5: 0xC5,	#  HEBREW POINT TSERE
-    0x05B6: 0xC6,	#  HEBREW POINT SEGOL
-    0x05B7: 0xC7,	#  HEBREW POINT PATAH
-    0x05B8: 0xC8,	#  HEBREW POINT QAMATS
-    0x05B9: 0xC9,	#  HEBREW POINT HOLAM
-    0x05BB: 0xCB,	#  HEBREW POINT QUBUTS
-    0x05BC: 0xCC,	#  HEBREW POINT DAGESH OR MAPIQ
-    0x05BD: 0xCD,	#  HEBREW POINT METEG
-    0x05BE: 0xCE,	#  HEBREW PUNCTUATION MAQAF
-    0x05BF: 0xCF,	#  HEBREW POINT RAFE
-    0x05C0: 0xD0,	#  HEBREW PUNCTUATION PASEQ
-    0x05C1: 0xD1,	#  HEBREW POINT SHIN DOT
-    0x05C2: 0xD2,	#  HEBREW POINT SIN DOT
-    0x05C3: 0xD3,	#  HEBREW PUNCTUATION SOF PASUQ
-    0x05D0: 0xE0,	#  HEBREW LETTER ALEF
-    0x05D1: 0xE1,	#  HEBREW LETTER BET
-    0x05D2: 0xE2,	#  HEBREW LETTER GIMEL
-    0x05D3: 0xE3,	#  HEBREW LETTER DALET
-    0x05D4: 0xE4,	#  HEBREW LETTER HE
-    0x05D5: 0xE5,	#  HEBREW LETTER VAV
-    0x05D6: 0xE6,	#  HEBREW LETTER ZAYIN
-    0x05D7: 0xE7,	#  HEBREW LETTER HET
-    0x05D8: 0xE8,	#  HEBREW LETTER TET
-    0x05D9: 0xE9,	#  HEBREW LETTER YOD
-    0x05DA: 0xEA,	#  HEBREW LETTER FINAL KAF
-    0x05DB: 0xEB,	#  HEBREW LETTER KAF
-    0x05DC: 0xEC,	#  HEBREW LETTER LAMED
-    0x05DD: 0xED,	#  HEBREW LETTER FINAL MEM
-    0x05DE: 0xEE,	#  HEBREW LETTER MEM
-    0x05DF: 0xEF,	#  HEBREW LETTER FINAL NUN
-    0x05E0: 0xF0,	#  HEBREW LETTER NUN
-    0x05E1: 0xF1,	#  HEBREW LETTER SAMEKH
-    0x05E2: 0xF2,	#  HEBREW LETTER AYIN
-    0x05E3: 0xF3,	#  HEBREW LETTER FINAL PE
-    0x05E4: 0xF4,	#  HEBREW LETTER PE
-    0x05E5: 0xF5,	#  HEBREW LETTER FINAL TSADI
-    0x05E6: 0xF6,	#  HEBREW LETTER TSADI
-    0x05E7: 0xF7,	#  HEBREW LETTER QOF
-    0x05E8: 0xF8,	#  HEBREW LETTER RESH
-    0x05E9: 0xF9,	#  HEBREW LETTER SHIN
-    0x05EA: 0xFA,	#  HEBREW LETTER TAV
-    0x05F0: 0xD4,	#  HEBREW LIGATURE YIDDISH DOUBLE VAV
-    0x05F1: 0xD5,	#  HEBREW LIGATURE YIDDISH VAV YOD
-    0x05F2: 0xD6,	#  HEBREW LIGATURE YIDDISH DOUBLE YOD
-    0x05F3: 0xD7,	#  HEBREW PUNCTUATION GERESH
-    0x05F4: 0xD8,	#  HEBREW PUNCTUATION GERSHAYIM
-    0x200E: 0xFD,	#  LEFT-TO-RIGHT MARK
-    0x200F: 0xFE,	#  RIGHT-TO-LEFT MARK
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0x82,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0x84,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0x86,	#  DAGGER
-    0x2021: 0x87,	#  DOUBLE DAGGER
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x89,	#  PER MILLE SIGN
-    0x2039: 0x8B,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0x9B,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AA: 0xA4,	#  NEW SHEQEL SIGN
-    0x20AC: 0x80,	#  EURO SIGN
-    0x2122: 0x99,	#  TRADE MARK SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A1: 0xA1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,       #  INVERTED QUESTION MARK
+    0x00D7: 0xAA,       #  MULTIPLICATION SIGN
+    0x00F7: 0xBA,       #  DIVISION SIGN
+    0x0192: 0x83,       #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0x88,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02DC: 0x98,       #  SMALL TILDE
+    0x05B0: 0xC0,       #  HEBREW POINT SHEVA
+    0x05B1: 0xC1,       #  HEBREW POINT HATAF SEGOL
+    0x05B2: 0xC2,       #  HEBREW POINT HATAF PATAH
+    0x05B3: 0xC3,       #  HEBREW POINT HATAF QAMATS
+    0x05B4: 0xC4,       #  HEBREW POINT HIRIQ
+    0x05B5: 0xC5,       #  HEBREW POINT TSERE
+    0x05B6: 0xC6,       #  HEBREW POINT SEGOL
+    0x05B7: 0xC7,       #  HEBREW POINT PATAH
+    0x05B8: 0xC8,       #  HEBREW POINT QAMATS
+    0x05B9: 0xC9,       #  HEBREW POINT HOLAM
+    0x05BB: 0xCB,       #  HEBREW POINT QUBUTS
+    0x05BC: 0xCC,       #  HEBREW POINT DAGESH OR MAPIQ
+    0x05BD: 0xCD,       #  HEBREW POINT METEG
+    0x05BE: 0xCE,       #  HEBREW PUNCTUATION MAQAF
+    0x05BF: 0xCF,       #  HEBREW POINT RAFE
+    0x05C0: 0xD0,       #  HEBREW PUNCTUATION PASEQ
+    0x05C1: 0xD1,       #  HEBREW POINT SHIN DOT
+    0x05C2: 0xD2,       #  HEBREW POINT SIN DOT
+    0x05C3: 0xD3,       #  HEBREW PUNCTUATION SOF PASUQ
+    0x05D0: 0xE0,       #  HEBREW LETTER ALEF
+    0x05D1: 0xE1,       #  HEBREW LETTER BET
+    0x05D2: 0xE2,       #  HEBREW LETTER GIMEL
+    0x05D3: 0xE3,       #  HEBREW LETTER DALET
+    0x05D4: 0xE4,       #  HEBREW LETTER HE
+    0x05D5: 0xE5,       #  HEBREW LETTER VAV
+    0x05D6: 0xE6,       #  HEBREW LETTER ZAYIN
+    0x05D7: 0xE7,       #  HEBREW LETTER HET
+    0x05D8: 0xE8,       #  HEBREW LETTER TET
+    0x05D9: 0xE9,       #  HEBREW LETTER YOD
+    0x05DA: 0xEA,       #  HEBREW LETTER FINAL KAF
+    0x05DB: 0xEB,       #  HEBREW LETTER KAF
+    0x05DC: 0xEC,       #  HEBREW LETTER LAMED
+    0x05DD: 0xED,       #  HEBREW LETTER FINAL MEM
+    0x05DE: 0xEE,       #  HEBREW LETTER MEM
+    0x05DF: 0xEF,       #  HEBREW LETTER FINAL NUN
+    0x05E0: 0xF0,       #  HEBREW LETTER NUN
+    0x05E1: 0xF1,       #  HEBREW LETTER SAMEKH
+    0x05E2: 0xF2,       #  HEBREW LETTER AYIN
+    0x05E3: 0xF3,       #  HEBREW LETTER FINAL PE
+    0x05E4: 0xF4,       #  HEBREW LETTER PE
+    0x05E5: 0xF5,       #  HEBREW LETTER FINAL TSADI
+    0x05E6: 0xF6,       #  HEBREW LETTER TSADI
+    0x05E7: 0xF7,       #  HEBREW LETTER QOF
+    0x05E8: 0xF8,       #  HEBREW LETTER RESH
+    0x05E9: 0xF9,       #  HEBREW LETTER SHIN
+    0x05EA: 0xFA,       #  HEBREW LETTER TAV
+    0x05F0: 0xD4,       #  HEBREW LIGATURE YIDDISH DOUBLE VAV
+    0x05F1: 0xD5,       #  HEBREW LIGATURE YIDDISH VAV YOD
+    0x05F2: 0xD6,       #  HEBREW LIGATURE YIDDISH DOUBLE YOD
+    0x05F3: 0xD7,       #  HEBREW PUNCTUATION GERESH
+    0x05F4: 0xD8,       #  HEBREW PUNCTUATION GERSHAYIM
+    0x200E: 0xFD,       #  LEFT-TO-RIGHT MARK
+    0x200F: 0xFE,       #  RIGHT-TO-LEFT MARK
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0x82,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0x86,       #  DAGGER
+    0x2021: 0x87,       #  DOUBLE DAGGER
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x89,       #  PER MILLE SIGN
+    0x2039: 0x8B,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AA: 0xA4,       #  NEW SHEQEL SIGN
+    0x20AC: 0x80,       #  EURO SIGN
+    0x2122: 0x99,       #  TRADE MARK SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp1256.py
==============================================================================
--- python/trunk/Lib/encodings/cp1256.py	(original)
+++ python/trunk/Lib/encodings/cp1256.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u20ac'	#  0x80 -> EURO SIGN
-    u'\u067e'	#  0x81 -> ARABIC LETTER PEH
-    u'\u201a'	#  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'	#  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'	#  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'	#  0x86 -> DAGGER
-    u'\u2021'	#  0x87 -> DOUBLE DAGGER
-    u'\u02c6'	#  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'	#  0x89 -> PER MILLE SIGN
-    u'\u0679'	#  0x8A -> ARABIC LETTER TTEH
-    u'\u2039'	#  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'	#  0x8C -> LATIN CAPITAL LIGATURE OE
-    u'\u0686'	#  0x8D -> ARABIC LETTER TCHEH
-    u'\u0698'	#  0x8E -> ARABIC LETTER JEH
-    u'\u0688'	#  0x8F -> ARABIC LETTER DDAL
-    u'\u06af'	#  0x90 -> ARABIC LETTER GAF
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\u06a9'	#  0x98 -> ARABIC LETTER KEHEH
-    u'\u2122'	#  0x99 -> TRADE MARK SIGN
-    u'\u0691'	#  0x9A -> ARABIC LETTER RREH
-    u'\u203a'	#  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'	#  0x9C -> LATIN SMALL LIGATURE OE
-    u'\u200c'	#  0x9D -> ZERO WIDTH NON-JOINER
-    u'\u200d'	#  0x9E -> ZERO WIDTH JOINER
-    u'\u06ba'	#  0x9F -> ARABIC LETTER NOON GHUNNA
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u060c'	#  0xA1 -> ARABIC COMMA
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u06be'	#  0xAA -> ARABIC LETTER HEH DOACHASHMEE
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\u061b'	#  0xBA -> ARABIC SEMICOLON
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\u061f'	#  0xBF -> ARABIC QUESTION MARK
-    u'\u06c1'	#  0xC0 -> ARABIC LETTER HEH GOAL
-    u'\u0621'	#  0xC1 -> ARABIC LETTER HAMZA
-    u'\u0622'	#  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'	#  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'	#  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'	#  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'	#  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'	#  0xC7 -> ARABIC LETTER ALEF
-    u'\u0628'	#  0xC8 -> ARABIC LETTER BEH
-    u'\u0629'	#  0xC9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'	#  0xCA -> ARABIC LETTER TEH
-    u'\u062b'	#  0xCB -> ARABIC LETTER THEH
-    u'\u062c'	#  0xCC -> ARABIC LETTER JEEM
-    u'\u062d'	#  0xCD -> ARABIC LETTER HAH
-    u'\u062e'	#  0xCE -> ARABIC LETTER KHAH
-    u'\u062f'	#  0xCF -> ARABIC LETTER DAL
-    u'\u0630'	#  0xD0 -> ARABIC LETTER THAL
-    u'\u0631'	#  0xD1 -> ARABIC LETTER REH
-    u'\u0632'	#  0xD2 -> ARABIC LETTER ZAIN
-    u'\u0633'	#  0xD3 -> ARABIC LETTER SEEN
-    u'\u0634'	#  0xD4 -> ARABIC LETTER SHEEN
-    u'\u0635'	#  0xD5 -> ARABIC LETTER SAD
-    u'\u0636'	#  0xD6 -> ARABIC LETTER DAD
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\u0637'	#  0xD8 -> ARABIC LETTER TAH
-    u'\u0638'	#  0xD9 -> ARABIC LETTER ZAH
-    u'\u0639'	#  0xDA -> ARABIC LETTER AIN
-    u'\u063a'	#  0xDB -> ARABIC LETTER GHAIN
-    u'\u0640'	#  0xDC -> ARABIC TATWEEL
-    u'\u0641'	#  0xDD -> ARABIC LETTER FEH
-    u'\u0642'	#  0xDE -> ARABIC LETTER QAF
-    u'\u0643'	#  0xDF -> ARABIC LETTER KAF
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\u0644'	#  0xE1 -> ARABIC LETTER LAM
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0645'	#  0xE3 -> ARABIC LETTER MEEM
-    u'\u0646'	#  0xE4 -> ARABIC LETTER NOON
-    u'\u0647'	#  0xE5 -> ARABIC LETTER HEH
-    u'\u0648'	#  0xE6 -> ARABIC LETTER WAW
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0649'	#  0xEC -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'	#  0xED -> ARABIC LETTER YEH
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u064b'	#  0xF0 -> ARABIC FATHATAN
-    u'\u064c'	#  0xF1 -> ARABIC DAMMATAN
-    u'\u064d'	#  0xF2 -> ARABIC KASRATAN
-    u'\u064e'	#  0xF3 -> ARABIC FATHA
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u064f'	#  0xF5 -> ARABIC DAMMA
-    u'\u0650'	#  0xF6 -> ARABIC KASRA
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\u0651'	#  0xF8 -> ARABIC SHADDA
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\u0652'	#  0xFA -> ARABIC SUKUN
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u200e'	#  0xFD -> LEFT-TO-RIGHT MARK
-    u'\u200f'	#  0xFE -> RIGHT-TO-LEFT MARK
-    u'\u06d2'	#  0xFF -> ARABIC LETTER YEH BARREE
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u20ac'   #  0x80 -> EURO SIGN
+    u'\u067e'   #  0x81 -> ARABIC LETTER PEH
+    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\u2020'   #  0x86 -> DAGGER
+    u'\u2021'   #  0x87 -> DOUBLE DAGGER
+    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u2030'   #  0x89 -> PER MILLE SIGN
+    u'\u0679'   #  0x8A -> ARABIC LETTER TTEH
+    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u0152'   #  0x8C -> LATIN CAPITAL LIGATURE OE
+    u'\u0686'   #  0x8D -> ARABIC LETTER TCHEH
+    u'\u0698'   #  0x8E -> ARABIC LETTER JEH
+    u'\u0688'   #  0x8F -> ARABIC LETTER DDAL
+    u'\u06af'   #  0x90 -> ARABIC LETTER GAF
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\u06a9'   #  0x98 -> ARABIC LETTER KEHEH
+    u'\u2122'   #  0x99 -> TRADE MARK SIGN
+    u'\u0691'   #  0x9A -> ARABIC LETTER RREH
+    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0153'   #  0x9C -> LATIN SMALL LIGATURE OE
+    u'\u200c'   #  0x9D -> ZERO WIDTH NON-JOINER
+    u'\u200d'   #  0x9E -> ZERO WIDTH JOINER
+    u'\u06ba'   #  0x9F -> ARABIC LETTER NOON GHUNNA
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u060c'   #  0xA1 -> ARABIC COMMA
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u06be'   #  0xAA -> ARABIC LETTER HEH DOACHASHMEE
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\u061b'   #  0xBA -> ARABIC SEMICOLON
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\u061f'   #  0xBF -> ARABIC QUESTION MARK
+    u'\u06c1'   #  0xC0 -> ARABIC LETTER HEH GOAL
+    u'\u0621'   #  0xC1 -> ARABIC LETTER HAMZA
+    u'\u0622'   #  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
+    u'\u0623'   #  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
+    u'\u0624'   #  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
+    u'\u0625'   #  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
+    u'\u0626'   #  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
+    u'\u0627'   #  0xC7 -> ARABIC LETTER ALEF
+    u'\u0628'   #  0xC8 -> ARABIC LETTER BEH
+    u'\u0629'   #  0xC9 -> ARABIC LETTER TEH MARBUTA
+    u'\u062a'   #  0xCA -> ARABIC LETTER TEH
+    u'\u062b'   #  0xCB -> ARABIC LETTER THEH
+    u'\u062c'   #  0xCC -> ARABIC LETTER JEEM
+    u'\u062d'   #  0xCD -> ARABIC LETTER HAH
+    u'\u062e'   #  0xCE -> ARABIC LETTER KHAH
+    u'\u062f'   #  0xCF -> ARABIC LETTER DAL
+    u'\u0630'   #  0xD0 -> ARABIC LETTER THAL
+    u'\u0631'   #  0xD1 -> ARABIC LETTER REH
+    u'\u0632'   #  0xD2 -> ARABIC LETTER ZAIN
+    u'\u0633'   #  0xD3 -> ARABIC LETTER SEEN
+    u'\u0634'   #  0xD4 -> ARABIC LETTER SHEEN
+    u'\u0635'   #  0xD5 -> ARABIC LETTER SAD
+    u'\u0636'   #  0xD6 -> ARABIC LETTER DAD
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0637'   #  0xD8 -> ARABIC LETTER TAH
+    u'\u0638'   #  0xD9 -> ARABIC LETTER ZAH
+    u'\u0639'   #  0xDA -> ARABIC LETTER AIN
+    u'\u063a'   #  0xDB -> ARABIC LETTER GHAIN
+    u'\u0640'   #  0xDC -> ARABIC TATWEEL
+    u'\u0641'   #  0xDD -> ARABIC LETTER FEH
+    u'\u0642'   #  0xDE -> ARABIC LETTER QAF
+    u'\u0643'   #  0xDF -> ARABIC LETTER KAF
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\u0644'   #  0xE1 -> ARABIC LETTER LAM
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0645'   #  0xE3 -> ARABIC LETTER MEEM
+    u'\u0646'   #  0xE4 -> ARABIC LETTER NOON
+    u'\u0647'   #  0xE5 -> ARABIC LETTER HEH
+    u'\u0648'   #  0xE6 -> ARABIC LETTER WAW
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u0649'   #  0xEC -> ARABIC LETTER ALEF MAKSURA
+    u'\u064a'   #  0xED -> ARABIC LETTER YEH
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u064b'   #  0xF0 -> ARABIC FATHATAN
+    u'\u064c'   #  0xF1 -> ARABIC DAMMATAN
+    u'\u064d'   #  0xF2 -> ARABIC KASRATAN
+    u'\u064e'   #  0xF3 -> ARABIC FATHA
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u064f'   #  0xF5 -> ARABIC DAMMA
+    u'\u0650'   #  0xF6 -> ARABIC KASRA
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\u0651'   #  0xF8 -> ARABIC SHADDA
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\u0652'   #  0xFA -> ARABIC SUKUN
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u200e'   #  0xFD -> LEFT-TO-RIGHT MARK
+    u'\u200f'   #  0xFE -> RIGHT-TO-LEFT MARK
+    u'\u06d2'   #  0xFF -> ARABIC LETTER YEH BARREE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0152: 0x8C,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0x9C,	#  LATIN SMALL LIGATURE OE
-    0x0192: 0x83,	#  LATIN SMALL LETTER F WITH HOOK
-    0x02C6: 0x88,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x060C: 0xA1,	#  ARABIC COMMA
-    0x061B: 0xBA,	#  ARABIC SEMICOLON
-    0x061F: 0xBF,	#  ARABIC QUESTION MARK
-    0x0621: 0xC1,	#  ARABIC LETTER HAMZA
-    0x0622: 0xC2,	#  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x0623: 0xC3,	#  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x0624: 0xC4,	#  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x0625: 0xC5,	#  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x0626: 0xC6,	#  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x0627: 0xC7,	#  ARABIC LETTER ALEF
-    0x0628: 0xC8,	#  ARABIC LETTER BEH
-    0x0629: 0xC9,	#  ARABIC LETTER TEH MARBUTA
-    0x062A: 0xCA,	#  ARABIC LETTER TEH
-    0x062B: 0xCB,	#  ARABIC LETTER THEH
-    0x062C: 0xCC,	#  ARABIC LETTER JEEM
-    0x062D: 0xCD,	#  ARABIC LETTER HAH
-    0x062E: 0xCE,	#  ARABIC LETTER KHAH
-    0x062F: 0xCF,	#  ARABIC LETTER DAL
-    0x0630: 0xD0,	#  ARABIC LETTER THAL
-    0x0631: 0xD1,	#  ARABIC LETTER REH
-    0x0632: 0xD2,	#  ARABIC LETTER ZAIN
-    0x0633: 0xD3,	#  ARABIC LETTER SEEN
-    0x0634: 0xD4,	#  ARABIC LETTER SHEEN
-    0x0635: 0xD5,	#  ARABIC LETTER SAD
-    0x0636: 0xD6,	#  ARABIC LETTER DAD
-    0x0637: 0xD8,	#  ARABIC LETTER TAH
-    0x0638: 0xD9,	#  ARABIC LETTER ZAH
-    0x0639: 0xDA,	#  ARABIC LETTER AIN
-    0x063A: 0xDB,	#  ARABIC LETTER GHAIN
-    0x0640: 0xDC,	#  ARABIC TATWEEL
-    0x0641: 0xDD,	#  ARABIC LETTER FEH
-    0x0642: 0xDE,	#  ARABIC LETTER QAF
-    0x0643: 0xDF,	#  ARABIC LETTER KAF
-    0x0644: 0xE1,	#  ARABIC LETTER LAM
-    0x0645: 0xE3,	#  ARABIC LETTER MEEM
-    0x0646: 0xE4,	#  ARABIC LETTER NOON
-    0x0647: 0xE5,	#  ARABIC LETTER HEH
-    0x0648: 0xE6,	#  ARABIC LETTER WAW
-    0x0649: 0xEC,	#  ARABIC LETTER ALEF MAKSURA
-    0x064A: 0xED,	#  ARABIC LETTER YEH
-    0x064B: 0xF0,	#  ARABIC FATHATAN
-    0x064C: 0xF1,	#  ARABIC DAMMATAN
-    0x064D: 0xF2,	#  ARABIC KASRATAN
-    0x064E: 0xF3,	#  ARABIC FATHA
-    0x064F: 0xF5,	#  ARABIC DAMMA
-    0x0650: 0xF6,	#  ARABIC KASRA
-    0x0651: 0xF8,	#  ARABIC SHADDA
-    0x0652: 0xFA,	#  ARABIC SUKUN
-    0x0679: 0x8A,	#  ARABIC LETTER TTEH
-    0x067E: 0x81,	#  ARABIC LETTER PEH
-    0x0686: 0x8D,	#  ARABIC LETTER TCHEH
-    0x0688: 0x8F,	#  ARABIC LETTER DDAL
-    0x0691: 0x9A,	#  ARABIC LETTER RREH
-    0x0698: 0x8E,	#  ARABIC LETTER JEH
-    0x06A9: 0x98,	#  ARABIC LETTER KEHEH
-    0x06AF: 0x90,	#  ARABIC LETTER GAF
-    0x06BA: 0x9F,	#  ARABIC LETTER NOON GHUNNA
-    0x06BE: 0xAA,	#  ARABIC LETTER HEH DOACHASHMEE
-    0x06C1: 0xC0,	#  ARABIC LETTER HEH GOAL
-    0x06D2: 0xFF,	#  ARABIC LETTER YEH BARREE
-    0x200C: 0x9D,	#  ZERO WIDTH NON-JOINER
-    0x200D: 0x9E,	#  ZERO WIDTH JOINER
-    0x200E: 0xFD,	#  LEFT-TO-RIGHT MARK
-    0x200F: 0xFE,	#  RIGHT-TO-LEFT MARK
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0x82,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0x84,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0x86,	#  DAGGER
-    0x2021: 0x87,	#  DOUBLE DAGGER
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x89,	#  PER MILLE SIGN
-    0x2039: 0x8B,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0x9B,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC: 0x80,	#  EURO SIGN
-    0x2122: 0x99,	#  TRADE MARK SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0152: 0x8C,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0x9C,       #  LATIN SMALL LIGATURE OE
+    0x0192: 0x83,       #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0x88,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x060C: 0xA1,       #  ARABIC COMMA
+    0x061B: 0xBA,       #  ARABIC SEMICOLON
+    0x061F: 0xBF,       #  ARABIC QUESTION MARK
+    0x0621: 0xC1,       #  ARABIC LETTER HAMZA
+    0x0622: 0xC2,       #  ARABIC LETTER ALEF WITH MADDA ABOVE
+    0x0623: 0xC3,       #  ARABIC LETTER ALEF WITH HAMZA ABOVE
+    0x0624: 0xC4,       #  ARABIC LETTER WAW WITH HAMZA ABOVE
+    0x0625: 0xC5,       #  ARABIC LETTER ALEF WITH HAMZA BELOW
+    0x0626: 0xC6,       #  ARABIC LETTER YEH WITH HAMZA ABOVE
+    0x0627: 0xC7,       #  ARABIC LETTER ALEF
+    0x0628: 0xC8,       #  ARABIC LETTER BEH
+    0x0629: 0xC9,       #  ARABIC LETTER TEH MARBUTA
+    0x062A: 0xCA,       #  ARABIC LETTER TEH
+    0x062B: 0xCB,       #  ARABIC LETTER THEH
+    0x062C: 0xCC,       #  ARABIC LETTER JEEM
+    0x062D: 0xCD,       #  ARABIC LETTER HAH
+    0x062E: 0xCE,       #  ARABIC LETTER KHAH
+    0x062F: 0xCF,       #  ARABIC LETTER DAL
+    0x0630: 0xD0,       #  ARABIC LETTER THAL
+    0x0631: 0xD1,       #  ARABIC LETTER REH
+    0x0632: 0xD2,       #  ARABIC LETTER ZAIN
+    0x0633: 0xD3,       #  ARABIC LETTER SEEN
+    0x0634: 0xD4,       #  ARABIC LETTER SHEEN
+    0x0635: 0xD5,       #  ARABIC LETTER SAD
+    0x0636: 0xD6,       #  ARABIC LETTER DAD
+    0x0637: 0xD8,       #  ARABIC LETTER TAH
+    0x0638: 0xD9,       #  ARABIC LETTER ZAH
+    0x0639: 0xDA,       #  ARABIC LETTER AIN
+    0x063A: 0xDB,       #  ARABIC LETTER GHAIN
+    0x0640: 0xDC,       #  ARABIC TATWEEL
+    0x0641: 0xDD,       #  ARABIC LETTER FEH
+    0x0642: 0xDE,       #  ARABIC LETTER QAF
+    0x0643: 0xDF,       #  ARABIC LETTER KAF
+    0x0644: 0xE1,       #  ARABIC LETTER LAM
+    0x0645: 0xE3,       #  ARABIC LETTER MEEM
+    0x0646: 0xE4,       #  ARABIC LETTER NOON
+    0x0647: 0xE5,       #  ARABIC LETTER HEH
+    0x0648: 0xE6,       #  ARABIC LETTER WAW
+    0x0649: 0xEC,       #  ARABIC LETTER ALEF MAKSURA
+    0x064A: 0xED,       #  ARABIC LETTER YEH
+    0x064B: 0xF0,       #  ARABIC FATHATAN
+    0x064C: 0xF1,       #  ARABIC DAMMATAN
+    0x064D: 0xF2,       #  ARABIC KASRATAN
+    0x064E: 0xF3,       #  ARABIC FATHA
+    0x064F: 0xF5,       #  ARABIC DAMMA
+    0x0650: 0xF6,       #  ARABIC KASRA
+    0x0651: 0xF8,       #  ARABIC SHADDA
+    0x0652: 0xFA,       #  ARABIC SUKUN
+    0x0679: 0x8A,       #  ARABIC LETTER TTEH
+    0x067E: 0x81,       #  ARABIC LETTER PEH
+    0x0686: 0x8D,       #  ARABIC LETTER TCHEH
+    0x0688: 0x8F,       #  ARABIC LETTER DDAL
+    0x0691: 0x9A,       #  ARABIC LETTER RREH
+    0x0698: 0x8E,       #  ARABIC LETTER JEH
+    0x06A9: 0x98,       #  ARABIC LETTER KEHEH
+    0x06AF: 0x90,       #  ARABIC LETTER GAF
+    0x06BA: 0x9F,       #  ARABIC LETTER NOON GHUNNA
+    0x06BE: 0xAA,       #  ARABIC LETTER HEH DOACHASHMEE
+    0x06C1: 0xC0,       #  ARABIC LETTER HEH GOAL
+    0x06D2: 0xFF,       #  ARABIC LETTER YEH BARREE
+    0x200C: 0x9D,       #  ZERO WIDTH NON-JOINER
+    0x200D: 0x9E,       #  ZERO WIDTH JOINER
+    0x200E: 0xFD,       #  LEFT-TO-RIGHT MARK
+    0x200F: 0xFE,       #  RIGHT-TO-LEFT MARK
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0x82,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0x86,       #  DAGGER
+    0x2021: 0x87,       #  DOUBLE DAGGER
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x89,       #  PER MILLE SIGN
+    0x2039: 0x8B,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,       #  EURO SIGN
+    0x2122: 0x99,       #  TRADE MARK SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp1257.py
==============================================================================
--- python/trunk/Lib/encodings/cp1257.py	(original)
+++ python/trunk/Lib/encodings/cp1257.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,510 +32,509 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u20ac'	#  0x80 -> EURO SIGN
-    u'\ufffe'	#  0x81 -> UNDEFINED
-    u'\u201a'	#  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\ufffe'	#  0x83 -> UNDEFINED
-    u'\u201e'	#  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'	#  0x86 -> DAGGER
-    u'\u2021'	#  0x87 -> DOUBLE DAGGER
-    u'\ufffe'	#  0x88 -> UNDEFINED
-    u'\u2030'	#  0x89 -> PER MILLE SIGN
-    u'\ufffe'	#  0x8A -> UNDEFINED
-    u'\u2039'	#  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'	#  0x8C -> UNDEFINED
-    u'\xa8'	#  0x8D -> DIAERESIS
-    u'\u02c7'	#  0x8E -> CARON
-    u'\xb8'	#  0x8F -> CEDILLA
-    u'\ufffe'	#  0x90 -> UNDEFINED
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\ufffe'	#  0x98 -> UNDEFINED
-    u'\u2122'	#  0x99 -> TRADE MARK SIGN
-    u'\ufffe'	#  0x9A -> UNDEFINED
-    u'\u203a'	#  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'	#  0x9C -> UNDEFINED
-    u'\xaf'	#  0x9D -> MACRON
-    u'\u02db'	#  0x9E -> OGONEK
-    u'\ufffe'	#  0x9F -> UNDEFINED
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\ufffe'	#  0xA1 -> UNDEFINED
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\ufffe'	#  0xA5 -> UNDEFINED
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xd8'	#  0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u0156'	#  0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xc6'	#  0xAF -> LATIN CAPITAL LETTER AE
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xf8'	#  0xB8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\u0157'	#  0xBA -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xe6'	#  0xBF -> LATIN SMALL LETTER AE
-    u'\u0104'	#  0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u012e'	#  0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u0100'	#  0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u0106'	#  0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\u0118'	#  0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0112'	#  0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u010c'	#  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0179'	#  0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\u0116'	#  0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\u0122'	#  0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u0136'	#  0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u012a'	#  0xCE -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u013b'	#  0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u0160'	#  0xD0 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0143'	#  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0145'	#  0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\u014c'	#  0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\u0172'	#  0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u0141'	#  0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u015a'	#  0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u016a'	#  0xDB -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u017b'	#  0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017d'	#  0xDE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\u0105'	#  0xE0 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u012f'	#  0xE1 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u0101'	#  0xE2 -> LATIN SMALL LETTER A WITH MACRON
-    u'\u0107'	#  0xE3 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\u0119'	#  0xE6 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u0113'	#  0xE7 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u010d'	#  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u017a'	#  0xEA -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u0117'	#  0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\u0123'	#  0xEC -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u0137'	#  0xED -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u012b'	#  0xEE -> LATIN SMALL LETTER I WITH MACRON
-    u'\u013c'	#  0xEF -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0161'	#  0xF0 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0144'	#  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0146'	#  0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u014d'	#  0xF4 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\u0173'	#  0xF8 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\u0142'	#  0xF9 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u015b'	#  0xFA -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u016b'	#  0xFB -> LATIN SMALL LETTER U WITH MACRON
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u017c'	#  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u017e'	#  0xFE -> LATIN SMALL LETTER Z WITH CARON
-    u'\u02d9'	#  0xFF -> DOT ABOVE
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u20ac'   #  0x80 -> EURO SIGN
+    u'\ufffe'   #  0x81 -> UNDEFINED
+    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
+    u'\ufffe'   #  0x83 -> UNDEFINED
+    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\u2020'   #  0x86 -> DAGGER
+    u'\u2021'   #  0x87 -> DOUBLE DAGGER
+    u'\ufffe'   #  0x88 -> UNDEFINED
+    u'\u2030'   #  0x89 -> PER MILLE SIGN
+    u'\ufffe'   #  0x8A -> UNDEFINED
+    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'   #  0x8C -> UNDEFINED
+    u'\xa8'     #  0x8D -> DIAERESIS
+    u'\u02c7'   #  0x8E -> CARON
+    u'\xb8'     #  0x8F -> CEDILLA
+    u'\ufffe'   #  0x90 -> UNDEFINED
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\ufffe'   #  0x98 -> UNDEFINED
+    u'\u2122'   #  0x99 -> TRADE MARK SIGN
+    u'\ufffe'   #  0x9A -> UNDEFINED
+    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\ufffe'   #  0x9C -> UNDEFINED
+    u'\xaf'     #  0x9D -> MACRON
+    u'\u02db'   #  0x9E -> OGONEK
+    u'\ufffe'   #  0x9F -> UNDEFINED
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\ufffe'   #  0xA1 -> UNDEFINED
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\ufffe'   #  0xA5 -> UNDEFINED
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xd8'     #  0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u0156'   #  0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xc6'     #  0xAF -> LATIN CAPITAL LETTER AE
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xf8'     #  0xB8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\u0157'   #  0xBA -> LATIN SMALL LETTER R WITH CEDILLA
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xe6'     #  0xBF -> LATIN SMALL LETTER AE
+    u'\u0104'   #  0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u012e'   #  0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u0100'   #  0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\u0106'   #  0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\u0118'   #  0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\u0112'   #  0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0179'   #  0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\u0116'   #  0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\u0122'   #  0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u0136'   #  0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\u012a'   #  0xCE -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u013b'   #  0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\u0160'   #  0xD0 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\u0145'   #  0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\u014c'   #  0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0172'   #  0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\u0141'   #  0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\u015a'   #  0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u016a'   #  0xDB -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u017b'   #  0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\u017d'   #  0xDE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\u0105'   #  0xE0 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u012f'   #  0xE1 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u0101'   #  0xE2 -> LATIN SMALL LETTER A WITH MACRON
+    u'\u0107'   #  0xE3 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\u0119'   #  0xE6 -> LATIN SMALL LETTER E WITH OGONEK
+    u'\u0113'   #  0xE7 -> LATIN SMALL LETTER E WITH MACRON
+    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u017a'   #  0xEA -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u0117'   #  0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\u0123'   #  0xEC -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u0137'   #  0xED -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\u012b'   #  0xEE -> LATIN SMALL LETTER I WITH MACRON
+    u'\u013c'   #  0xEF -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u0161'   #  0xF0 -> LATIN SMALL LETTER S WITH CARON
+    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0146'   #  0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\u014d'   #  0xF4 -> LATIN SMALL LETTER O WITH MACRON
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\u0173'   #  0xF8 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\u0142'   #  0xF9 -> LATIN SMALL LETTER L WITH STROKE
+    u'\u015b'   #  0xFA -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u016b'   #  0xFB -> LATIN SMALL LETTER U WITH MACRON
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u017c'   #  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u017e'   #  0xFE -> LATIN SMALL LETTER Z WITH CARON
+    u'\u02d9'   #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0x8D,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0x9D,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0x8F,	#  CEDILLA
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xAF,	#  LATIN CAPITAL LETTER AE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D8: 0xA8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xBF,	#  LATIN SMALL LETTER AE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F8: 0xB8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0100: 0xC2,	#  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0xE2,	#  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0xC0,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xE0,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xC3,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xE3,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x010C: 0xC8,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010D: 0xE8,	#  LATIN SMALL LETTER C WITH CARON
-    0x0112: 0xC7,	#  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0xE7,	#  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0xCB,	#  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0xEB,	#  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xC6,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xE6,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0xCC,	#  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xEC,	#  LATIN SMALL LETTER G WITH CEDILLA
-    0x012A: 0xCE,	#  LATIN CAPITAL LETTER I WITH MACRON
-    0x012B: 0xEE,	#  LATIN SMALL LETTER I WITH MACRON
-    0x012E: 0xC1,	#  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012F: 0xE1,	#  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xCD,	#  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xED,	#  LATIN SMALL LETTER K WITH CEDILLA
-    0x013B: 0xCF,	#  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013C: 0xEF,	#  LATIN SMALL LETTER L WITH CEDILLA
-    0x0141: 0xD9,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xF9,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xD1,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xF1,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x0145: 0xD2,	#  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xF2,	#  LATIN SMALL LETTER N WITH CEDILLA
-    0x014C: 0xD4,	#  LATIN CAPITAL LETTER O WITH MACRON
-    0x014D: 0xF4,	#  LATIN SMALL LETTER O WITH MACRON
-    0x0156: 0xAA,	#  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0xBA,	#  LATIN SMALL LETTER R WITH CEDILLA
-    0x015A: 0xDA,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015B: 0xFA,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0xD0,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xF0,	#  LATIN SMALL LETTER S WITH CARON
-    0x016A: 0xDB,	#  LATIN CAPITAL LETTER U WITH MACRON
-    0x016B: 0xFB,	#  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0xD8,	#  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xF8,	#  LATIN SMALL LETTER U WITH OGONEK
-    0x0179: 0xCA,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017A: 0xEA,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x017B: 0xDD,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017C: 0xFD,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017D: 0xDE,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0xFE,	#  LATIN SMALL LETTER Z WITH CARON
-    0x02C7: 0x8E,	#  CARON
-    0x02D9: 0xFF,	#  DOT ABOVE
-    0x02DB: 0x9E,	#  OGONEK
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0x82,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0x84,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0x86,	#  DAGGER
-    0x2021: 0x87,	#  DOUBLE DAGGER
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x89,	#  PER MILLE SIGN
-    0x2039: 0x8B,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0x9B,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AC: 0x80,	#  EURO SIGN
-    0x2122: 0x99,	#  TRADE MARK SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0x8D,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0x9D,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0x8F,       #  CEDILLA
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAF,       #  LATIN CAPITAL LETTER AE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D8: 0xA8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBF,       #  LATIN SMALL LETTER AE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F8: 0xB8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0100: 0xC2,       #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0xE2,       #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0xC0,       #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xE0,       #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC3,       #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE3,       #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,       #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,       #  LATIN SMALL LETTER C WITH CARON
+    0x0112: 0xC7,       #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0xE7,       #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0xCB,       #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0xEB,       #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0xC6,       #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xE6,       #  LATIN SMALL LETTER E WITH OGONEK
+    0x0122: 0xCC,       #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xEC,       #  LATIN SMALL LETTER G WITH CEDILLA
+    0x012A: 0xCE,       #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xEE,       #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xC1,       #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xE1,       #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xCD,       #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xED,       #  LATIN SMALL LETTER K WITH CEDILLA
+    0x013B: 0xCF,       #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xEF,       #  LATIN SMALL LETTER L WITH CEDILLA
+    0x0141: 0xD9,       #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xF9,       #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,       #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,       #  LATIN SMALL LETTER N WITH ACUTE
+    0x0145: 0xD2,       #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xF2,       #  LATIN SMALL LETTER N WITH CEDILLA
+    0x014C: 0xD4,       #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xF4,       #  LATIN SMALL LETTER O WITH MACRON
+    0x0156: 0xAA,       #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x0157: 0xBA,       #  LATIN SMALL LETTER R WITH CEDILLA
+    0x015A: 0xDA,       #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xFA,       #  LATIN SMALL LETTER S WITH ACUTE
+    0x0160: 0xD0,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xF0,       #  LATIN SMALL LETTER S WITH CARON
+    0x016A: 0xDB,       #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xFB,       #  LATIN SMALL LETTER U WITH MACRON
+    0x0172: 0xD8,       #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF8,       #  LATIN SMALL LETTER U WITH OGONEK
+    0x0179: 0xCA,       #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0xEA,       #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xDD,       #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xFD,       #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xDE,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xFE,       #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0x8E,       #  CARON
+    0x02D9: 0xFF,       #  DOT ABOVE
+    0x02DB: 0x9E,       #  OGONEK
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0x82,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0x86,       #  DAGGER
+    0x2021: 0x87,       #  DOUBLE DAGGER
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x89,       #  PER MILLE SIGN
+    0x2039: 0x8B,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AC: 0x80,       #  EURO SIGN
+    0x2122: 0x99,       #  TRADE MARK SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp1258.py
==============================================================================
--- python/trunk/Lib/encodings/cp1258.py	(original)
+++ python/trunk/Lib/encodings/cp1258.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,513 +32,512 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u20ac'	#  0x80 -> EURO SIGN
-    u'\ufffe'	#  0x81 -> UNDEFINED
-    u'\u201a'	#  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'	#  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'	#  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'	#  0x86 -> DAGGER
-    u'\u2021'	#  0x87 -> DOUBLE DAGGER
-    u'\u02c6'	#  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'	#  0x89 -> PER MILLE SIGN
-    u'\ufffe'	#  0x8A -> UNDEFINED
-    u'\u2039'	#  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'	#  0x8C -> LATIN CAPITAL LIGATURE OE
-    u'\ufffe'	#  0x8D -> UNDEFINED
-    u'\ufffe'	#  0x8E -> UNDEFINED
-    u'\ufffe'	#  0x8F -> UNDEFINED
-    u'\ufffe'	#  0x90 -> UNDEFINED
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\u02dc'	#  0x98 -> SMALL TILDE
-    u'\u2122'	#  0x99 -> TRADE MARK SIGN
-    u'\ufffe'	#  0x9A -> UNDEFINED
-    u'\u203a'	#  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'	#  0x9C -> LATIN SMALL LIGATURE OE
-    u'\ufffe'	#  0x9D -> UNDEFINED
-    u'\ufffe'	#  0x9E -> UNDEFINED
-    u'\u0178'	#  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\xa1'	#  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'	#  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'	#  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'	#  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'	#  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'	#  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'	#  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u0300'	#  0xCC -> COMBINING GRAVE ACCENT
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u0110'	#  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\xd1'	#  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\u0309'	#  0xD2 -> COMBINING HOOK ABOVE
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u01a0'	#  0xD5 -> LATIN CAPITAL LETTER O WITH HORN
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'	#  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'	#  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u01af'	#  0xDD -> LATIN CAPITAL LETTER U WITH HORN
-    u'\u0303'	#  0xDE -> COMBINING TILDE
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'	#  0xE3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0301'	#  0xEC -> COMBINING ACUTE ACCENT
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u0111'	#  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\xf1'	#  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\u0323'	#  0xF2 -> COMBINING DOT BELOW
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u01a1'	#  0xF5 -> LATIN SMALL LETTER O WITH HORN
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\xf8'	#  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u01b0'	#  0xFD -> LATIN SMALL LETTER U WITH HORN
-    u'\u20ab'	#  0xFE -> DONG SIGN
-    u'\xff'	#  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u20ac'   #  0x80 -> EURO SIGN
+    u'\ufffe'   #  0x81 -> UNDEFINED
+    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\u2020'   #  0x86 -> DAGGER
+    u'\u2021'   #  0x87 -> DOUBLE DAGGER
+    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u2030'   #  0x89 -> PER MILLE SIGN
+    u'\ufffe'   #  0x8A -> UNDEFINED
+    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u0152'   #  0x8C -> LATIN CAPITAL LIGATURE OE
+    u'\ufffe'   #  0x8D -> UNDEFINED
+    u'\ufffe'   #  0x8E -> UNDEFINED
+    u'\ufffe'   #  0x8F -> UNDEFINED
+    u'\ufffe'   #  0x90 -> UNDEFINED
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\u02dc'   #  0x98 -> SMALL TILDE
+    u'\u2122'   #  0x99 -> TRADE MARK SIGN
+    u'\ufffe'   #  0x9A -> UNDEFINED
+    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0153'   #  0x9C -> LATIN SMALL LIGATURE OE
+    u'\ufffe'   #  0x9D -> UNDEFINED
+    u'\ufffe'   #  0x9E -> UNDEFINED
+    u'\u0178'   #  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0102'   #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u0300'   #  0xCC -> COMBINING GRAVE ACCENT
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\u0309'   #  0xD2 -> COMBINING HOOK ABOVE
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u01a0'   #  0xD5 -> LATIN CAPITAL LETTER O WITH HORN
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u01af'   #  0xDD -> LATIN CAPITAL LETTER U WITH HORN
+    u'\u0303'   #  0xDE -> COMBINING TILDE
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0103'   #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u0301'   #  0xEC -> COMBINING ACUTE ACCENT
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\u0323'   #  0xF2 -> COMBINING DOT BELOW
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u01a1'   #  0xF5 -> LATIN SMALL LETTER O WITH HORN
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u01b0'   #  0xFD -> LATIN SMALL LETTER U WITH HORN
+    u'\u20ab'   #  0xFE -> DONG SIGN
+    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A1: 0xA1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xAA,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BA: 0xBA,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xBF,	#  INVERTED QUESTION MARK
-    0x00C0: 0xC0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xC8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xCA,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0xD1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D8: 0xD8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xD9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0xF1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F8: 0xF8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FF: 0xFF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0102: 0xC3,	#  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xE3,	#  LATIN SMALL LETTER A WITH BREVE
-    0x0110: 0xD0,	#  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xF0,	#  LATIN SMALL LETTER D WITH STROKE
-    0x0152: 0x8C,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0x9C,	#  LATIN SMALL LIGATURE OE
-    0x0178: 0x9F,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0x83,	#  LATIN SMALL LETTER F WITH HOOK
-    0x01A0: 0xD5,	#  LATIN CAPITAL LETTER O WITH HORN
-    0x01A1: 0xF5,	#  LATIN SMALL LETTER O WITH HORN
-    0x01AF: 0xDD,	#  LATIN CAPITAL LETTER U WITH HORN
-    0x01B0: 0xFD,	#  LATIN SMALL LETTER U WITH HORN
-    0x02C6: 0x88,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02DC: 0x98,	#  SMALL TILDE
-    0x0300: 0xCC,	#  COMBINING GRAVE ACCENT
-    0x0301: 0xEC,	#  COMBINING ACUTE ACCENT
-    0x0303: 0xDE,	#  COMBINING TILDE
-    0x0309: 0xD2,	#  COMBINING HOOK ABOVE
-    0x0323: 0xF2,	#  COMBINING DOT BELOW
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0x82,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0x84,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0x86,	#  DAGGER
-    0x2021: 0x87,	#  DOUBLE DAGGER
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x89,	#  PER MILLE SIGN
-    0x2039: 0x8B,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0x9B,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x20AB: 0xFE,	#  DONG SIGN
-    0x20AC: 0x80,	#  EURO SIGN
-    0x2122: 0x99,	#  TRADE MARK SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A1: 0xA1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xAA,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,       #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F8: 0xF8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xFF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0102: 0xC3,       #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xE3,       #  LATIN SMALL LETTER A WITH BREVE
+    0x0110: 0xD0,       #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,       #  LATIN SMALL LETTER D WITH STROKE
+    0x0152: 0x8C,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0x9C,       #  LATIN SMALL LIGATURE OE
+    0x0178: 0x9F,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0x83,       #  LATIN SMALL LETTER F WITH HOOK
+    0x01A0: 0xD5,       #  LATIN CAPITAL LETTER O WITH HORN
+    0x01A1: 0xF5,       #  LATIN SMALL LETTER O WITH HORN
+    0x01AF: 0xDD,       #  LATIN CAPITAL LETTER U WITH HORN
+    0x01B0: 0xFD,       #  LATIN SMALL LETTER U WITH HORN
+    0x02C6: 0x88,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02DC: 0x98,       #  SMALL TILDE
+    0x0300: 0xCC,       #  COMBINING GRAVE ACCENT
+    0x0301: 0xEC,       #  COMBINING ACUTE ACCENT
+    0x0303: 0xDE,       #  COMBINING TILDE
+    0x0309: 0xD2,       #  COMBINING HOOK ABOVE
+    0x0323: 0xF2,       #  COMBINING DOT BELOW
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0x82,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0x84,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0x86,       #  DAGGER
+    0x2021: 0x87,       #  DOUBLE DAGGER
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x89,       #  PER MILLE SIGN
+    0x2039: 0x8B,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0x9B,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x20AB: 0xFE,       #  DONG SIGN
+    0x20AC: 0x80,       #  EURO SIGN
+    0x2122: 0x99,       #  TRADE MARK SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp424.py
==============================================================================
--- python/trunk/Lib/encodings/cp424.py	(original)
+++ python/trunk/Lib/encodings/cp424.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,484 +32,483 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x9c'	#  0x04 -> SELECT
-    u'\t'	#  0x05 -> HORIZONTAL TABULATION
-    u'\x86'	#  0x06 -> REQUIRED NEW LINE
-    u'\x7f'	#  0x07 -> DELETE
-    u'\x97'	#  0x08 -> GRAPHIC ESCAPE
-    u'\x8d'	#  0x09 -> SUPERSCRIPT
-    u'\x8e'	#  0x0A -> REPEAT
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'	#  0x14 -> RESTORE/ENABLE PRESENTATION
-    u'\x85'	#  0x15 -> NEW LINE
-    u'\x08'	#  0x16 -> BACKSPACE
-    u'\x87'	#  0x17 -> PROGRAM OPERATOR COMMUNICATION
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x92'	#  0x1A -> UNIT BACK SPACE
-    u'\x8f'	#  0x1B -> CUSTOMER USE ONE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u'\x80'	#  0x20 -> DIGIT SELECT
-    u'\x81'	#  0x21 -> START OF SIGNIFICANCE
-    u'\x82'	#  0x22 -> FIELD SEPARATOR
-    u'\x83'	#  0x23 -> WORD UNDERSCORE
-    u'\x84'	#  0x24 -> BYPASS OR INHIBIT PRESENTATION
-    u'\n'	#  0x25 -> LINE FEED
-    u'\x17'	#  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'	#  0x27 -> ESCAPE
-    u'\x88'	#  0x28 -> SET ATTRIBUTE
-    u'\x89'	#  0x29 -> START FIELD EXTENDED
-    u'\x8a'	#  0x2A -> SET MODE OR SWITCH
-    u'\x8b'	#  0x2B -> CONTROL SEQUENCE PREFIX
-    u'\x8c'	#  0x2C -> MODIFY FIELD ATTRIBUTE
-    u'\x05'	#  0x2D -> ENQUIRY
-    u'\x06'	#  0x2E -> ACKNOWLEDGE
-    u'\x07'	#  0x2F -> BELL
-    u'\x90'	#  0x30 -> <reserved>
-    u'\x91'	#  0x31 -> <reserved>
-    u'\x16'	#  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'	#  0x33 -> INDEX RETURN
-    u'\x94'	#  0x34 -> PRESENTATION POSITION
-    u'\x95'	#  0x35 -> TRANSPARENT
-    u'\x96'	#  0x36 -> NUMERIC BACKSPACE
-    u'\x04'	#  0x37 -> END OF TRANSMISSION
-    u'\x98'	#  0x38 -> SUBSCRIPT
-    u'\x99'	#  0x39 -> INDENT TABULATION
-    u'\x9a'	#  0x3A -> REVERSE FORM FEED
-    u'\x9b'	#  0x3B -> CUSTOMER USE THREE
-    u'\x14'	#  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'	#  0x3E -> <reserved>
-    u'\x1a'	#  0x3F -> SUBSTITUTE
-    u' '	#  0x40 -> SPACE
-    u'\u05d0'	#  0x41 -> HEBREW LETTER ALEF
-    u'\u05d1'	#  0x42 -> HEBREW LETTER BET
-    u'\u05d2'	#  0x43 -> HEBREW LETTER GIMEL
-    u'\u05d3'	#  0x44 -> HEBREW LETTER DALET
-    u'\u05d4'	#  0x45 -> HEBREW LETTER HE
-    u'\u05d5'	#  0x46 -> HEBREW LETTER VAV
-    u'\u05d6'	#  0x47 -> HEBREW LETTER ZAYIN
-    u'\u05d7'	#  0x48 -> HEBREW LETTER HET
-    u'\u05d8'	#  0x49 -> HEBREW LETTER TET
-    u'\xa2'	#  0x4A -> CENT SIGN
-    u'.'	#  0x4B -> FULL STOP
-    u'<'	#  0x4C -> LESS-THAN SIGN
-    u'('	#  0x4D -> LEFT PARENTHESIS
-    u'+'	#  0x4E -> PLUS SIGN
-    u'|'	#  0x4F -> VERTICAL LINE
-    u'&'	#  0x50 -> AMPERSAND
-    u'\u05d9'	#  0x51 -> HEBREW LETTER YOD
-    u'\u05da'	#  0x52 -> HEBREW LETTER FINAL KAF
-    u'\u05db'	#  0x53 -> HEBREW LETTER KAF
-    u'\u05dc'	#  0x54 -> HEBREW LETTER LAMED
-    u'\u05dd'	#  0x55 -> HEBREW LETTER FINAL MEM
-    u'\u05de'	#  0x56 -> HEBREW LETTER MEM
-    u'\u05df'	#  0x57 -> HEBREW LETTER FINAL NUN
-    u'\u05e0'	#  0x58 -> HEBREW LETTER NUN
-    u'\u05e1'	#  0x59 -> HEBREW LETTER SAMEKH
-    u'!'	#  0x5A -> EXCLAMATION MARK
-    u'$'	#  0x5B -> DOLLAR SIGN
-    u'*'	#  0x5C -> ASTERISK
-    u')'	#  0x5D -> RIGHT PARENTHESIS
-    u';'	#  0x5E -> SEMICOLON
-    u'\xac'	#  0x5F -> NOT SIGN
-    u'-'	#  0x60 -> HYPHEN-MINUS
-    u'/'	#  0x61 -> SOLIDUS
-    u'\u05e2'	#  0x62 -> HEBREW LETTER AYIN
-    u'\u05e3'	#  0x63 -> HEBREW LETTER FINAL PE
-    u'\u05e4'	#  0x64 -> HEBREW LETTER PE
-    u'\u05e5'	#  0x65 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'	#  0x66 -> HEBREW LETTER TSADI
-    u'\u05e7'	#  0x67 -> HEBREW LETTER QOF
-    u'\u05e8'	#  0x68 -> HEBREW LETTER RESH
-    u'\u05e9'	#  0x69 -> HEBREW LETTER SHIN
-    u'\xa6'	#  0x6A -> BROKEN BAR
-    u','	#  0x6B -> COMMA
-    u'%'	#  0x6C -> PERCENT SIGN
-    u'_'	#  0x6D -> LOW LINE
-    u'>'	#  0x6E -> GREATER-THAN SIGN
-    u'?'	#  0x6F -> QUESTION MARK
-    u'\ufffe'	#  0x70 -> UNDEFINED
-    u'\u05ea'	#  0x71 -> HEBREW LETTER TAV
-    u'\ufffe'	#  0x72 -> UNDEFINED
-    u'\ufffe'	#  0x73 -> UNDEFINED
-    u'\xa0'	#  0x74 -> NO-BREAK SPACE
-    u'\ufffe'	#  0x75 -> UNDEFINED
-    u'\ufffe'	#  0x76 -> UNDEFINED
-    u'\ufffe'	#  0x77 -> UNDEFINED
-    u'\u2017'	#  0x78 -> DOUBLE LOW LINE
-    u'`'	#  0x79 -> GRAVE ACCENT
-    u':'	#  0x7A -> COLON
-    u'#'	#  0x7B -> NUMBER SIGN
-    u'@'	#  0x7C -> COMMERCIAL AT
-    u"'"	#  0x7D -> APOSTROPHE
-    u'='	#  0x7E -> EQUALS SIGN
-    u'"'	#  0x7F -> QUOTATION MARK
-    u'\ufffe'	#  0x80 -> UNDEFINED
-    u'a'	#  0x81 -> LATIN SMALL LETTER A
-    u'b'	#  0x82 -> LATIN SMALL LETTER B
-    u'c'	#  0x83 -> LATIN SMALL LETTER C
-    u'd'	#  0x84 -> LATIN SMALL LETTER D
-    u'e'	#  0x85 -> LATIN SMALL LETTER E
-    u'f'	#  0x86 -> LATIN SMALL LETTER F
-    u'g'	#  0x87 -> LATIN SMALL LETTER G
-    u'h'	#  0x88 -> LATIN SMALL LETTER H
-    u'i'	#  0x89 -> LATIN SMALL LETTER I
-    u'\xab'	#  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\ufffe'	#  0x8C -> UNDEFINED
-    u'\ufffe'	#  0x8D -> UNDEFINED
-    u'\ufffe'	#  0x8E -> UNDEFINED
-    u'\xb1'	#  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'	#  0x90 -> DEGREE SIGN
-    u'j'	#  0x91 -> LATIN SMALL LETTER J
-    u'k'	#  0x92 -> LATIN SMALL LETTER K
-    u'l'	#  0x93 -> LATIN SMALL LETTER L
-    u'm'	#  0x94 -> LATIN SMALL LETTER M
-    u'n'	#  0x95 -> LATIN SMALL LETTER N
-    u'o'	#  0x96 -> LATIN SMALL LETTER O
-    u'p'	#  0x97 -> LATIN SMALL LETTER P
-    u'q'	#  0x98 -> LATIN SMALL LETTER Q
-    u'r'	#  0x99 -> LATIN SMALL LETTER R
-    u'\ufffe'	#  0x9A -> UNDEFINED
-    u'\ufffe'	#  0x9B -> UNDEFINED
-    u'\ufffe'	#  0x9C -> UNDEFINED
-    u'\xb8'	#  0x9D -> CEDILLA
-    u'\ufffe'	#  0x9E -> UNDEFINED
-    u'\xa4'	#  0x9F -> CURRENCY SIGN
-    u'\xb5'	#  0xA0 -> MICRO SIGN
-    u'~'	#  0xA1 -> TILDE
-    u's'	#  0xA2 -> LATIN SMALL LETTER S
-    u't'	#  0xA3 -> LATIN SMALL LETTER T
-    u'u'	#  0xA4 -> LATIN SMALL LETTER U
-    u'v'	#  0xA5 -> LATIN SMALL LETTER V
-    u'w'	#  0xA6 -> LATIN SMALL LETTER W
-    u'x'	#  0xA7 -> LATIN SMALL LETTER X
-    u'y'	#  0xA8 -> LATIN SMALL LETTER Y
-    u'z'	#  0xA9 -> LATIN SMALL LETTER Z
-    u'\ufffe'	#  0xAA -> UNDEFINED
-    u'\ufffe'	#  0xAB -> UNDEFINED
-    u'\ufffe'	#  0xAC -> UNDEFINED
-    u'\ufffe'	#  0xAD -> UNDEFINED
-    u'\ufffe'	#  0xAE -> UNDEFINED
-    u'\xae'	#  0xAF -> REGISTERED SIGN
-    u'^'	#  0xB0 -> CIRCUMFLEX ACCENT
-    u'\xa3'	#  0xB1 -> POUND SIGN
-    u'\xa5'	#  0xB2 -> YEN SIGN
-    u'\xb7'	#  0xB3 -> MIDDLE DOT
-    u'\xa9'	#  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'	#  0xB5 -> SECTION SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xbc'	#  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'['	#  0xBA -> LEFT SQUARE BRACKET
-    u']'	#  0xBB -> RIGHT SQUARE BRACKET
-    u'\xaf'	#  0xBC -> MACRON
-    u'\xa8'	#  0xBD -> DIAERESIS
-    u'\xb4'	#  0xBE -> ACUTE ACCENT
-    u'\xd7'	#  0xBF -> MULTIPLICATION SIGN
-    u'{'	#  0xC0 -> LEFT CURLY BRACKET
-    u'A'	#  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'	#  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'	#  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'	#  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'	#  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'	#  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'	#  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'	#  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'	#  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'	#  0xCA -> SOFT HYPHEN
-    u'\ufffe'	#  0xCB -> UNDEFINED
-    u'\ufffe'	#  0xCC -> UNDEFINED
-    u'\ufffe'	#  0xCD -> UNDEFINED
-    u'\ufffe'	#  0xCE -> UNDEFINED
-    u'\ufffe'	#  0xCF -> UNDEFINED
-    u'}'	#  0xD0 -> RIGHT CURLY BRACKET
-    u'J'	#  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'	#  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'	#  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'	#  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'	#  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'	#  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'	#  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'	#  0xDA -> SUPERSCRIPT ONE
-    u'\ufffe'	#  0xDB -> UNDEFINED
-    u'\ufffe'	#  0xDC -> UNDEFINED
-    u'\ufffe'	#  0xDD -> UNDEFINED
-    u'\ufffe'	#  0xDE -> UNDEFINED
-    u'\ufffe'	#  0xDF -> UNDEFINED
-    u'\\'	#  0xE0 -> REVERSE SOLIDUS
-    u'\xf7'	#  0xE1 -> DIVISION SIGN
-    u'S'	#  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'	#  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'	#  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'	#  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'	#  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'	#  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'	#  0xEA -> SUPERSCRIPT TWO
-    u'\ufffe'	#  0xEB -> UNDEFINED
-    u'\ufffe'	#  0xEC -> UNDEFINED
-    u'\ufffe'	#  0xED -> UNDEFINED
-    u'\ufffe'	#  0xEE -> UNDEFINED
-    u'\ufffe'	#  0xEF -> UNDEFINED
-    u'0'	#  0xF0 -> DIGIT ZERO
-    u'1'	#  0xF1 -> DIGIT ONE
-    u'2'	#  0xF2 -> DIGIT TWO
-    u'3'	#  0xF3 -> DIGIT THREE
-    u'4'	#  0xF4 -> DIGIT FOUR
-    u'5'	#  0xF5 -> DIGIT FIVE
-    u'6'	#  0xF6 -> DIGIT SIX
-    u'7'	#  0xF7 -> DIGIT SEVEN
-    u'8'	#  0xF8 -> DIGIT EIGHT
-    u'9'	#  0xF9 -> DIGIT NINE
-    u'\xb3'	#  0xFA -> SUPERSCRIPT THREE
-    u'\ufffe'	#  0xFB -> UNDEFINED
-    u'\ufffe'	#  0xFC -> UNDEFINED
-    u'\ufffe'	#  0xFD -> UNDEFINED
-    u'\ufffe'	#  0xFE -> UNDEFINED
-    u'\x9f'	#  0xFF -> EIGHT ONES
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x9c'     #  0x04 -> SELECT
+    u'\t'       #  0x05 -> HORIZONTAL TABULATION
+    u'\x86'     #  0x06 -> REQUIRED NEW LINE
+    u'\x7f'     #  0x07 -> DELETE
+    u'\x97'     #  0x08 -> GRAPHIC ESCAPE
+    u'\x8d'     #  0x09 -> SUPERSCRIPT
+    u'\x8e'     #  0x0A -> REPEAT
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x9d'     #  0x14 -> RESTORE/ENABLE PRESENTATION
+    u'\x85'     #  0x15 -> NEW LINE
+    u'\x08'     #  0x16 -> BACKSPACE
+    u'\x87'     #  0x17 -> PROGRAM OPERATOR COMMUNICATION
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x92'     #  0x1A -> UNIT BACK SPACE
+    u'\x8f'     #  0x1B -> CUSTOMER USE ONE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u'\x80'     #  0x20 -> DIGIT SELECT
+    u'\x81'     #  0x21 -> START OF SIGNIFICANCE
+    u'\x82'     #  0x22 -> FIELD SEPARATOR
+    u'\x83'     #  0x23 -> WORD UNDERSCORE
+    u'\x84'     #  0x24 -> BYPASS OR INHIBIT PRESENTATION
+    u'\n'       #  0x25 -> LINE FEED
+    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
+    u'\x1b'     #  0x27 -> ESCAPE
+    u'\x88'     #  0x28 -> SET ATTRIBUTE
+    u'\x89'     #  0x29 -> START FIELD EXTENDED
+    u'\x8a'     #  0x2A -> SET MODE OR SWITCH
+    u'\x8b'     #  0x2B -> CONTROL SEQUENCE PREFIX
+    u'\x8c'     #  0x2C -> MODIFY FIELD ATTRIBUTE
+    u'\x05'     #  0x2D -> ENQUIRY
+    u'\x06'     #  0x2E -> ACKNOWLEDGE
+    u'\x07'     #  0x2F -> BELL
+    u'\x90'     #  0x30 -> <reserved>
+    u'\x91'     #  0x31 -> <reserved>
+    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
+    u'\x93'     #  0x33 -> INDEX RETURN
+    u'\x94'     #  0x34 -> PRESENTATION POSITION
+    u'\x95'     #  0x35 -> TRANSPARENT
+    u'\x96'     #  0x36 -> NUMERIC BACKSPACE
+    u'\x04'     #  0x37 -> END OF TRANSMISSION
+    u'\x98'     #  0x38 -> SUBSCRIPT
+    u'\x99'     #  0x39 -> INDENT TABULATION
+    u'\x9a'     #  0x3A -> REVERSE FORM FEED
+    u'\x9b'     #  0x3B -> CUSTOMER USE THREE
+    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'     #  0x3E -> <reserved>
+    u'\x1a'     #  0x3F -> SUBSTITUTE
+    u' '        #  0x40 -> SPACE
+    u'\u05d0'   #  0x41 -> HEBREW LETTER ALEF
+    u'\u05d1'   #  0x42 -> HEBREW LETTER BET
+    u'\u05d2'   #  0x43 -> HEBREW LETTER GIMEL
+    u'\u05d3'   #  0x44 -> HEBREW LETTER DALET
+    u'\u05d4'   #  0x45 -> HEBREW LETTER HE
+    u'\u05d5'   #  0x46 -> HEBREW LETTER VAV
+    u'\u05d6'   #  0x47 -> HEBREW LETTER ZAYIN
+    u'\u05d7'   #  0x48 -> HEBREW LETTER HET
+    u'\u05d8'   #  0x49 -> HEBREW LETTER TET
+    u'\xa2'     #  0x4A -> CENT SIGN
+    u'.'        #  0x4B -> FULL STOP
+    u'<'        #  0x4C -> LESS-THAN SIGN
+    u'('        #  0x4D -> LEFT PARENTHESIS
+    u'+'        #  0x4E -> PLUS SIGN
+    u'|'        #  0x4F -> VERTICAL LINE
+    u'&'        #  0x50 -> AMPERSAND
+    u'\u05d9'   #  0x51 -> HEBREW LETTER YOD
+    u'\u05da'   #  0x52 -> HEBREW LETTER FINAL KAF
+    u'\u05db'   #  0x53 -> HEBREW LETTER KAF
+    u'\u05dc'   #  0x54 -> HEBREW LETTER LAMED
+    u'\u05dd'   #  0x55 -> HEBREW LETTER FINAL MEM
+    u'\u05de'   #  0x56 -> HEBREW LETTER MEM
+    u'\u05df'   #  0x57 -> HEBREW LETTER FINAL NUN
+    u'\u05e0'   #  0x58 -> HEBREW LETTER NUN
+    u'\u05e1'   #  0x59 -> HEBREW LETTER SAMEKH
+    u'!'        #  0x5A -> EXCLAMATION MARK
+    u'$'        #  0x5B -> DOLLAR SIGN
+    u'*'        #  0x5C -> ASTERISK
+    u')'        #  0x5D -> RIGHT PARENTHESIS
+    u';'        #  0x5E -> SEMICOLON
+    u'\xac'     #  0x5F -> NOT SIGN
+    u'-'        #  0x60 -> HYPHEN-MINUS
+    u'/'        #  0x61 -> SOLIDUS
+    u'\u05e2'   #  0x62 -> HEBREW LETTER AYIN
+    u'\u05e3'   #  0x63 -> HEBREW LETTER FINAL PE
+    u'\u05e4'   #  0x64 -> HEBREW LETTER PE
+    u'\u05e5'   #  0x65 -> HEBREW LETTER FINAL TSADI
+    u'\u05e6'   #  0x66 -> HEBREW LETTER TSADI
+    u'\u05e7'   #  0x67 -> HEBREW LETTER QOF
+    u'\u05e8'   #  0x68 -> HEBREW LETTER RESH
+    u'\u05e9'   #  0x69 -> HEBREW LETTER SHIN
+    u'\xa6'     #  0x6A -> BROKEN BAR
+    u','        #  0x6B -> COMMA
+    u'%'        #  0x6C -> PERCENT SIGN
+    u'_'        #  0x6D -> LOW LINE
+    u'>'        #  0x6E -> GREATER-THAN SIGN
+    u'?'        #  0x6F -> QUESTION MARK
+    u'\ufffe'   #  0x70 -> UNDEFINED
+    u'\u05ea'   #  0x71 -> HEBREW LETTER TAV
+    u'\ufffe'   #  0x72 -> UNDEFINED
+    u'\ufffe'   #  0x73 -> UNDEFINED
+    u'\xa0'     #  0x74 -> NO-BREAK SPACE
+    u'\ufffe'   #  0x75 -> UNDEFINED
+    u'\ufffe'   #  0x76 -> UNDEFINED
+    u'\ufffe'   #  0x77 -> UNDEFINED
+    u'\u2017'   #  0x78 -> DOUBLE LOW LINE
+    u'`'        #  0x79 -> GRAVE ACCENT
+    u':'        #  0x7A -> COLON
+    u'#'        #  0x7B -> NUMBER SIGN
+    u'@'        #  0x7C -> COMMERCIAL AT
+    u"'"        #  0x7D -> APOSTROPHE
+    u'='        #  0x7E -> EQUALS SIGN
+    u'"'        #  0x7F -> QUOTATION MARK
+    u'\ufffe'   #  0x80 -> UNDEFINED
+    u'a'        #  0x81 -> LATIN SMALL LETTER A
+    u'b'        #  0x82 -> LATIN SMALL LETTER B
+    u'c'        #  0x83 -> LATIN SMALL LETTER C
+    u'd'        #  0x84 -> LATIN SMALL LETTER D
+    u'e'        #  0x85 -> LATIN SMALL LETTER E
+    u'f'        #  0x86 -> LATIN SMALL LETTER F
+    u'g'        #  0x87 -> LATIN SMALL LETTER G
+    u'h'        #  0x88 -> LATIN SMALL LETTER H
+    u'i'        #  0x89 -> LATIN SMALL LETTER I
+    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\ufffe'   #  0x8C -> UNDEFINED
+    u'\ufffe'   #  0x8D -> UNDEFINED
+    u'\ufffe'   #  0x8E -> UNDEFINED
+    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
+    u'\xb0'     #  0x90 -> DEGREE SIGN
+    u'j'        #  0x91 -> LATIN SMALL LETTER J
+    u'k'        #  0x92 -> LATIN SMALL LETTER K
+    u'l'        #  0x93 -> LATIN SMALL LETTER L
+    u'm'        #  0x94 -> LATIN SMALL LETTER M
+    u'n'        #  0x95 -> LATIN SMALL LETTER N
+    u'o'        #  0x96 -> LATIN SMALL LETTER O
+    u'p'        #  0x97 -> LATIN SMALL LETTER P
+    u'q'        #  0x98 -> LATIN SMALL LETTER Q
+    u'r'        #  0x99 -> LATIN SMALL LETTER R
+    u'\ufffe'   #  0x9A -> UNDEFINED
+    u'\ufffe'   #  0x9B -> UNDEFINED
+    u'\ufffe'   #  0x9C -> UNDEFINED
+    u'\xb8'     #  0x9D -> CEDILLA
+    u'\ufffe'   #  0x9E -> UNDEFINED
+    u'\xa4'     #  0x9F -> CURRENCY SIGN
+    u'\xb5'     #  0xA0 -> MICRO SIGN
+    u'~'        #  0xA1 -> TILDE
+    u's'        #  0xA2 -> LATIN SMALL LETTER S
+    u't'        #  0xA3 -> LATIN SMALL LETTER T
+    u'u'        #  0xA4 -> LATIN SMALL LETTER U
+    u'v'        #  0xA5 -> LATIN SMALL LETTER V
+    u'w'        #  0xA6 -> LATIN SMALL LETTER W
+    u'x'        #  0xA7 -> LATIN SMALL LETTER X
+    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
+    u'\ufffe'   #  0xAA -> UNDEFINED
+    u'\ufffe'   #  0xAB -> UNDEFINED
+    u'\ufffe'   #  0xAC -> UNDEFINED
+    u'\ufffe'   #  0xAD -> UNDEFINED
+    u'\ufffe'   #  0xAE -> UNDEFINED
+    u'\xae'     #  0xAF -> REGISTERED SIGN
+    u'^'        #  0xB0 -> CIRCUMFLEX ACCENT
+    u'\xa3'     #  0xB1 -> POUND SIGN
+    u'\xa5'     #  0xB2 -> YEN SIGN
+    u'\xb7'     #  0xB3 -> MIDDLE DOT
+    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'     #  0xB5 -> SECTION SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'['        #  0xBA -> LEFT SQUARE BRACKET
+    u']'        #  0xBB -> RIGHT SQUARE BRACKET
+    u'\xaf'     #  0xBC -> MACRON
+    u'\xa8'     #  0xBD -> DIAERESIS
+    u'\xb4'     #  0xBE -> ACUTE ACCENT
+    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
+    u'{'        #  0xC0 -> LEFT CURLY BRACKET
+    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'     #  0xCA -> SOFT HYPHEN
+    u'\ufffe'   #  0xCB -> UNDEFINED
+    u'\ufffe'   #  0xCC -> UNDEFINED
+    u'\ufffe'   #  0xCD -> UNDEFINED
+    u'\ufffe'   #  0xCE -> UNDEFINED
+    u'\ufffe'   #  0xCF -> UNDEFINED
+    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
+    u'\ufffe'   #  0xDB -> UNDEFINED
+    u'\ufffe'   #  0xDC -> UNDEFINED
+    u'\ufffe'   #  0xDD -> UNDEFINED
+    u'\ufffe'   #  0xDE -> UNDEFINED
+    u'\ufffe'   #  0xDF -> UNDEFINED
+    u'\\'       #  0xE0 -> REVERSE SOLIDUS
+    u'\xf7'     #  0xE1 -> DIVISION SIGN
+    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
+    u'\ufffe'   #  0xEB -> UNDEFINED
+    u'\ufffe'   #  0xEC -> UNDEFINED
+    u'\ufffe'   #  0xED -> UNDEFINED
+    u'\ufffe'   #  0xEE -> UNDEFINED
+    u'\ufffe'   #  0xEF -> UNDEFINED
+    u'0'        #  0xF0 -> DIGIT ZERO
+    u'1'        #  0xF1 -> DIGIT ONE
+    u'2'        #  0xF2 -> DIGIT TWO
+    u'3'        #  0xF3 -> DIGIT THREE
+    u'4'        #  0xF4 -> DIGIT FOUR
+    u'5'        #  0xF5 -> DIGIT FIVE
+    u'6'        #  0xF6 -> DIGIT SIX
+    u'7'        #  0xF7 -> DIGIT SEVEN
+    u'8'        #  0xF8 -> DIGIT EIGHT
+    u'9'        #  0xF9 -> DIGIT NINE
+    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
+    u'\ufffe'   #  0xFB -> UNDEFINED
+    u'\ufffe'   #  0xFC -> UNDEFINED
+    u'\ufffe'   #  0xFD -> UNDEFINED
+    u'\ufffe'   #  0xFE -> UNDEFINED
+    u'\x9f'     #  0xFF -> EIGHT ONES
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x37,	#  END OF TRANSMISSION
-    0x0005: 0x2D,	#  ENQUIRY
-    0x0006: 0x2E,	#  ACKNOWLEDGE
-    0x0007: 0x2F,	#  BELL
-    0x0008: 0x16,	#  BACKSPACE
-    0x0009: 0x05,	#  HORIZONTAL TABULATION
-    0x000A: 0x25,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x3C,	#  DEVICE CONTROL FOUR
-    0x0015: 0x3D,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x32,	#  SYNCHRONOUS IDLE
-    0x0017: 0x26,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x3F,	#  SUBSTITUTE
-    0x001B: 0x27,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x40,	#  SPACE
-    0x0021: 0x5A,	#  EXCLAMATION MARK
-    0x0022: 0x7F,	#  QUOTATION MARK
-    0x0023: 0x7B,	#  NUMBER SIGN
-    0x0024: 0x5B,	#  DOLLAR SIGN
-    0x0025: 0x6C,	#  PERCENT SIGN
-    0x0026: 0x50,	#  AMPERSAND
-    0x0027: 0x7D,	#  APOSTROPHE
-    0x0028: 0x4D,	#  LEFT PARENTHESIS
-    0x0029: 0x5D,	#  RIGHT PARENTHESIS
-    0x002A: 0x5C,	#  ASTERISK
-    0x002B: 0x4E,	#  PLUS SIGN
-    0x002C: 0x6B,	#  COMMA
-    0x002D: 0x60,	#  HYPHEN-MINUS
-    0x002E: 0x4B,	#  FULL STOP
-    0x002F: 0x61,	#  SOLIDUS
-    0x0030: 0xF0,	#  DIGIT ZERO
-    0x0031: 0xF1,	#  DIGIT ONE
-    0x0032: 0xF2,	#  DIGIT TWO
-    0x0033: 0xF3,	#  DIGIT THREE
-    0x0034: 0xF4,	#  DIGIT FOUR
-    0x0035: 0xF5,	#  DIGIT FIVE
-    0x0036: 0xF6,	#  DIGIT SIX
-    0x0037: 0xF7,	#  DIGIT SEVEN
-    0x0038: 0xF8,	#  DIGIT EIGHT
-    0x0039: 0xF9,	#  DIGIT NINE
-    0x003A: 0x7A,	#  COLON
-    0x003B: 0x5E,	#  SEMICOLON
-    0x003C: 0x4C,	#  LESS-THAN SIGN
-    0x003D: 0x7E,	#  EQUALS SIGN
-    0x003E: 0x6E,	#  GREATER-THAN SIGN
-    0x003F: 0x6F,	#  QUESTION MARK
-    0x0040: 0x7C,	#  COMMERCIAL AT
-    0x0041: 0xC1,	#  LATIN CAPITAL LETTER A
-    0x0042: 0xC2,	#  LATIN CAPITAL LETTER B
-    0x0043: 0xC3,	#  LATIN CAPITAL LETTER C
-    0x0044: 0xC4,	#  LATIN CAPITAL LETTER D
-    0x0045: 0xC5,	#  LATIN CAPITAL LETTER E
-    0x0046: 0xC6,	#  LATIN CAPITAL LETTER F
-    0x0047: 0xC7,	#  LATIN CAPITAL LETTER G
-    0x0048: 0xC8,	#  LATIN CAPITAL LETTER H
-    0x0049: 0xC9,	#  LATIN CAPITAL LETTER I
-    0x004A: 0xD1,	#  LATIN CAPITAL LETTER J
-    0x004B: 0xD2,	#  LATIN CAPITAL LETTER K
-    0x004C: 0xD3,	#  LATIN CAPITAL LETTER L
-    0x004D: 0xD4,	#  LATIN CAPITAL LETTER M
-    0x004E: 0xD5,	#  LATIN CAPITAL LETTER N
-    0x004F: 0xD6,	#  LATIN CAPITAL LETTER O
-    0x0050: 0xD7,	#  LATIN CAPITAL LETTER P
-    0x0051: 0xD8,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0xD9,	#  LATIN CAPITAL LETTER R
-    0x0053: 0xE2,	#  LATIN CAPITAL LETTER S
-    0x0054: 0xE3,	#  LATIN CAPITAL LETTER T
-    0x0055: 0xE4,	#  LATIN CAPITAL LETTER U
-    0x0056: 0xE5,	#  LATIN CAPITAL LETTER V
-    0x0057: 0xE6,	#  LATIN CAPITAL LETTER W
-    0x0058: 0xE7,	#  LATIN CAPITAL LETTER X
-    0x0059: 0xE8,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0xE9,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0xBA,	#  LEFT SQUARE BRACKET
-    0x005C: 0xE0,	#  REVERSE SOLIDUS
-    0x005D: 0xBB,	#  RIGHT SQUARE BRACKET
-    0x005E: 0xB0,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x6D,	#  LOW LINE
-    0x0060: 0x79,	#  GRAVE ACCENT
-    0x0061: 0x81,	#  LATIN SMALL LETTER A
-    0x0062: 0x82,	#  LATIN SMALL LETTER B
-    0x0063: 0x83,	#  LATIN SMALL LETTER C
-    0x0064: 0x84,	#  LATIN SMALL LETTER D
-    0x0065: 0x85,	#  LATIN SMALL LETTER E
-    0x0066: 0x86,	#  LATIN SMALL LETTER F
-    0x0067: 0x87,	#  LATIN SMALL LETTER G
-    0x0068: 0x88,	#  LATIN SMALL LETTER H
-    0x0069: 0x89,	#  LATIN SMALL LETTER I
-    0x006A: 0x91,	#  LATIN SMALL LETTER J
-    0x006B: 0x92,	#  LATIN SMALL LETTER K
-    0x006C: 0x93,	#  LATIN SMALL LETTER L
-    0x006D: 0x94,	#  LATIN SMALL LETTER M
-    0x006E: 0x95,	#  LATIN SMALL LETTER N
-    0x006F: 0x96,	#  LATIN SMALL LETTER O
-    0x0070: 0x97,	#  LATIN SMALL LETTER P
-    0x0071: 0x98,	#  LATIN SMALL LETTER Q
-    0x0072: 0x99,	#  LATIN SMALL LETTER R
-    0x0073: 0xA2,	#  LATIN SMALL LETTER S
-    0x0074: 0xA3,	#  LATIN SMALL LETTER T
-    0x0075: 0xA4,	#  LATIN SMALL LETTER U
-    0x0076: 0xA5,	#  LATIN SMALL LETTER V
-    0x0077: 0xA6,	#  LATIN SMALL LETTER W
-    0x0078: 0xA7,	#  LATIN SMALL LETTER X
-    0x0079: 0xA8,	#  LATIN SMALL LETTER Y
-    0x007A: 0xA9,	#  LATIN SMALL LETTER Z
-    0x007B: 0xC0,	#  LEFT CURLY BRACKET
-    0x007C: 0x4F,	#  VERTICAL LINE
-    0x007D: 0xD0,	#  RIGHT CURLY BRACKET
-    0x007E: 0xA1,	#  TILDE
-    0x007F: 0x07,	#  DELETE
-    0x0080: 0x20,	#  DIGIT SELECT
-    0x0081: 0x21,	#  START OF SIGNIFICANCE
-    0x0082: 0x22,	#  FIELD SEPARATOR
-    0x0083: 0x23,	#  WORD UNDERSCORE
-    0x0084: 0x24,	#  BYPASS OR INHIBIT PRESENTATION
-    0x0085: 0x15,	#  NEW LINE
-    0x0086: 0x06,	#  REQUIRED NEW LINE
-    0x0087: 0x17,	#  PROGRAM OPERATOR COMMUNICATION
-    0x0088: 0x28,	#  SET ATTRIBUTE
-    0x0089: 0x29,	#  START FIELD EXTENDED
-    0x008A: 0x2A,	#  SET MODE OR SWITCH
-    0x008B: 0x2B,	#  CONTROL SEQUENCE PREFIX
-    0x008C: 0x2C,	#  MODIFY FIELD ATTRIBUTE
-    0x008D: 0x09,	#  SUPERSCRIPT
-    0x008E: 0x0A,	#  REPEAT
-    0x008F: 0x1B,	#  CUSTOMER USE ONE
-    0x0090: 0x30,	#  <reserved>
-    0x0091: 0x31,	#  <reserved>
-    0x0092: 0x1A,	#  UNIT BACK SPACE
-    0x0093: 0x33,	#  INDEX RETURN
-    0x0094: 0x34,	#  PRESENTATION POSITION
-    0x0095: 0x35,	#  TRANSPARENT
-    0x0096: 0x36,	#  NUMERIC BACKSPACE
-    0x0097: 0x08,	#  GRAPHIC ESCAPE
-    0x0098: 0x38,	#  SUBSCRIPT
-    0x0099: 0x39,	#  INDENT TABULATION
-    0x009A: 0x3A,	#  REVERSE FORM FEED
-    0x009B: 0x3B,	#  CUSTOMER USE THREE
-    0x009C: 0x04,	#  SELECT
-    0x009D: 0x14,	#  RESTORE/ENABLE PRESENTATION
-    0x009E: 0x3E,	#  <reserved>
-    0x009F: 0xFF,	#  EIGHT ONES
-    0x00A0: 0x74,	#  NO-BREAK SPACE
-    0x00A2: 0x4A,	#  CENT SIGN
-    0x00A3: 0xB1,	#  POUND SIGN
-    0x00A4: 0x9F,	#  CURRENCY SIGN
-    0x00A5: 0xB2,	#  YEN SIGN
-    0x00A6: 0x6A,	#  BROKEN BAR
-    0x00A7: 0xB5,	#  SECTION SIGN
-    0x00A8: 0xBD,	#  DIAERESIS
-    0x00A9: 0xB4,	#  COPYRIGHT SIGN
-    0x00AB: 0x8A,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0x5F,	#  NOT SIGN
-    0x00AD: 0xCA,	#  SOFT HYPHEN
-    0x00AE: 0xAF,	#  REGISTERED SIGN
-    0x00AF: 0xBC,	#  MACRON
-    0x00B0: 0x90,	#  DEGREE SIGN
-    0x00B1: 0x8F,	#  PLUS-MINUS SIGN
-    0x00B2: 0xEA,	#  SUPERSCRIPT TWO
-    0x00B3: 0xFA,	#  SUPERSCRIPT THREE
-    0x00B4: 0xBE,	#  ACUTE ACCENT
-    0x00B5: 0xA0,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB3,	#  MIDDLE DOT
-    0x00B8: 0x9D,	#  CEDILLA
-    0x00B9: 0xDA,	#  SUPERSCRIPT ONE
-    0x00BB: 0x8B,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xB7,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xB8,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xB9,	#  VULGAR FRACTION THREE QUARTERS
-    0x00D7: 0xBF,	#  MULTIPLICATION SIGN
-    0x00F7: 0xE1,	#  DIVISION SIGN
-    0x05D0: 0x41,	#  HEBREW LETTER ALEF
-    0x05D1: 0x42,	#  HEBREW LETTER BET
-    0x05D2: 0x43,	#  HEBREW LETTER GIMEL
-    0x05D3: 0x44,	#  HEBREW LETTER DALET
-    0x05D4: 0x45,	#  HEBREW LETTER HE
-    0x05D5: 0x46,	#  HEBREW LETTER VAV
-    0x05D6: 0x47,	#  HEBREW LETTER ZAYIN
-    0x05D7: 0x48,	#  HEBREW LETTER HET
-    0x05D8: 0x49,	#  HEBREW LETTER TET
-    0x05D9: 0x51,	#  HEBREW LETTER YOD
-    0x05DA: 0x52,	#  HEBREW LETTER FINAL KAF
-    0x05DB: 0x53,	#  HEBREW LETTER KAF
-    0x05DC: 0x54,	#  HEBREW LETTER LAMED
-    0x05DD: 0x55,	#  HEBREW LETTER FINAL MEM
-    0x05DE: 0x56,	#  HEBREW LETTER MEM
-    0x05DF: 0x57,	#  HEBREW LETTER FINAL NUN
-    0x05E0: 0x58,	#  HEBREW LETTER NUN
-    0x05E1: 0x59,	#  HEBREW LETTER SAMEKH
-    0x05E2: 0x62,	#  HEBREW LETTER AYIN
-    0x05E3: 0x63,	#  HEBREW LETTER FINAL PE
-    0x05E4: 0x64,	#  HEBREW LETTER PE
-    0x05E5: 0x65,	#  HEBREW LETTER FINAL TSADI
-    0x05E6: 0x66,	#  HEBREW LETTER TSADI
-    0x05E7: 0x67,	#  HEBREW LETTER QOF
-    0x05E8: 0x68,	#  HEBREW LETTER RESH
-    0x05E9: 0x69,	#  HEBREW LETTER SHIN
-    0x05EA: 0x71,	#  HEBREW LETTER TAV
-    0x2017: 0x78,	#  DOUBLE LOW LINE
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x37,       #  END OF TRANSMISSION
+    0x0005: 0x2D,       #  ENQUIRY
+    0x0006: 0x2E,       #  ACKNOWLEDGE
+    0x0007: 0x2F,       #  BELL
+    0x0008: 0x16,       #  BACKSPACE
+    0x0009: 0x05,       #  HORIZONTAL TABULATION
+    0x000A: 0x25,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x3C,       #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x32,       #  SYNCHRONOUS IDLE
+    0x0017: 0x26,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x3F,       #  SUBSTITUTE
+    0x001B: 0x27,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x40,       #  SPACE
+    0x0021: 0x5A,       #  EXCLAMATION MARK
+    0x0022: 0x7F,       #  QUOTATION MARK
+    0x0023: 0x7B,       #  NUMBER SIGN
+    0x0024: 0x5B,       #  DOLLAR SIGN
+    0x0025: 0x6C,       #  PERCENT SIGN
+    0x0026: 0x50,       #  AMPERSAND
+    0x0027: 0x7D,       #  APOSTROPHE
+    0x0028: 0x4D,       #  LEFT PARENTHESIS
+    0x0029: 0x5D,       #  RIGHT PARENTHESIS
+    0x002A: 0x5C,       #  ASTERISK
+    0x002B: 0x4E,       #  PLUS SIGN
+    0x002C: 0x6B,       #  COMMA
+    0x002D: 0x60,       #  HYPHEN-MINUS
+    0x002E: 0x4B,       #  FULL STOP
+    0x002F: 0x61,       #  SOLIDUS
+    0x0030: 0xF0,       #  DIGIT ZERO
+    0x0031: 0xF1,       #  DIGIT ONE
+    0x0032: 0xF2,       #  DIGIT TWO
+    0x0033: 0xF3,       #  DIGIT THREE
+    0x0034: 0xF4,       #  DIGIT FOUR
+    0x0035: 0xF5,       #  DIGIT FIVE
+    0x0036: 0xF6,       #  DIGIT SIX
+    0x0037: 0xF7,       #  DIGIT SEVEN
+    0x0038: 0xF8,       #  DIGIT EIGHT
+    0x0039: 0xF9,       #  DIGIT NINE
+    0x003A: 0x7A,       #  COLON
+    0x003B: 0x5E,       #  SEMICOLON
+    0x003C: 0x4C,       #  LESS-THAN SIGN
+    0x003D: 0x7E,       #  EQUALS SIGN
+    0x003E: 0x6E,       #  GREATER-THAN SIGN
+    0x003F: 0x6F,       #  QUESTION MARK
+    0x0040: 0x7C,       #  COMMERCIAL AT
+    0x0041: 0xC1,       #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,       #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,       #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,       #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,       #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,       #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,       #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,       #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,       #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,       #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,       #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,       #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,       #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,       #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,       #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,       #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,       #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,       #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,       #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,       #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,       #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,       #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,       #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0xBA,       #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,       #  REVERSE SOLIDUS
+    0x005D: 0xBB,       #  RIGHT SQUARE BRACKET
+    0x005E: 0xB0,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,       #  LOW LINE
+    0x0060: 0x79,       #  GRAVE ACCENT
+    0x0061: 0x81,       #  LATIN SMALL LETTER A
+    0x0062: 0x82,       #  LATIN SMALL LETTER B
+    0x0063: 0x83,       #  LATIN SMALL LETTER C
+    0x0064: 0x84,       #  LATIN SMALL LETTER D
+    0x0065: 0x85,       #  LATIN SMALL LETTER E
+    0x0066: 0x86,       #  LATIN SMALL LETTER F
+    0x0067: 0x87,       #  LATIN SMALL LETTER G
+    0x0068: 0x88,       #  LATIN SMALL LETTER H
+    0x0069: 0x89,       #  LATIN SMALL LETTER I
+    0x006A: 0x91,       #  LATIN SMALL LETTER J
+    0x006B: 0x92,       #  LATIN SMALL LETTER K
+    0x006C: 0x93,       #  LATIN SMALL LETTER L
+    0x006D: 0x94,       #  LATIN SMALL LETTER M
+    0x006E: 0x95,       #  LATIN SMALL LETTER N
+    0x006F: 0x96,       #  LATIN SMALL LETTER O
+    0x0070: 0x97,       #  LATIN SMALL LETTER P
+    0x0071: 0x98,       #  LATIN SMALL LETTER Q
+    0x0072: 0x99,       #  LATIN SMALL LETTER R
+    0x0073: 0xA2,       #  LATIN SMALL LETTER S
+    0x0074: 0xA3,       #  LATIN SMALL LETTER T
+    0x0075: 0xA4,       #  LATIN SMALL LETTER U
+    0x0076: 0xA5,       #  LATIN SMALL LETTER V
+    0x0077: 0xA6,       #  LATIN SMALL LETTER W
+    0x0078: 0xA7,       #  LATIN SMALL LETTER X
+    0x0079: 0xA8,       #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,       #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,       #  LEFT CURLY BRACKET
+    0x007C: 0x4F,       #  VERTICAL LINE
+    0x007D: 0xD0,       #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,       #  TILDE
+    0x007F: 0x07,       #  DELETE
+    0x0080: 0x20,       #  DIGIT SELECT
+    0x0081: 0x21,       #  START OF SIGNIFICANCE
+    0x0082: 0x22,       #  FIELD SEPARATOR
+    0x0083: 0x23,       #  WORD UNDERSCORE
+    0x0084: 0x24,       #  BYPASS OR INHIBIT PRESENTATION
+    0x0085: 0x15,       #  NEW LINE
+    0x0086: 0x06,       #  REQUIRED NEW LINE
+    0x0087: 0x17,       #  PROGRAM OPERATOR COMMUNICATION
+    0x0088: 0x28,       #  SET ATTRIBUTE
+    0x0089: 0x29,       #  START FIELD EXTENDED
+    0x008A: 0x2A,       #  SET MODE OR SWITCH
+    0x008B: 0x2B,       #  CONTROL SEQUENCE PREFIX
+    0x008C: 0x2C,       #  MODIFY FIELD ATTRIBUTE
+    0x008D: 0x09,       #  SUPERSCRIPT
+    0x008E: 0x0A,       #  REPEAT
+    0x008F: 0x1B,       #  CUSTOMER USE ONE
+    0x0090: 0x30,       #  <reserved>
+    0x0091: 0x31,       #  <reserved>
+    0x0092: 0x1A,       #  UNIT BACK SPACE
+    0x0093: 0x33,       #  INDEX RETURN
+    0x0094: 0x34,       #  PRESENTATION POSITION
+    0x0095: 0x35,       #  TRANSPARENT
+    0x0096: 0x36,       #  NUMERIC BACKSPACE
+    0x0097: 0x08,       #  GRAPHIC ESCAPE
+    0x0098: 0x38,       #  SUBSCRIPT
+    0x0099: 0x39,       #  INDENT TABULATION
+    0x009A: 0x3A,       #  REVERSE FORM FEED
+    0x009B: 0x3B,       #  CUSTOMER USE THREE
+    0x009C: 0x04,       #  SELECT
+    0x009D: 0x14,       #  RESTORE/ENABLE PRESENTATION
+    0x009E: 0x3E,       #  <reserved>
+    0x009F: 0xFF,       #  EIGHT ONES
+    0x00A0: 0x74,       #  NO-BREAK SPACE
+    0x00A2: 0x4A,       #  CENT SIGN
+    0x00A3: 0xB1,       #  POUND SIGN
+    0x00A4: 0x9F,       #  CURRENCY SIGN
+    0x00A5: 0xB2,       #  YEN SIGN
+    0x00A6: 0x6A,       #  BROKEN BAR
+    0x00A7: 0xB5,       #  SECTION SIGN
+    0x00A8: 0xBD,       #  DIAERESIS
+    0x00A9: 0xB4,       #  COPYRIGHT SIGN
+    0x00AB: 0x8A,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0x5F,       #  NOT SIGN
+    0x00AD: 0xCA,       #  SOFT HYPHEN
+    0x00AE: 0xAF,       #  REGISTERED SIGN
+    0x00AF: 0xBC,       #  MACRON
+    0x00B0: 0x90,       #  DEGREE SIGN
+    0x00B1: 0x8F,       #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,       #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,       #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,       #  ACUTE ACCENT
+    0x00B5: 0xA0,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB3,       #  MIDDLE DOT
+    0x00B8: 0x9D,       #  CEDILLA
+    0x00B9: 0xDA,       #  SUPERSCRIPT ONE
+    0x00BB: 0x8B,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,       #  VULGAR FRACTION THREE QUARTERS
+    0x00D7: 0xBF,       #  MULTIPLICATION SIGN
+    0x00F7: 0xE1,       #  DIVISION SIGN
+    0x05D0: 0x41,       #  HEBREW LETTER ALEF
+    0x05D1: 0x42,       #  HEBREW LETTER BET
+    0x05D2: 0x43,       #  HEBREW LETTER GIMEL
+    0x05D3: 0x44,       #  HEBREW LETTER DALET
+    0x05D4: 0x45,       #  HEBREW LETTER HE
+    0x05D5: 0x46,       #  HEBREW LETTER VAV
+    0x05D6: 0x47,       #  HEBREW LETTER ZAYIN
+    0x05D7: 0x48,       #  HEBREW LETTER HET
+    0x05D8: 0x49,       #  HEBREW LETTER TET
+    0x05D9: 0x51,       #  HEBREW LETTER YOD
+    0x05DA: 0x52,       #  HEBREW LETTER FINAL KAF
+    0x05DB: 0x53,       #  HEBREW LETTER KAF
+    0x05DC: 0x54,       #  HEBREW LETTER LAMED
+    0x05DD: 0x55,       #  HEBREW LETTER FINAL MEM
+    0x05DE: 0x56,       #  HEBREW LETTER MEM
+    0x05DF: 0x57,       #  HEBREW LETTER FINAL NUN
+    0x05E0: 0x58,       #  HEBREW LETTER NUN
+    0x05E1: 0x59,       #  HEBREW LETTER SAMEKH
+    0x05E2: 0x62,       #  HEBREW LETTER AYIN
+    0x05E3: 0x63,       #  HEBREW LETTER FINAL PE
+    0x05E4: 0x64,       #  HEBREW LETTER PE
+    0x05E5: 0x65,       #  HEBREW LETTER FINAL TSADI
+    0x05E6: 0x66,       #  HEBREW LETTER TSADI
+    0x05E7: 0x67,       #  HEBREW LETTER QOF
+    0x05E8: 0x68,       #  HEBREW LETTER RESH
+    0x05E9: 0x69,       #  HEBREW LETTER SHIN
+    0x05EA: 0x71,       #  HEBREW LETTER TAV
+    0x2017: 0x78,       #  DOUBLE LOW LINE
 }
-

Modified: python/trunk/Lib/encodings/cp437.py
==============================================================================
--- python/trunk/Lib/encodings/cp437.py	(original)
+++ python/trunk/Lib/encodings/cp437.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x00c7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x00ec,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x008e: 0x00c4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,	#  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,	#  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00f2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00fb,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00ff,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0099: 0x00d6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00a2,	#  CENT SIGN
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x00a5,	#  YEN SIGN
-    0x009e: 0x20a7,	#  PESETA SIGN
-    0x009f: 0x0192,	#  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,	#  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,	#  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,	#  INVERTED QUESTION MARK
-    0x00a9: 0x2310,	#  REVERSED NOT SIGN
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,	#  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,	#  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x258c,	#  LEFT HALF BLOCK
-    0x00de: 0x2590,	#  RIGHT HALF BLOCK
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x03b1,	#  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,	#  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,	#  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,	#  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,	#  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,	#  MICRO SIGN
-    0x00e7: 0x03c4,	#  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,	#  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,	#  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,	#  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,	#  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,	#  INFINITY
-    0x00ed: 0x03c6,	#  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,	#  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,	#  INTERSECTION
-    0x00f0: 0x2261,	#  IDENTICAL TO
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x2265,	#  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,	#  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,	#  TOP HALF INTEGRAL
-    0x00f5: 0x2321,	#  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x2248,	#  ALMOST EQUAL TO
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x2219,	#  BULLET OPERATOR
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x221a,	#  SQUARE ROOT
-    0x00fc: 0x207f,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x008d: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
+    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
+    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
+    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x0098: 0x00ff,     #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x009b: 0x00a2,     #  CENT SIGN
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x00a5,     #  YEN SIGN
+    0x009e: 0x20a7,     #  PESETA SIGN
+    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
+    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
+    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
+    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
+    0x00a9: 0x2310,     #  REVERSED NOT SIGN
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
+    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x258c,     #  LEFT HALF BLOCK
+    0x00de: 0x2590,     #  RIGHT HALF BLOCK
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
+    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
+    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
+    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
+    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
+    0x00e6: 0x00b5,     #  MICRO SIGN
+    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
+    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
+    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
+    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
+    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
+    0x00ec: 0x221e,     #  INFINITY
+    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
+    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
+    0x00ef: 0x2229,     #  INTERSECTION
+    0x00f0: 0x2261,     #  IDENTICAL TO
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
+    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
+    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
+    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x2248,     #  ALMOST EQUAL TO
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x2219,     #  BULLET OPERATOR
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x221a,     #  SQUARE ROOT
+    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\xc7'	#  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'	#  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'	#  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'	#  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'	#  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'	#  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'	#  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'	#  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'	#  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xec'	#  0x008d -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xc4'	#  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'	#  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'	#  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'	#  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'	#  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'	#  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xfb'	#  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'	#  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xff'	#  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xd6'	#  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xa2'	#  0x009b -> CENT SIGN
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\xa5'	#  0x009d -> YEN SIGN
-    u'\u20a7'	#  0x009e -> PESETA SIGN
-    u'\u0192'	#  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'	#  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'	#  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'	#  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'	#  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'	#  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'	#  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'	#  0x00a8 -> INVERTED QUESTION MARK
-    u'\u2310'	#  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'	#  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'	#  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'	#  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'	#  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'	#  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'	#  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'	#  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'	#  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'	#  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'	#  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'	#  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'	#  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'	#  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'	#  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'	#  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'	#  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'	#  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'	#  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'	#  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'	#  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'	#  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'	#  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'	#  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'	#  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'	#  0x00e6 -> MICRO SIGN
-    u'\u03c4'	#  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'	#  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'	#  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'	#  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'	#  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'	#  0x00ec -> INFINITY
-    u'\u03c6'	#  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'	#  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'	#  0x00ef -> INTERSECTION
-    u'\u2261'	#  0x00f0 -> IDENTICAL TO
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'	#  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'	#  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'	#  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'	#  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\u2248'	#  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\u2219'	#  0x00f9 -> BULLET OPERATOR
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\u221a'	#  0x00fb -> SQUARE ROOT
-    u'\u207f'	#  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xec'     #  0x008d -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
+    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
+    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xff'     #  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xa2'     #  0x009b -> CENT SIGN
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\xa5'     #  0x009d -> YEN SIGN
+    u'\u20a7'   #  0x009e -> PESETA SIGN
+    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
+    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
+    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
+    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
+    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
+    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
+    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
+    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
+    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
+    u'\xb5'     #  0x00e6 -> MICRO SIGN
+    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
+    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
+    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
+    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
+    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
+    u'\u221e'   #  0x00ec -> INFINITY
+    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
+    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
+    u'\u2229'   #  0x00ef -> INTERSECTION
+    u'\u2261'   #  0x00f0 -> IDENTICAL TO
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
+    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
+    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
+    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\u221a'   #  0x00fb -> SQUARE ROOT
+    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a1: 0x00ad,	#  INVERTED EXCLAMATION MARK
-    0x00a2: 0x009b,	#  CENT SIGN
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00a5: 0x009d,	#  YEN SIGN
-    0x00aa: 0x00a6,	#  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,	#  MICRO SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00ba: 0x00a7,	#  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,	#  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,	#  INVERTED QUESTION MARK
-    0x00c4: 0x008e,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,	#  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0090,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d1: 0x00a5,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d6: 0x0099,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00dc: 0x009a,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x0084,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,	#  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x008d,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x00a4,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x0094,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00f9: 0x0097,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0x0098,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0192: 0x009f,	#  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,	#  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,	#  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,	#  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,	#  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,	#  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,	#  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,	#  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,	#  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,	#  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,	#  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,	#  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,	#  GREEK SMALL LETTER PHI
-    0x207f: 0x00fc,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,	#  PESETA SIGN
-    0x2219: 0x00f9,	#  BULLET OPERATOR
-    0x221a: 0x00fb,	#  SQUARE ROOT
-    0x221e: 0x00ec,	#  INFINITY
-    0x2229: 0x00ef,	#  INTERSECTION
-    0x2248: 0x00f7,	#  ALMOST EQUAL TO
-    0x2261: 0x00f0,	#  IDENTICAL TO
-    0x2264: 0x00f3,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,	#  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,	#  REVERSED NOT SIGN
-    0x2320: 0x00f4,	#  TOP HALF INTEGRAL
-    0x2321: 0x00f5,	#  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x258c: 0x00dd,	#  LEFT HALF BLOCK
-    0x2590: 0x00de,	#  RIGHT HALF BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
+    0x00a2: 0x009b,     #  CENT SIGN
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00a5: 0x009d,     #  YEN SIGN
+    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b5: 0x00e6,     #  MICRO SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
+    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
+    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
+    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
+    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ec: 0x008d,     #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00ff: 0x0098,     #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
+    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
+    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
+    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
+    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
+    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
+    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
+    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
+    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
+    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
+    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
+    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
+    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
+    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x20a7: 0x009e,     #  PESETA SIGN
+    0x2219: 0x00f9,     #  BULLET OPERATOR
+    0x221a: 0x00fb,     #  SQUARE ROOT
+    0x221e: 0x00ec,     #  INFINITY
+    0x2229: 0x00ef,     #  INTERSECTION
+    0x2248: 0x00f7,     #  ALMOST EQUAL TO
+    0x2261: 0x00f0,     #  IDENTICAL TO
+    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
+    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
+    0x2310: 0x00a9,     #  REVERSED NOT SIGN
+    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
+    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x258c: 0x00dd,     #  LEFT HALF BLOCK
+    0x2590: 0x00de,     #  RIGHT HALF BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp500.py
==============================================================================
--- python/trunk/Lib/encodings/cp500.py	(original)
+++ python/trunk/Lib/encodings/cp500.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x9c'	#  0x04 -> CONTROL
-    u'\t'	#  0x05 -> HORIZONTAL TABULATION
-    u'\x86'	#  0x06 -> CONTROL
-    u'\x7f'	#  0x07 -> DELETE
-    u'\x97'	#  0x08 -> CONTROL
-    u'\x8d'	#  0x09 -> CONTROL
-    u'\x8e'	#  0x0A -> CONTROL
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'	#  0x14 -> CONTROL
-    u'\x85'	#  0x15 -> CONTROL
-    u'\x08'	#  0x16 -> BACKSPACE
-    u'\x87'	#  0x17 -> CONTROL
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x92'	#  0x1A -> CONTROL
-    u'\x8f'	#  0x1B -> CONTROL
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u'\x80'	#  0x20 -> CONTROL
-    u'\x81'	#  0x21 -> CONTROL
-    u'\x82'	#  0x22 -> CONTROL
-    u'\x83'	#  0x23 -> CONTROL
-    u'\x84'	#  0x24 -> CONTROL
-    u'\n'	#  0x25 -> LINE FEED
-    u'\x17'	#  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'	#  0x27 -> ESCAPE
-    u'\x88'	#  0x28 -> CONTROL
-    u'\x89'	#  0x29 -> CONTROL
-    u'\x8a'	#  0x2A -> CONTROL
-    u'\x8b'	#  0x2B -> CONTROL
-    u'\x8c'	#  0x2C -> CONTROL
-    u'\x05'	#  0x2D -> ENQUIRY
-    u'\x06'	#  0x2E -> ACKNOWLEDGE
-    u'\x07'	#  0x2F -> BELL
-    u'\x90'	#  0x30 -> CONTROL
-    u'\x91'	#  0x31 -> CONTROL
-    u'\x16'	#  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'	#  0x33 -> CONTROL
-    u'\x94'	#  0x34 -> CONTROL
-    u'\x95'	#  0x35 -> CONTROL
-    u'\x96'	#  0x36 -> CONTROL
-    u'\x04'	#  0x37 -> END OF TRANSMISSION
-    u'\x98'	#  0x38 -> CONTROL
-    u'\x99'	#  0x39 -> CONTROL
-    u'\x9a'	#  0x3A -> CONTROL
-    u'\x9b'	#  0x3B -> CONTROL
-    u'\x14'	#  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'	#  0x3E -> CONTROL
-    u'\x1a'	#  0x3F -> SUBSTITUTE
-    u' '	#  0x40 -> SPACE
-    u'\xa0'	#  0x41 -> NO-BREAK SPACE
-    u'\xe2'	#  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'	#  0x44 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0x45 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe3'	#  0x46 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'	#  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xf1'	#  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'['	#  0x4A -> LEFT SQUARE BRACKET
-    u'.'	#  0x4B -> FULL STOP
-    u'<'	#  0x4C -> LESS-THAN SIGN
-    u'('	#  0x4D -> LEFT PARENTHESIS
-    u'+'	#  0x4E -> PLUS SIGN
-    u'!'	#  0x4F -> EXCLAMATION MARK
-    u'&'	#  0x50 -> AMPERSAND
-    u'\xe9'	#  0x51 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x54 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xed'	#  0x55 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xec'	#  0x58 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xdf'	#  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u']'	#  0x5A -> RIGHT SQUARE BRACKET
-    u'$'	#  0x5B -> DOLLAR SIGN
-    u'*'	#  0x5C -> ASTERISK
-    u')'	#  0x5D -> RIGHT PARENTHESIS
-    u';'	#  0x5E -> SEMICOLON
-    u'^'	#  0x5F -> CIRCUMFLEX ACCENT
-    u'-'	#  0x60 -> HYPHEN-MINUS
-    u'/'	#  0x61 -> SOLIDUS
-    u'\xc2'	#  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc4'	#  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc0'	#  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc3'	#  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc5'	#  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'	#  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xd1'	#  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xa6'	#  0x6A -> BROKEN BAR
-    u','	#  0x6B -> COMMA
-    u'%'	#  0x6C -> PERCENT SIGN
-    u'_'	#  0x6D -> LOW LINE
-    u'>'	#  0x6E -> GREATER-THAN SIGN
-    u'?'	#  0x6F -> QUESTION MARK
-    u'\xf8'	#  0x70 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xc9'	#  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'	#  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'	#  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'`'	#  0x79 -> GRAVE ACCENT
-    u':'	#  0x7A -> COLON
-    u'#'	#  0x7B -> NUMBER SIGN
-    u'@'	#  0x7C -> COMMERCIAL AT
-    u"'"	#  0x7D -> APOSTROPHE
-    u'='	#  0x7E -> EQUALS SIGN
-    u'"'	#  0x7F -> QUOTATION MARK
-    u'\xd8'	#  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'a'	#  0x81 -> LATIN SMALL LETTER A
-    u'b'	#  0x82 -> LATIN SMALL LETTER B
-    u'c'	#  0x83 -> LATIN SMALL LETTER C
-    u'd'	#  0x84 -> LATIN SMALL LETTER D
-    u'e'	#  0x85 -> LATIN SMALL LETTER E
-    u'f'	#  0x86 -> LATIN SMALL LETTER F
-    u'g'	#  0x87 -> LATIN SMALL LETTER G
-    u'h'	#  0x88 -> LATIN SMALL LETTER H
-    u'i'	#  0x89 -> LATIN SMALL LETTER I
-    u'\xab'	#  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xf0'	#  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
-    u'\xfd'	#  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'	#  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
-    u'\xb1'	#  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'	#  0x90 -> DEGREE SIGN
-    u'j'	#  0x91 -> LATIN SMALL LETTER J
-    u'k'	#  0x92 -> LATIN SMALL LETTER K
-    u'l'	#  0x93 -> LATIN SMALL LETTER L
-    u'm'	#  0x94 -> LATIN SMALL LETTER M
-    u'n'	#  0x95 -> LATIN SMALL LETTER N
-    u'o'	#  0x96 -> LATIN SMALL LETTER O
-    u'p'	#  0x97 -> LATIN SMALL LETTER P
-    u'q'	#  0x98 -> LATIN SMALL LETTER Q
-    u'r'	#  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'	#  0x9A -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0x9B -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'	#  0x9C -> LATIN SMALL LIGATURE AE
-    u'\xb8'	#  0x9D -> CEDILLA
-    u'\xc6'	#  0x9E -> LATIN CAPITAL LIGATURE AE
-    u'\xa4'	#  0x9F -> CURRENCY SIGN
-    u'\xb5'	#  0xA0 -> MICRO SIGN
-    u'~'	#  0xA1 -> TILDE
-    u's'	#  0xA2 -> LATIN SMALL LETTER S
-    u't'	#  0xA3 -> LATIN SMALL LETTER T
-    u'u'	#  0xA4 -> LATIN SMALL LETTER U
-    u'v'	#  0xA5 -> LATIN SMALL LETTER V
-    u'w'	#  0xA6 -> LATIN SMALL LETTER W
-    u'x'	#  0xA7 -> LATIN SMALL LETTER X
-    u'y'	#  0xA8 -> LATIN SMALL LETTER Y
-    u'z'	#  0xA9 -> LATIN SMALL LETTER Z
-    u'\xa1'	#  0xAA -> INVERTED EXCLAMATION MARK
-    u'\xbf'	#  0xAB -> INVERTED QUESTION MARK
-    u'\xd0'	#  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
-    u'\xdd'	#  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'	#  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
-    u'\xae'	#  0xAF -> REGISTERED SIGN
-    u'\xa2'	#  0xB0 -> CENT SIGN
-    u'\xa3'	#  0xB1 -> POUND SIGN
-    u'\xa5'	#  0xB2 -> YEN SIGN
-    u'\xb7'	#  0xB3 -> MIDDLE DOT
-    u'\xa9'	#  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'	#  0xB5 -> SECTION SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xbc'	#  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'\xac'	#  0xBA -> NOT SIGN
-    u'|'	#  0xBB -> VERTICAL LINE
-    u'\xaf'	#  0xBC -> MACRON
-    u'\xa8'	#  0xBD -> DIAERESIS
-    u'\xb4'	#  0xBE -> ACUTE ACCENT
-    u'\xd7'	#  0xBF -> MULTIPLICATION SIGN
-    u'{'	#  0xC0 -> LEFT CURLY BRACKET
-    u'A'	#  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'	#  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'	#  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'	#  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'	#  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'	#  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'	#  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'	#  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'	#  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'	#  0xCA -> SOFT HYPHEN
-    u'\xf4'	#  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'	#  0xCD -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xCE -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'	#  0xCF -> LATIN SMALL LETTER O WITH TILDE
-    u'}'	#  0xD0 -> RIGHT CURLY BRACKET
-    u'J'	#  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'	#  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'	#  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'	#  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'	#  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'	#  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'	#  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'	#  0xDA -> SUPERSCRIPT ONE
-    u'\xfb'	#  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf9'	#  0xDD -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xDE -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'	#  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\\'	#  0xE0 -> REVERSE SOLIDUS
-    u'\xf7'	#  0xE1 -> DIVISION SIGN
-    u'S'	#  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'	#  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'	#  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'	#  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'	#  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'	#  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'	#  0xEA -> SUPERSCRIPT TWO
-    u'\xd4'	#  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd6'	#  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd2'	#  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'	#  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'	#  0xF0 -> DIGIT ZERO
-    u'1'	#  0xF1 -> DIGIT ONE
-    u'2'	#  0xF2 -> DIGIT TWO
-    u'3'	#  0xF3 -> DIGIT THREE
-    u'4'	#  0xF4 -> DIGIT FOUR
-    u'5'	#  0xF5 -> DIGIT FIVE
-    u'6'	#  0xF6 -> DIGIT SIX
-    u'7'	#  0xF7 -> DIGIT SEVEN
-    u'8'	#  0xF8 -> DIGIT EIGHT
-    u'9'	#  0xF9 -> DIGIT NINE
-    u'\xb3'	#  0xFA -> SUPERSCRIPT THREE
-    u'\xdb'	#  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd9'	#  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'	#  0xFF -> CONTROL
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x9c'     #  0x04 -> CONTROL
+    u'\t'       #  0x05 -> HORIZONTAL TABULATION
+    u'\x86'     #  0x06 -> CONTROL
+    u'\x7f'     #  0x07 -> DELETE
+    u'\x97'     #  0x08 -> CONTROL
+    u'\x8d'     #  0x09 -> CONTROL
+    u'\x8e'     #  0x0A -> CONTROL
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x9d'     #  0x14 -> CONTROL
+    u'\x85'     #  0x15 -> CONTROL
+    u'\x08'     #  0x16 -> BACKSPACE
+    u'\x87'     #  0x17 -> CONTROL
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x92'     #  0x1A -> CONTROL
+    u'\x8f'     #  0x1B -> CONTROL
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u'\x80'     #  0x20 -> CONTROL
+    u'\x81'     #  0x21 -> CONTROL
+    u'\x82'     #  0x22 -> CONTROL
+    u'\x83'     #  0x23 -> CONTROL
+    u'\x84'     #  0x24 -> CONTROL
+    u'\n'       #  0x25 -> LINE FEED
+    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
+    u'\x1b'     #  0x27 -> ESCAPE
+    u'\x88'     #  0x28 -> CONTROL
+    u'\x89'     #  0x29 -> CONTROL
+    u'\x8a'     #  0x2A -> CONTROL
+    u'\x8b'     #  0x2B -> CONTROL
+    u'\x8c'     #  0x2C -> CONTROL
+    u'\x05'     #  0x2D -> ENQUIRY
+    u'\x06'     #  0x2E -> ACKNOWLEDGE
+    u'\x07'     #  0x2F -> BELL
+    u'\x90'     #  0x30 -> CONTROL
+    u'\x91'     #  0x31 -> CONTROL
+    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
+    u'\x93'     #  0x33 -> CONTROL
+    u'\x94'     #  0x34 -> CONTROL
+    u'\x95'     #  0x35 -> CONTROL
+    u'\x96'     #  0x36 -> CONTROL
+    u'\x04'     #  0x37 -> END OF TRANSMISSION
+    u'\x98'     #  0x38 -> CONTROL
+    u'\x99'     #  0x39 -> CONTROL
+    u'\x9a'     #  0x3A -> CONTROL
+    u'\x9b'     #  0x3B -> CONTROL
+    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'     #  0x3E -> CONTROL
+    u'\x1a'     #  0x3F -> SUBSTITUTE
+    u' '        #  0x40 -> SPACE
+    u'\xa0'     #  0x41 -> NO-BREAK SPACE
+    u'\xe2'     #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe0'     #  0x44 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0x45 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe3'     #  0x46 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'     #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xf1'     #  0x49 -> LATIN SMALL LETTER N WITH TILDE
+    u'['        #  0x4A -> LEFT SQUARE BRACKET
+    u'.'        #  0x4B -> FULL STOP
+    u'<'        #  0x4C -> LESS-THAN SIGN
+    u'('        #  0x4D -> LEFT PARENTHESIS
+    u'+'        #  0x4E -> PLUS SIGN
+    u'!'        #  0x4F -> EXCLAMATION MARK
+    u'&'        #  0x50 -> AMPERSAND
+    u'\xe9'     #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x54 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xed'     #  0x55 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xec'     #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xdf'     #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
+    u']'        #  0x5A -> RIGHT SQUARE BRACKET
+    u'$'        #  0x5B -> DOLLAR SIGN
+    u'*'        #  0x5C -> ASTERISK
+    u')'        #  0x5D -> RIGHT PARENTHESIS
+    u';'        #  0x5E -> SEMICOLON
+    u'^'        #  0x5F -> CIRCUMFLEX ACCENT
+    u'-'        #  0x60 -> HYPHEN-MINUS
+    u'/'        #  0x61 -> SOLIDUS
+    u'\xc2'     #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc4'     #  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc0'     #  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc3'     #  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc5'     #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc7'     #  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xd1'     #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xa6'     #  0x6A -> BROKEN BAR
+    u','        #  0x6B -> COMMA
+    u'%'        #  0x6C -> PERCENT SIGN
+    u'_'        #  0x6D -> LOW LINE
+    u'>'        #  0x6E -> GREATER-THAN SIGN
+    u'?'        #  0x6F -> QUESTION MARK
+    u'\xf8'     #  0x70 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xc9'     #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'     #  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'     #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'`'        #  0x79 -> GRAVE ACCENT
+    u':'        #  0x7A -> COLON
+    u'#'        #  0x7B -> NUMBER SIGN
+    u'@'        #  0x7C -> COMMERCIAL AT
+    u"'"        #  0x7D -> APOSTROPHE
+    u'='        #  0x7E -> EQUALS SIGN
+    u'"'        #  0x7F -> QUOTATION MARK
+    u'\xd8'     #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'a'        #  0x81 -> LATIN SMALL LETTER A
+    u'b'        #  0x82 -> LATIN SMALL LETTER B
+    u'c'        #  0x83 -> LATIN SMALL LETTER C
+    u'd'        #  0x84 -> LATIN SMALL LETTER D
+    u'e'        #  0x85 -> LATIN SMALL LETTER E
+    u'f'        #  0x86 -> LATIN SMALL LETTER F
+    u'g'        #  0x87 -> LATIN SMALL LETTER G
+    u'h'        #  0x88 -> LATIN SMALL LETTER H
+    u'i'        #  0x89 -> LATIN SMALL LETTER I
+    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xf0'     #  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
+    u'\xfd'     #  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'     #  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
+    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
+    u'\xb0'     #  0x90 -> DEGREE SIGN
+    u'j'        #  0x91 -> LATIN SMALL LETTER J
+    u'k'        #  0x92 -> LATIN SMALL LETTER K
+    u'l'        #  0x93 -> LATIN SMALL LETTER L
+    u'm'        #  0x94 -> LATIN SMALL LETTER M
+    u'n'        #  0x95 -> LATIN SMALL LETTER N
+    u'o'        #  0x96 -> LATIN SMALL LETTER O
+    u'p'        #  0x97 -> LATIN SMALL LETTER P
+    u'q'        #  0x98 -> LATIN SMALL LETTER Q
+    u'r'        #  0x99 -> LATIN SMALL LETTER R
+    u'\xaa'     #  0x9A -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0x9B -> MASCULINE ORDINAL INDICATOR
+    u'\xe6'     #  0x9C -> LATIN SMALL LIGATURE AE
+    u'\xb8'     #  0x9D -> CEDILLA
+    u'\xc6'     #  0x9E -> LATIN CAPITAL LIGATURE AE
+    u'\xa4'     #  0x9F -> CURRENCY SIGN
+    u'\xb5'     #  0xA0 -> MICRO SIGN
+    u'~'        #  0xA1 -> TILDE
+    u's'        #  0xA2 -> LATIN SMALL LETTER S
+    u't'        #  0xA3 -> LATIN SMALL LETTER T
+    u'u'        #  0xA4 -> LATIN SMALL LETTER U
+    u'v'        #  0xA5 -> LATIN SMALL LETTER V
+    u'w'        #  0xA6 -> LATIN SMALL LETTER W
+    u'x'        #  0xA7 -> LATIN SMALL LETTER X
+    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
+    u'\xa1'     #  0xAA -> INVERTED EXCLAMATION MARK
+    u'\xbf'     #  0xAB -> INVERTED QUESTION MARK
+    u'\xd0'     #  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
+    u'\xdd'     #  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'     #  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
+    u'\xae'     #  0xAF -> REGISTERED SIGN
+    u'\xa2'     #  0xB0 -> CENT SIGN
+    u'\xa3'     #  0xB1 -> POUND SIGN
+    u'\xa5'     #  0xB2 -> YEN SIGN
+    u'\xb7'     #  0xB3 -> MIDDLE DOT
+    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
+    u'\xa7'     #  0xB5 -> SECTION SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
+    u'\xac'     #  0xBA -> NOT SIGN
+    u'|'        #  0xBB -> VERTICAL LINE
+    u'\xaf'     #  0xBC -> MACRON
+    u'\xa8'     #  0xBD -> DIAERESIS
+    u'\xb4'     #  0xBE -> ACUTE ACCENT
+    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
+    u'{'        #  0xC0 -> LEFT CURLY BRACKET
+    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'     #  0xCA -> SOFT HYPHEN
+    u'\xf4'     #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'     #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf5'     #  0xCF -> LATIN SMALL LETTER O WITH TILDE
+    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
+    u'\xfb'     #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xf9'     #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xff'     #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\\'       #  0xE0 -> REVERSE SOLIDUS
+    u'\xf7'     #  0xE1 -> DIVISION SIGN
+    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
+    u'\xd4'     #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd6'     #  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd2'     #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd5'     #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
+    u'0'        #  0xF0 -> DIGIT ZERO
+    u'1'        #  0xF1 -> DIGIT ONE
+    u'2'        #  0xF2 -> DIGIT TWO
+    u'3'        #  0xF3 -> DIGIT THREE
+    u'4'        #  0xF4 -> DIGIT FOUR
+    u'5'        #  0xF5 -> DIGIT FIVE
+    u'6'        #  0xF6 -> DIGIT SIX
+    u'7'        #  0xF7 -> DIGIT SEVEN
+    u'8'        #  0xF8 -> DIGIT EIGHT
+    u'9'        #  0xF9 -> DIGIT NINE
+    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
+    u'\xdb'     #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xd9'     #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\x9f'     #  0xFF -> CONTROL
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x37,	#  END OF TRANSMISSION
-    0x0005: 0x2D,	#  ENQUIRY
-    0x0006: 0x2E,	#  ACKNOWLEDGE
-    0x0007: 0x2F,	#  BELL
-    0x0008: 0x16,	#  BACKSPACE
-    0x0009: 0x05,	#  HORIZONTAL TABULATION
-    0x000A: 0x25,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x3C,	#  DEVICE CONTROL FOUR
-    0x0015: 0x3D,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x32,	#  SYNCHRONOUS IDLE
-    0x0017: 0x26,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x3F,	#  SUBSTITUTE
-    0x001B: 0x27,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x40,	#  SPACE
-    0x0021: 0x4F,	#  EXCLAMATION MARK
-    0x0022: 0x7F,	#  QUOTATION MARK
-    0x0023: 0x7B,	#  NUMBER SIGN
-    0x0024: 0x5B,	#  DOLLAR SIGN
-    0x0025: 0x6C,	#  PERCENT SIGN
-    0x0026: 0x50,	#  AMPERSAND
-    0x0027: 0x7D,	#  APOSTROPHE
-    0x0028: 0x4D,	#  LEFT PARENTHESIS
-    0x0029: 0x5D,	#  RIGHT PARENTHESIS
-    0x002A: 0x5C,	#  ASTERISK
-    0x002B: 0x4E,	#  PLUS SIGN
-    0x002C: 0x6B,	#  COMMA
-    0x002D: 0x60,	#  HYPHEN-MINUS
-    0x002E: 0x4B,	#  FULL STOP
-    0x002F: 0x61,	#  SOLIDUS
-    0x0030: 0xF0,	#  DIGIT ZERO
-    0x0031: 0xF1,	#  DIGIT ONE
-    0x0032: 0xF2,	#  DIGIT TWO
-    0x0033: 0xF3,	#  DIGIT THREE
-    0x0034: 0xF4,	#  DIGIT FOUR
-    0x0035: 0xF5,	#  DIGIT FIVE
-    0x0036: 0xF6,	#  DIGIT SIX
-    0x0037: 0xF7,	#  DIGIT SEVEN
-    0x0038: 0xF8,	#  DIGIT EIGHT
-    0x0039: 0xF9,	#  DIGIT NINE
-    0x003A: 0x7A,	#  COLON
-    0x003B: 0x5E,	#  SEMICOLON
-    0x003C: 0x4C,	#  LESS-THAN SIGN
-    0x003D: 0x7E,	#  EQUALS SIGN
-    0x003E: 0x6E,	#  GREATER-THAN SIGN
-    0x003F: 0x6F,	#  QUESTION MARK
-    0x0040: 0x7C,	#  COMMERCIAL AT
-    0x0041: 0xC1,	#  LATIN CAPITAL LETTER A
-    0x0042: 0xC2,	#  LATIN CAPITAL LETTER B
-    0x0043: 0xC3,	#  LATIN CAPITAL LETTER C
-    0x0044: 0xC4,	#  LATIN CAPITAL LETTER D
-    0x0045: 0xC5,	#  LATIN CAPITAL LETTER E
-    0x0046: 0xC6,	#  LATIN CAPITAL LETTER F
-    0x0047: 0xC7,	#  LATIN CAPITAL LETTER G
-    0x0048: 0xC8,	#  LATIN CAPITAL LETTER H
-    0x0049: 0xC9,	#  LATIN CAPITAL LETTER I
-    0x004A: 0xD1,	#  LATIN CAPITAL LETTER J
-    0x004B: 0xD2,	#  LATIN CAPITAL LETTER K
-    0x004C: 0xD3,	#  LATIN CAPITAL LETTER L
-    0x004D: 0xD4,	#  LATIN CAPITAL LETTER M
-    0x004E: 0xD5,	#  LATIN CAPITAL LETTER N
-    0x004F: 0xD6,	#  LATIN CAPITAL LETTER O
-    0x0050: 0xD7,	#  LATIN CAPITAL LETTER P
-    0x0051: 0xD8,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0xD9,	#  LATIN CAPITAL LETTER R
-    0x0053: 0xE2,	#  LATIN CAPITAL LETTER S
-    0x0054: 0xE3,	#  LATIN CAPITAL LETTER T
-    0x0055: 0xE4,	#  LATIN CAPITAL LETTER U
-    0x0056: 0xE5,	#  LATIN CAPITAL LETTER V
-    0x0057: 0xE6,	#  LATIN CAPITAL LETTER W
-    0x0058: 0xE7,	#  LATIN CAPITAL LETTER X
-    0x0059: 0xE8,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0xE9,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x4A,	#  LEFT SQUARE BRACKET
-    0x005C: 0xE0,	#  REVERSE SOLIDUS
-    0x005D: 0x5A,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5F,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x6D,	#  LOW LINE
-    0x0060: 0x79,	#  GRAVE ACCENT
-    0x0061: 0x81,	#  LATIN SMALL LETTER A
-    0x0062: 0x82,	#  LATIN SMALL LETTER B
-    0x0063: 0x83,	#  LATIN SMALL LETTER C
-    0x0064: 0x84,	#  LATIN SMALL LETTER D
-    0x0065: 0x85,	#  LATIN SMALL LETTER E
-    0x0066: 0x86,	#  LATIN SMALL LETTER F
-    0x0067: 0x87,	#  LATIN SMALL LETTER G
-    0x0068: 0x88,	#  LATIN SMALL LETTER H
-    0x0069: 0x89,	#  LATIN SMALL LETTER I
-    0x006A: 0x91,	#  LATIN SMALL LETTER J
-    0x006B: 0x92,	#  LATIN SMALL LETTER K
-    0x006C: 0x93,	#  LATIN SMALL LETTER L
-    0x006D: 0x94,	#  LATIN SMALL LETTER M
-    0x006E: 0x95,	#  LATIN SMALL LETTER N
-    0x006F: 0x96,	#  LATIN SMALL LETTER O
-    0x0070: 0x97,	#  LATIN SMALL LETTER P
-    0x0071: 0x98,	#  LATIN SMALL LETTER Q
-    0x0072: 0x99,	#  LATIN SMALL LETTER R
-    0x0073: 0xA2,	#  LATIN SMALL LETTER S
-    0x0074: 0xA3,	#  LATIN SMALL LETTER T
-    0x0075: 0xA4,	#  LATIN SMALL LETTER U
-    0x0076: 0xA5,	#  LATIN SMALL LETTER V
-    0x0077: 0xA6,	#  LATIN SMALL LETTER W
-    0x0078: 0xA7,	#  LATIN SMALL LETTER X
-    0x0079: 0xA8,	#  LATIN SMALL LETTER Y
-    0x007A: 0xA9,	#  LATIN SMALL LETTER Z
-    0x007B: 0xC0,	#  LEFT CURLY BRACKET
-    0x007C: 0xBB,	#  VERTICAL LINE
-    0x007D: 0xD0,	#  RIGHT CURLY BRACKET
-    0x007E: 0xA1,	#  TILDE
-    0x007F: 0x07,	#  DELETE
-    0x0080: 0x20,	#  CONTROL
-    0x0081: 0x21,	#  CONTROL
-    0x0082: 0x22,	#  CONTROL
-    0x0083: 0x23,	#  CONTROL
-    0x0084: 0x24,	#  CONTROL
-    0x0085: 0x15,	#  CONTROL
-    0x0086: 0x06,	#  CONTROL
-    0x0087: 0x17,	#  CONTROL
-    0x0088: 0x28,	#  CONTROL
-    0x0089: 0x29,	#  CONTROL
-    0x008A: 0x2A,	#  CONTROL
-    0x008B: 0x2B,	#  CONTROL
-    0x008C: 0x2C,	#  CONTROL
-    0x008D: 0x09,	#  CONTROL
-    0x008E: 0x0A,	#  CONTROL
-    0x008F: 0x1B,	#  CONTROL
-    0x0090: 0x30,	#  CONTROL
-    0x0091: 0x31,	#  CONTROL
-    0x0092: 0x1A,	#  CONTROL
-    0x0093: 0x33,	#  CONTROL
-    0x0094: 0x34,	#  CONTROL
-    0x0095: 0x35,	#  CONTROL
-    0x0096: 0x36,	#  CONTROL
-    0x0097: 0x08,	#  CONTROL
-    0x0098: 0x38,	#  CONTROL
-    0x0099: 0x39,	#  CONTROL
-    0x009A: 0x3A,	#  CONTROL
-    0x009B: 0x3B,	#  CONTROL
-    0x009C: 0x04,	#  CONTROL
-    0x009D: 0x14,	#  CONTROL
-    0x009E: 0x3E,	#  CONTROL
-    0x009F: 0xFF,	#  CONTROL
-    0x00A0: 0x41,	#  NO-BREAK SPACE
-    0x00A1: 0xAA,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xB0,	#  CENT SIGN
-    0x00A3: 0xB1,	#  POUND SIGN
-    0x00A4: 0x9F,	#  CURRENCY SIGN
-    0x00A5: 0xB2,	#  YEN SIGN
-    0x00A6: 0x6A,	#  BROKEN BAR
-    0x00A7: 0xB5,	#  SECTION SIGN
-    0x00A8: 0xBD,	#  DIAERESIS
-    0x00A9: 0xB4,	#  COPYRIGHT SIGN
-    0x00AA: 0x9A,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0x8A,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xBA,	#  NOT SIGN
-    0x00AD: 0xCA,	#  SOFT HYPHEN
-    0x00AE: 0xAF,	#  REGISTERED SIGN
-    0x00AF: 0xBC,	#  MACRON
-    0x00B0: 0x90,	#  DEGREE SIGN
-    0x00B1: 0x8F,	#  PLUS-MINUS SIGN
-    0x00B2: 0xEA,	#  SUPERSCRIPT TWO
-    0x00B3: 0xFA,	#  SUPERSCRIPT THREE
-    0x00B4: 0xBE,	#  ACUTE ACCENT
-    0x00B5: 0xA0,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB3,	#  MIDDLE DOT
-    0x00B8: 0x9D,	#  CEDILLA
-    0x00B9: 0xDA,	#  SUPERSCRIPT ONE
-    0x00BA: 0x9B,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0x8B,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xB7,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xB8,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xB9,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xAB,	#  INVERTED QUESTION MARK
-    0x00C0: 0x64,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0x65,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0x62,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0x66,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0x63,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0x67,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0x9E,	#  LATIN CAPITAL LIGATURE AE
-    0x00C7: 0x68,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0x74,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0x71,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0x72,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0x73,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0x78,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0x75,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0x76,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0x77,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D0: 0xAC,	#  LATIN CAPITAL LETTER ETH (ICELANDIC)
-    0x00D1: 0x69,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xED,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEB,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xEF,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xEC,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xBF,	#  MULTIPLICATION SIGN
-    0x00D8: 0x80,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xFD,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xFE,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xFB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xFC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xAD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DE: 0xAE,	#  LATIN CAPITAL LETTER THORN (ICELANDIC)
-    0x00DF: 0x59,	#  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00E0: 0x44,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x45,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x42,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0x46,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0x43,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0x47,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0x9C,	#  LATIN SMALL LIGATURE AE
-    0x00E7: 0x48,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x54,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x51,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x52,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x53,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0x58,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0x55,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x56,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x57,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F0: 0x8C,	#  LATIN SMALL LETTER ETH (ICELANDIC)
-    0x00F1: 0x49,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xCD,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xCE,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xCB,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xCF,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xCC,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xE1,	#  DIVISION SIGN
-    0x00F8: 0x70,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xDD,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xDE,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xDB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xDC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0x8D,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00FE: 0x8E,	#  LATIN SMALL LETTER THORN (ICELANDIC)
-    0x00FF: 0xDF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x37,       #  END OF TRANSMISSION
+    0x0005: 0x2D,       #  ENQUIRY
+    0x0006: 0x2E,       #  ACKNOWLEDGE
+    0x0007: 0x2F,       #  BELL
+    0x0008: 0x16,       #  BACKSPACE
+    0x0009: 0x05,       #  HORIZONTAL TABULATION
+    0x000A: 0x25,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x3C,       #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x32,       #  SYNCHRONOUS IDLE
+    0x0017: 0x26,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x3F,       #  SUBSTITUTE
+    0x001B: 0x27,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x40,       #  SPACE
+    0x0021: 0x4F,       #  EXCLAMATION MARK
+    0x0022: 0x7F,       #  QUOTATION MARK
+    0x0023: 0x7B,       #  NUMBER SIGN
+    0x0024: 0x5B,       #  DOLLAR SIGN
+    0x0025: 0x6C,       #  PERCENT SIGN
+    0x0026: 0x50,       #  AMPERSAND
+    0x0027: 0x7D,       #  APOSTROPHE
+    0x0028: 0x4D,       #  LEFT PARENTHESIS
+    0x0029: 0x5D,       #  RIGHT PARENTHESIS
+    0x002A: 0x5C,       #  ASTERISK
+    0x002B: 0x4E,       #  PLUS SIGN
+    0x002C: 0x6B,       #  COMMA
+    0x002D: 0x60,       #  HYPHEN-MINUS
+    0x002E: 0x4B,       #  FULL STOP
+    0x002F: 0x61,       #  SOLIDUS
+    0x0030: 0xF0,       #  DIGIT ZERO
+    0x0031: 0xF1,       #  DIGIT ONE
+    0x0032: 0xF2,       #  DIGIT TWO
+    0x0033: 0xF3,       #  DIGIT THREE
+    0x0034: 0xF4,       #  DIGIT FOUR
+    0x0035: 0xF5,       #  DIGIT FIVE
+    0x0036: 0xF6,       #  DIGIT SIX
+    0x0037: 0xF7,       #  DIGIT SEVEN
+    0x0038: 0xF8,       #  DIGIT EIGHT
+    0x0039: 0xF9,       #  DIGIT NINE
+    0x003A: 0x7A,       #  COLON
+    0x003B: 0x5E,       #  SEMICOLON
+    0x003C: 0x4C,       #  LESS-THAN SIGN
+    0x003D: 0x7E,       #  EQUALS SIGN
+    0x003E: 0x6E,       #  GREATER-THAN SIGN
+    0x003F: 0x6F,       #  QUESTION MARK
+    0x0040: 0x7C,       #  COMMERCIAL AT
+    0x0041: 0xC1,       #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,       #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,       #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,       #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,       #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,       #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,       #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,       #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,       #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,       #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,       #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,       #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,       #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,       #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,       #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,       #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,       #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,       #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,       #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,       #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,       #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,       #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,       #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x4A,       #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,       #  REVERSE SOLIDUS
+    0x005D: 0x5A,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5F,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,       #  LOW LINE
+    0x0060: 0x79,       #  GRAVE ACCENT
+    0x0061: 0x81,       #  LATIN SMALL LETTER A
+    0x0062: 0x82,       #  LATIN SMALL LETTER B
+    0x0063: 0x83,       #  LATIN SMALL LETTER C
+    0x0064: 0x84,       #  LATIN SMALL LETTER D
+    0x0065: 0x85,       #  LATIN SMALL LETTER E
+    0x0066: 0x86,       #  LATIN SMALL LETTER F
+    0x0067: 0x87,       #  LATIN SMALL LETTER G
+    0x0068: 0x88,       #  LATIN SMALL LETTER H
+    0x0069: 0x89,       #  LATIN SMALL LETTER I
+    0x006A: 0x91,       #  LATIN SMALL LETTER J
+    0x006B: 0x92,       #  LATIN SMALL LETTER K
+    0x006C: 0x93,       #  LATIN SMALL LETTER L
+    0x006D: 0x94,       #  LATIN SMALL LETTER M
+    0x006E: 0x95,       #  LATIN SMALL LETTER N
+    0x006F: 0x96,       #  LATIN SMALL LETTER O
+    0x0070: 0x97,       #  LATIN SMALL LETTER P
+    0x0071: 0x98,       #  LATIN SMALL LETTER Q
+    0x0072: 0x99,       #  LATIN SMALL LETTER R
+    0x0073: 0xA2,       #  LATIN SMALL LETTER S
+    0x0074: 0xA3,       #  LATIN SMALL LETTER T
+    0x0075: 0xA4,       #  LATIN SMALL LETTER U
+    0x0076: 0xA5,       #  LATIN SMALL LETTER V
+    0x0077: 0xA6,       #  LATIN SMALL LETTER W
+    0x0078: 0xA7,       #  LATIN SMALL LETTER X
+    0x0079: 0xA8,       #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,       #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,       #  LEFT CURLY BRACKET
+    0x007C: 0xBB,       #  VERTICAL LINE
+    0x007D: 0xD0,       #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,       #  TILDE
+    0x007F: 0x07,       #  DELETE
+    0x0080: 0x20,       #  CONTROL
+    0x0081: 0x21,       #  CONTROL
+    0x0082: 0x22,       #  CONTROL
+    0x0083: 0x23,       #  CONTROL
+    0x0084: 0x24,       #  CONTROL
+    0x0085: 0x15,       #  CONTROL
+    0x0086: 0x06,       #  CONTROL
+    0x0087: 0x17,       #  CONTROL
+    0x0088: 0x28,       #  CONTROL
+    0x0089: 0x29,       #  CONTROL
+    0x008A: 0x2A,       #  CONTROL
+    0x008B: 0x2B,       #  CONTROL
+    0x008C: 0x2C,       #  CONTROL
+    0x008D: 0x09,       #  CONTROL
+    0x008E: 0x0A,       #  CONTROL
+    0x008F: 0x1B,       #  CONTROL
+    0x0090: 0x30,       #  CONTROL
+    0x0091: 0x31,       #  CONTROL
+    0x0092: 0x1A,       #  CONTROL
+    0x0093: 0x33,       #  CONTROL
+    0x0094: 0x34,       #  CONTROL
+    0x0095: 0x35,       #  CONTROL
+    0x0096: 0x36,       #  CONTROL
+    0x0097: 0x08,       #  CONTROL
+    0x0098: 0x38,       #  CONTROL
+    0x0099: 0x39,       #  CONTROL
+    0x009A: 0x3A,       #  CONTROL
+    0x009B: 0x3B,       #  CONTROL
+    0x009C: 0x04,       #  CONTROL
+    0x009D: 0x14,       #  CONTROL
+    0x009E: 0x3E,       #  CONTROL
+    0x009F: 0xFF,       #  CONTROL
+    0x00A0: 0x41,       #  NO-BREAK SPACE
+    0x00A1: 0xAA,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xB0,       #  CENT SIGN
+    0x00A3: 0xB1,       #  POUND SIGN
+    0x00A4: 0x9F,       #  CURRENCY SIGN
+    0x00A5: 0xB2,       #  YEN SIGN
+    0x00A6: 0x6A,       #  BROKEN BAR
+    0x00A7: 0xB5,       #  SECTION SIGN
+    0x00A8: 0xBD,       #  DIAERESIS
+    0x00A9: 0xB4,       #  COPYRIGHT SIGN
+    0x00AA: 0x9A,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0x8A,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xBA,       #  NOT SIGN
+    0x00AD: 0xCA,       #  SOFT HYPHEN
+    0x00AE: 0xAF,       #  REGISTERED SIGN
+    0x00AF: 0xBC,       #  MACRON
+    0x00B0: 0x90,       #  DEGREE SIGN
+    0x00B1: 0x8F,       #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,       #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,       #  SUPERSCRIPT THREE
+    0x00B4: 0xBE,       #  ACUTE ACCENT
+    0x00B5: 0xA0,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB3,       #  MIDDLE DOT
+    0x00B8: 0x9D,       #  CEDILLA
+    0x00B9: 0xDA,       #  SUPERSCRIPT ONE
+    0x00BA: 0x9B,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0x8B,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xB7,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xB8,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xB9,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xAB,       #  INVERTED QUESTION MARK
+    0x00C0: 0x64,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0x65,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0x62,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0x66,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x63,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x67,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0x9E,       #  LATIN CAPITAL LIGATURE AE
+    0x00C7: 0x68,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0x74,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x71,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0x72,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0x73,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0x78,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0x75,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0x76,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0x77,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xAC,       #  LATIN CAPITAL LETTER ETH (ICELANDIC)
+    0x00D1: 0x69,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xED,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEB,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xEF,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xEC,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xBF,       #  MULTIPLICATION SIGN
+    0x00D8: 0x80,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xFD,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xFE,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xFB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xFC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xAD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xAE,       #  LATIN CAPITAL LETTER THORN (ICELANDIC)
+    0x00DF: 0x59,       #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00E0: 0x44,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x45,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x42,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x46,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x43,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x47,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0x9C,       #  LATIN SMALL LIGATURE AE
+    0x00E7: 0x48,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x54,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x51,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x52,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x53,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x58,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x55,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x56,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x57,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0x8C,       #  LATIN SMALL LETTER ETH (ICELANDIC)
+    0x00F1: 0x49,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xCD,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xCE,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xCB,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xCF,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xCC,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xE1,       #  DIVISION SIGN
+    0x00F8: 0x70,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xDD,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xDE,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xDB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xDC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0x8D,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0x8E,       #  LATIN SMALL LETTER THORN (ICELANDIC)
+    0x00FF: 0xDF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
 }
-

Modified: python/trunk/Lib/encodings/cp737.py
==============================================================================
--- python/trunk/Lib/encodings/cp737.py	(original)
+++ python/trunk/Lib/encodings/cp737.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x0391,	#  GREEK CAPITAL LETTER ALPHA
-    0x0081: 0x0392,	#  GREEK CAPITAL LETTER BETA
-    0x0082: 0x0393,	#  GREEK CAPITAL LETTER GAMMA
-    0x0083: 0x0394,	#  GREEK CAPITAL LETTER DELTA
-    0x0084: 0x0395,	#  GREEK CAPITAL LETTER EPSILON
-    0x0085: 0x0396,	#  GREEK CAPITAL LETTER ZETA
-    0x0086: 0x0397,	#  GREEK CAPITAL LETTER ETA
-    0x0087: 0x0398,	#  GREEK CAPITAL LETTER THETA
-    0x0088: 0x0399,	#  GREEK CAPITAL LETTER IOTA
-    0x0089: 0x039a,	#  GREEK CAPITAL LETTER KAPPA
-    0x008a: 0x039b,	#  GREEK CAPITAL LETTER LAMDA
-    0x008b: 0x039c,	#  GREEK CAPITAL LETTER MU
-    0x008c: 0x039d,	#  GREEK CAPITAL LETTER NU
-    0x008d: 0x039e,	#  GREEK CAPITAL LETTER XI
-    0x008e: 0x039f,	#  GREEK CAPITAL LETTER OMICRON
-    0x008f: 0x03a0,	#  GREEK CAPITAL LETTER PI
-    0x0090: 0x03a1,	#  GREEK CAPITAL LETTER RHO
-    0x0091: 0x03a3,	#  GREEK CAPITAL LETTER SIGMA
-    0x0092: 0x03a4,	#  GREEK CAPITAL LETTER TAU
-    0x0093: 0x03a5,	#  GREEK CAPITAL LETTER UPSILON
-    0x0094: 0x03a6,	#  GREEK CAPITAL LETTER PHI
-    0x0095: 0x03a7,	#  GREEK CAPITAL LETTER CHI
-    0x0096: 0x03a8,	#  GREEK CAPITAL LETTER PSI
-    0x0097: 0x03a9,	#  GREEK CAPITAL LETTER OMEGA
-    0x0098: 0x03b1,	#  GREEK SMALL LETTER ALPHA
-    0x0099: 0x03b2,	#  GREEK SMALL LETTER BETA
-    0x009a: 0x03b3,	#  GREEK SMALL LETTER GAMMA
-    0x009b: 0x03b4,	#  GREEK SMALL LETTER DELTA
-    0x009c: 0x03b5,	#  GREEK SMALL LETTER EPSILON
-    0x009d: 0x03b6,	#  GREEK SMALL LETTER ZETA
-    0x009e: 0x03b7,	#  GREEK SMALL LETTER ETA
-    0x009f: 0x03b8,	#  GREEK SMALL LETTER THETA
-    0x00a0: 0x03b9,	#  GREEK SMALL LETTER IOTA
-    0x00a1: 0x03ba,	#  GREEK SMALL LETTER KAPPA
-    0x00a2: 0x03bb,	#  GREEK SMALL LETTER LAMDA
-    0x00a3: 0x03bc,	#  GREEK SMALL LETTER MU
-    0x00a4: 0x03bd,	#  GREEK SMALL LETTER NU
-    0x00a5: 0x03be,	#  GREEK SMALL LETTER XI
-    0x00a6: 0x03bf,	#  GREEK SMALL LETTER OMICRON
-    0x00a7: 0x03c0,	#  GREEK SMALL LETTER PI
-    0x00a8: 0x03c1,	#  GREEK SMALL LETTER RHO
-    0x00a9: 0x03c3,	#  GREEK SMALL LETTER SIGMA
-    0x00aa: 0x03c2,	#  GREEK SMALL LETTER FINAL SIGMA
-    0x00ab: 0x03c4,	#  GREEK SMALL LETTER TAU
-    0x00ac: 0x03c5,	#  GREEK SMALL LETTER UPSILON
-    0x00ad: 0x03c6,	#  GREEK SMALL LETTER PHI
-    0x00ae: 0x03c7,	#  GREEK SMALL LETTER CHI
-    0x00af: 0x03c8,	#  GREEK SMALL LETTER PSI
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x258c,	#  LEFT HALF BLOCK
-    0x00de: 0x2590,	#  RIGHT HALF BLOCK
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x03c9,	#  GREEK SMALL LETTER OMEGA
-    0x00e1: 0x03ac,	#  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x00e2: 0x03ad,	#  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x00e3: 0x03ae,	#  GREEK SMALL LETTER ETA WITH TONOS
-    0x00e4: 0x03ca,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x00e5: 0x03af,	#  GREEK SMALL LETTER IOTA WITH TONOS
-    0x00e6: 0x03cc,	#  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x00e7: 0x03cd,	#  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x00e8: 0x03cb,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x00e9: 0x03ce,	#  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x00ea: 0x0386,	#  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x00eb: 0x0388,	#  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x00ec: 0x0389,	#  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x00ed: 0x038a,	#  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x00ee: 0x038c,	#  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x00ef: 0x038e,	#  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x00f0: 0x038f,	#  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x2265,	#  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,	#  LESS-THAN OR EQUAL TO
-    0x00f4: 0x03aa,	#  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x00f5: 0x03ab,	#  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x2248,	#  ALMOST EQUAL TO
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x2219,	#  BULLET OPERATOR
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x221a,	#  SQUARE ROOT
-    0x00fc: 0x207f,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x0391,     #  GREEK CAPITAL LETTER ALPHA
+    0x0081: 0x0392,     #  GREEK CAPITAL LETTER BETA
+    0x0082: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
+    0x0083: 0x0394,     #  GREEK CAPITAL LETTER DELTA
+    0x0084: 0x0395,     #  GREEK CAPITAL LETTER EPSILON
+    0x0085: 0x0396,     #  GREEK CAPITAL LETTER ZETA
+    0x0086: 0x0397,     #  GREEK CAPITAL LETTER ETA
+    0x0087: 0x0398,     #  GREEK CAPITAL LETTER THETA
+    0x0088: 0x0399,     #  GREEK CAPITAL LETTER IOTA
+    0x0089: 0x039a,     #  GREEK CAPITAL LETTER KAPPA
+    0x008a: 0x039b,     #  GREEK CAPITAL LETTER LAMDA
+    0x008b: 0x039c,     #  GREEK CAPITAL LETTER MU
+    0x008c: 0x039d,     #  GREEK CAPITAL LETTER NU
+    0x008d: 0x039e,     #  GREEK CAPITAL LETTER XI
+    0x008e: 0x039f,     #  GREEK CAPITAL LETTER OMICRON
+    0x008f: 0x03a0,     #  GREEK CAPITAL LETTER PI
+    0x0090: 0x03a1,     #  GREEK CAPITAL LETTER RHO
+    0x0091: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
+    0x0092: 0x03a4,     #  GREEK CAPITAL LETTER TAU
+    0x0093: 0x03a5,     #  GREEK CAPITAL LETTER UPSILON
+    0x0094: 0x03a6,     #  GREEK CAPITAL LETTER PHI
+    0x0095: 0x03a7,     #  GREEK CAPITAL LETTER CHI
+    0x0096: 0x03a8,     #  GREEK CAPITAL LETTER PSI
+    0x0097: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
+    0x0098: 0x03b1,     #  GREEK SMALL LETTER ALPHA
+    0x0099: 0x03b2,     #  GREEK SMALL LETTER BETA
+    0x009a: 0x03b3,     #  GREEK SMALL LETTER GAMMA
+    0x009b: 0x03b4,     #  GREEK SMALL LETTER DELTA
+    0x009c: 0x03b5,     #  GREEK SMALL LETTER EPSILON
+    0x009d: 0x03b6,     #  GREEK SMALL LETTER ZETA
+    0x009e: 0x03b7,     #  GREEK SMALL LETTER ETA
+    0x009f: 0x03b8,     #  GREEK SMALL LETTER THETA
+    0x00a0: 0x03b9,     #  GREEK SMALL LETTER IOTA
+    0x00a1: 0x03ba,     #  GREEK SMALL LETTER KAPPA
+    0x00a2: 0x03bb,     #  GREEK SMALL LETTER LAMDA
+    0x00a3: 0x03bc,     #  GREEK SMALL LETTER MU
+    0x00a4: 0x03bd,     #  GREEK SMALL LETTER NU
+    0x00a5: 0x03be,     #  GREEK SMALL LETTER XI
+    0x00a6: 0x03bf,     #  GREEK SMALL LETTER OMICRON
+    0x00a7: 0x03c0,     #  GREEK SMALL LETTER PI
+    0x00a8: 0x03c1,     #  GREEK SMALL LETTER RHO
+    0x00a9: 0x03c3,     #  GREEK SMALL LETTER SIGMA
+    0x00aa: 0x03c2,     #  GREEK SMALL LETTER FINAL SIGMA
+    0x00ab: 0x03c4,     #  GREEK SMALL LETTER TAU
+    0x00ac: 0x03c5,     #  GREEK SMALL LETTER UPSILON
+    0x00ad: 0x03c6,     #  GREEK SMALL LETTER PHI
+    0x00ae: 0x03c7,     #  GREEK SMALL LETTER CHI
+    0x00af: 0x03c8,     #  GREEK SMALL LETTER PSI
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x258c,     #  LEFT HALF BLOCK
+    0x00de: 0x2590,     #  RIGHT HALF BLOCK
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x03c9,     #  GREEK SMALL LETTER OMEGA
+    0x00e1: 0x03ac,     #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x00e2: 0x03ad,     #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x00e3: 0x03ae,     #  GREEK SMALL LETTER ETA WITH TONOS
+    0x00e4: 0x03ca,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x00e5: 0x03af,     #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x00e6: 0x03cc,     #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x00e7: 0x03cd,     #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x00e8: 0x03cb,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x00e9: 0x03ce,     #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x00ea: 0x0386,     #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x00eb: 0x0388,     #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x00ec: 0x0389,     #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x00ed: 0x038a,     #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x00ee: 0x038c,     #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x00ef: 0x038e,     #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x00f0: 0x038f,     #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
+    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
+    0x00f4: 0x03aa,     #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x00f5: 0x03ab,     #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x2248,     #  ALMOST EQUAL TO
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x2219,     #  BULLET OPERATOR
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x221a,     #  SQUARE ROOT
+    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\u0391'	#  0x0080 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'	#  0x0081 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'	#  0x0082 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'	#  0x0083 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'	#  0x0084 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'	#  0x0085 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'	#  0x0086 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'	#  0x0087 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'	#  0x0088 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'	#  0x0089 -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'	#  0x008a -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'	#  0x008b -> GREEK CAPITAL LETTER MU
-    u'\u039d'	#  0x008c -> GREEK CAPITAL LETTER NU
-    u'\u039e'	#  0x008d -> GREEK CAPITAL LETTER XI
-    u'\u039f'	#  0x008e -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'	#  0x008f -> GREEK CAPITAL LETTER PI
-    u'\u03a1'	#  0x0090 -> GREEK CAPITAL LETTER RHO
-    u'\u03a3'	#  0x0091 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'	#  0x0092 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'	#  0x0093 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'	#  0x0094 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'	#  0x0095 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'	#  0x0096 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'	#  0x0097 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b1'	#  0x0098 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'	#  0x0099 -> GREEK SMALL LETTER BETA
-    u'\u03b3'	#  0x009a -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'	#  0x009b -> GREEK SMALL LETTER DELTA
-    u'\u03b5'	#  0x009c -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'	#  0x009d -> GREEK SMALL LETTER ZETA
-    u'\u03b7'	#  0x009e -> GREEK SMALL LETTER ETA
-    u'\u03b8'	#  0x009f -> GREEK SMALL LETTER THETA
-    u'\u03b9'	#  0x00a0 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'	#  0x00a1 -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'	#  0x00a2 -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'	#  0x00a3 -> GREEK SMALL LETTER MU
-    u'\u03bd'	#  0x00a4 -> GREEK SMALL LETTER NU
-    u'\u03be'	#  0x00a5 -> GREEK SMALL LETTER XI
-    u'\u03bf'	#  0x00a6 -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'	#  0x00a7 -> GREEK SMALL LETTER PI
-    u'\u03c1'	#  0x00a8 -> GREEK SMALL LETTER RHO
-    u'\u03c3'	#  0x00a9 -> GREEK SMALL LETTER SIGMA
-    u'\u03c2'	#  0x00aa -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c4'	#  0x00ab -> GREEK SMALL LETTER TAU
-    u'\u03c5'	#  0x00ac -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'	#  0x00ad -> GREEK SMALL LETTER PHI
-    u'\u03c7'	#  0x00ae -> GREEK SMALL LETTER CHI
-    u'\u03c8'	#  0x00af -> GREEK SMALL LETTER PSI
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'	#  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'	#  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'	#  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'	#  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'	#  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'	#  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'	#  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'	#  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'	#  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'	#  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'	#  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'	#  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'	#  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'	#  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'	#  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'	#  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'	#  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'	#  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u03c9'	#  0x00e0 -> GREEK SMALL LETTER OMEGA
-    u'\u03ac'	#  0x00e1 -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'	#  0x00e2 -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'	#  0x00e3 -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03ca'	#  0x00e4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03af'	#  0x00e5 -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03cc'	#  0x00e6 -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'	#  0x00e7 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03cb'	#  0x00e8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ce'	#  0x00e9 -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u0386'	#  0x00ea -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\u0388'	#  0x00eb -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'	#  0x00ec -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'	#  0x00ed -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\u038c'	#  0x00ee -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\u038e'	#  0x00ef -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'	#  0x00f0 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'	#  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'	#  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u03aa'	#  0x00f4 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'	#  0x00f5 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\u2248'	#  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\u2219'	#  0x00f9 -> BULLET OPERATOR
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\u221a'	#  0x00fb -> SQUARE ROOT
-    u'\u207f'	#  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\u0391'   #  0x0080 -> GREEK CAPITAL LETTER ALPHA
+    u'\u0392'   #  0x0081 -> GREEK CAPITAL LETTER BETA
+    u'\u0393'   #  0x0082 -> GREEK CAPITAL LETTER GAMMA
+    u'\u0394'   #  0x0083 -> GREEK CAPITAL LETTER DELTA
+    u'\u0395'   #  0x0084 -> GREEK CAPITAL LETTER EPSILON
+    u'\u0396'   #  0x0085 -> GREEK CAPITAL LETTER ZETA
+    u'\u0397'   #  0x0086 -> GREEK CAPITAL LETTER ETA
+    u'\u0398'   #  0x0087 -> GREEK CAPITAL LETTER THETA
+    u'\u0399'   #  0x0088 -> GREEK CAPITAL LETTER IOTA
+    u'\u039a'   #  0x0089 -> GREEK CAPITAL LETTER KAPPA
+    u'\u039b'   #  0x008a -> GREEK CAPITAL LETTER LAMDA
+    u'\u039c'   #  0x008b -> GREEK CAPITAL LETTER MU
+    u'\u039d'   #  0x008c -> GREEK CAPITAL LETTER NU
+    u'\u039e'   #  0x008d -> GREEK CAPITAL LETTER XI
+    u'\u039f'   #  0x008e -> GREEK CAPITAL LETTER OMICRON
+    u'\u03a0'   #  0x008f -> GREEK CAPITAL LETTER PI
+    u'\u03a1'   #  0x0090 -> GREEK CAPITAL LETTER RHO
+    u'\u03a3'   #  0x0091 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03a4'   #  0x0092 -> GREEK CAPITAL LETTER TAU
+    u'\u03a5'   #  0x0093 -> GREEK CAPITAL LETTER UPSILON
+    u'\u03a6'   #  0x0094 -> GREEK CAPITAL LETTER PHI
+    u'\u03a7'   #  0x0095 -> GREEK CAPITAL LETTER CHI
+    u'\u03a8'   #  0x0096 -> GREEK CAPITAL LETTER PSI
+    u'\u03a9'   #  0x0097 -> GREEK CAPITAL LETTER OMEGA
+    u'\u03b1'   #  0x0098 -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'   #  0x0099 -> GREEK SMALL LETTER BETA
+    u'\u03b3'   #  0x009a -> GREEK SMALL LETTER GAMMA
+    u'\u03b4'   #  0x009b -> GREEK SMALL LETTER DELTA
+    u'\u03b5'   #  0x009c -> GREEK SMALL LETTER EPSILON
+    u'\u03b6'   #  0x009d -> GREEK SMALL LETTER ZETA
+    u'\u03b7'   #  0x009e -> GREEK SMALL LETTER ETA
+    u'\u03b8'   #  0x009f -> GREEK SMALL LETTER THETA
+    u'\u03b9'   #  0x00a0 -> GREEK SMALL LETTER IOTA
+    u'\u03ba'   #  0x00a1 -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'   #  0x00a2 -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'   #  0x00a3 -> GREEK SMALL LETTER MU
+    u'\u03bd'   #  0x00a4 -> GREEK SMALL LETTER NU
+    u'\u03be'   #  0x00a5 -> GREEK SMALL LETTER XI
+    u'\u03bf'   #  0x00a6 -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'   #  0x00a7 -> GREEK SMALL LETTER PI
+    u'\u03c1'   #  0x00a8 -> GREEK SMALL LETTER RHO
+    u'\u03c3'   #  0x00a9 -> GREEK SMALL LETTER SIGMA
+    u'\u03c2'   #  0x00aa -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c4'   #  0x00ab -> GREEK SMALL LETTER TAU
+    u'\u03c5'   #  0x00ac -> GREEK SMALL LETTER UPSILON
+    u'\u03c6'   #  0x00ad -> GREEK SMALL LETTER PHI
+    u'\u03c7'   #  0x00ae -> GREEK SMALL LETTER CHI
+    u'\u03c8'   #  0x00af -> GREEK SMALL LETTER PSI
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
+    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u03c9'   #  0x00e0 -> GREEK SMALL LETTER OMEGA
+    u'\u03ac'   #  0x00e1 -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\u03ad'   #  0x00e2 -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'   #  0x00e3 -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03ca'   #  0x00e4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u03af'   #  0x00e5 -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03cc'   #  0x00e6 -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u03cd'   #  0x00e7 -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u03cb'   #  0x00e8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u03ce'   #  0x00e9 -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\u0386'   #  0x00ea -> GREEK CAPITAL LETTER ALPHA WITH TONOS
+    u'\u0388'   #  0x00eb -> GREEK CAPITAL LETTER EPSILON WITH TONOS
+    u'\u0389'   #  0x00ec -> GREEK CAPITAL LETTER ETA WITH TONOS
+    u'\u038a'   #  0x00ed -> GREEK CAPITAL LETTER IOTA WITH TONOS
+    u'\u038c'   #  0x00ee -> GREEK CAPITAL LETTER OMICRON WITH TONOS
+    u'\u038e'   #  0x00ef -> GREEK CAPITAL LETTER UPSILON WITH TONOS
+    u'\u038f'   #  0x00f0 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
+    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
+    u'\u03aa'   #  0x00f4 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    u'\u03ab'   #  0x00f5 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\u221a'   #  0x00fb -> SQUARE ROOT
+    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x0386: 0x00ea,	#  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0x00eb,	#  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0x00ec,	#  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038a: 0x00ed,	#  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038c: 0x00ee,	#  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038e: 0x00ef,	#  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038f: 0x00f0,	#  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0391: 0x0080,	#  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0x0081,	#  GREEK CAPITAL LETTER BETA
-    0x0393: 0x0082,	#  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0x0083,	#  GREEK CAPITAL LETTER DELTA
-    0x0395: 0x0084,	#  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0x0085,	#  GREEK CAPITAL LETTER ZETA
-    0x0397: 0x0086,	#  GREEK CAPITAL LETTER ETA
-    0x0398: 0x0087,	#  GREEK CAPITAL LETTER THETA
-    0x0399: 0x0088,	#  GREEK CAPITAL LETTER IOTA
-    0x039a: 0x0089,	#  GREEK CAPITAL LETTER KAPPA
-    0x039b: 0x008a,	#  GREEK CAPITAL LETTER LAMDA
-    0x039c: 0x008b,	#  GREEK CAPITAL LETTER MU
-    0x039d: 0x008c,	#  GREEK CAPITAL LETTER NU
-    0x039e: 0x008d,	#  GREEK CAPITAL LETTER XI
-    0x039f: 0x008e,	#  GREEK CAPITAL LETTER OMICRON
-    0x03a0: 0x008f,	#  GREEK CAPITAL LETTER PI
-    0x03a1: 0x0090,	#  GREEK CAPITAL LETTER RHO
-    0x03a3: 0x0091,	#  GREEK CAPITAL LETTER SIGMA
-    0x03a4: 0x0092,	#  GREEK CAPITAL LETTER TAU
-    0x03a5: 0x0093,	#  GREEK CAPITAL LETTER UPSILON
-    0x03a6: 0x0094,	#  GREEK CAPITAL LETTER PHI
-    0x03a7: 0x0095,	#  GREEK CAPITAL LETTER CHI
-    0x03a8: 0x0096,	#  GREEK CAPITAL LETTER PSI
-    0x03a9: 0x0097,	#  GREEK CAPITAL LETTER OMEGA
-    0x03aa: 0x00f4,	#  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03ab: 0x00f5,	#  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03ac: 0x00e1,	#  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03ad: 0x00e2,	#  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03ae: 0x00e3,	#  GREEK SMALL LETTER ETA WITH TONOS
-    0x03af: 0x00e5,	#  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03b1: 0x0098,	#  GREEK SMALL LETTER ALPHA
-    0x03b2: 0x0099,	#  GREEK SMALL LETTER BETA
-    0x03b3: 0x009a,	#  GREEK SMALL LETTER GAMMA
-    0x03b4: 0x009b,	#  GREEK SMALL LETTER DELTA
-    0x03b5: 0x009c,	#  GREEK SMALL LETTER EPSILON
-    0x03b6: 0x009d,	#  GREEK SMALL LETTER ZETA
-    0x03b7: 0x009e,	#  GREEK SMALL LETTER ETA
-    0x03b8: 0x009f,	#  GREEK SMALL LETTER THETA
-    0x03b9: 0x00a0,	#  GREEK SMALL LETTER IOTA
-    0x03ba: 0x00a1,	#  GREEK SMALL LETTER KAPPA
-    0x03bb: 0x00a2,	#  GREEK SMALL LETTER LAMDA
-    0x03bc: 0x00a3,	#  GREEK SMALL LETTER MU
-    0x03bd: 0x00a4,	#  GREEK SMALL LETTER NU
-    0x03be: 0x00a5,	#  GREEK SMALL LETTER XI
-    0x03bf: 0x00a6,	#  GREEK SMALL LETTER OMICRON
-    0x03c0: 0x00a7,	#  GREEK SMALL LETTER PI
-    0x03c1: 0x00a8,	#  GREEK SMALL LETTER RHO
-    0x03c2: 0x00aa,	#  GREEK SMALL LETTER FINAL SIGMA
-    0x03c3: 0x00a9,	#  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00ab,	#  GREEK SMALL LETTER TAU
-    0x03c5: 0x00ac,	#  GREEK SMALL LETTER UPSILON
-    0x03c6: 0x00ad,	#  GREEK SMALL LETTER PHI
-    0x03c7: 0x00ae,	#  GREEK SMALL LETTER CHI
-    0x03c8: 0x00af,	#  GREEK SMALL LETTER PSI
-    0x03c9: 0x00e0,	#  GREEK SMALL LETTER OMEGA
-    0x03ca: 0x00e4,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03cb: 0x00e8,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03cc: 0x00e6,	#  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03cd: 0x00e7,	#  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03ce: 0x00e9,	#  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x207f: 0x00fc,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x2219: 0x00f9,	#  BULLET OPERATOR
-    0x221a: 0x00fb,	#  SQUARE ROOT
-    0x2248: 0x00f7,	#  ALMOST EQUAL TO
-    0x2264: 0x00f3,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,	#  GREATER-THAN OR EQUAL TO
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x258c: 0x00dd,	#  LEFT HALF BLOCK
-    0x2590: 0x00de,	#  RIGHT HALF BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x0386: 0x00ea,     #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0388: 0x00eb,     #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x0389: 0x00ec,     #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x038a: 0x00ed,     #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038c: 0x00ee,     #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038e: 0x00ef,     #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038f: 0x00f0,     #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0391: 0x0080,     #  GREEK CAPITAL LETTER ALPHA
+    0x0392: 0x0081,     #  GREEK CAPITAL LETTER BETA
+    0x0393: 0x0082,     #  GREEK CAPITAL LETTER GAMMA
+    0x0394: 0x0083,     #  GREEK CAPITAL LETTER DELTA
+    0x0395: 0x0084,     #  GREEK CAPITAL LETTER EPSILON
+    0x0396: 0x0085,     #  GREEK CAPITAL LETTER ZETA
+    0x0397: 0x0086,     #  GREEK CAPITAL LETTER ETA
+    0x0398: 0x0087,     #  GREEK CAPITAL LETTER THETA
+    0x0399: 0x0088,     #  GREEK CAPITAL LETTER IOTA
+    0x039a: 0x0089,     #  GREEK CAPITAL LETTER KAPPA
+    0x039b: 0x008a,     #  GREEK CAPITAL LETTER LAMDA
+    0x039c: 0x008b,     #  GREEK CAPITAL LETTER MU
+    0x039d: 0x008c,     #  GREEK CAPITAL LETTER NU
+    0x039e: 0x008d,     #  GREEK CAPITAL LETTER XI
+    0x039f: 0x008e,     #  GREEK CAPITAL LETTER OMICRON
+    0x03a0: 0x008f,     #  GREEK CAPITAL LETTER PI
+    0x03a1: 0x0090,     #  GREEK CAPITAL LETTER RHO
+    0x03a3: 0x0091,     #  GREEK CAPITAL LETTER SIGMA
+    0x03a4: 0x0092,     #  GREEK CAPITAL LETTER TAU
+    0x03a5: 0x0093,     #  GREEK CAPITAL LETTER UPSILON
+    0x03a6: 0x0094,     #  GREEK CAPITAL LETTER PHI
+    0x03a7: 0x0095,     #  GREEK CAPITAL LETTER CHI
+    0x03a8: 0x0096,     #  GREEK CAPITAL LETTER PSI
+    0x03a9: 0x0097,     #  GREEK CAPITAL LETTER OMEGA
+    0x03aa: 0x00f4,     #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03ab: 0x00f5,     #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03ac: 0x00e1,     #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03ad: 0x00e2,     #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03ae: 0x00e3,     #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03af: 0x00e5,     #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03b1: 0x0098,     #  GREEK SMALL LETTER ALPHA
+    0x03b2: 0x0099,     #  GREEK SMALL LETTER BETA
+    0x03b3: 0x009a,     #  GREEK SMALL LETTER GAMMA
+    0x03b4: 0x009b,     #  GREEK SMALL LETTER DELTA
+    0x03b5: 0x009c,     #  GREEK SMALL LETTER EPSILON
+    0x03b6: 0x009d,     #  GREEK SMALL LETTER ZETA
+    0x03b7: 0x009e,     #  GREEK SMALL LETTER ETA
+    0x03b8: 0x009f,     #  GREEK SMALL LETTER THETA
+    0x03b9: 0x00a0,     #  GREEK SMALL LETTER IOTA
+    0x03ba: 0x00a1,     #  GREEK SMALL LETTER KAPPA
+    0x03bb: 0x00a2,     #  GREEK SMALL LETTER LAMDA
+    0x03bc: 0x00a3,     #  GREEK SMALL LETTER MU
+    0x03bd: 0x00a4,     #  GREEK SMALL LETTER NU
+    0x03be: 0x00a5,     #  GREEK SMALL LETTER XI
+    0x03bf: 0x00a6,     #  GREEK SMALL LETTER OMICRON
+    0x03c0: 0x00a7,     #  GREEK SMALL LETTER PI
+    0x03c1: 0x00a8,     #  GREEK SMALL LETTER RHO
+    0x03c2: 0x00aa,     #  GREEK SMALL LETTER FINAL SIGMA
+    0x03c3: 0x00a9,     #  GREEK SMALL LETTER SIGMA
+    0x03c4: 0x00ab,     #  GREEK SMALL LETTER TAU
+    0x03c5: 0x00ac,     #  GREEK SMALL LETTER UPSILON
+    0x03c6: 0x00ad,     #  GREEK SMALL LETTER PHI
+    0x03c7: 0x00ae,     #  GREEK SMALL LETTER CHI
+    0x03c8: 0x00af,     #  GREEK SMALL LETTER PSI
+    0x03c9: 0x00e0,     #  GREEK SMALL LETTER OMEGA
+    0x03ca: 0x00e4,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03cb: 0x00e8,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03cc: 0x00e6,     #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03cd: 0x00e7,     #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03ce: 0x00e9,     #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x2219: 0x00f9,     #  BULLET OPERATOR
+    0x221a: 0x00fb,     #  SQUARE ROOT
+    0x2248: 0x00f7,     #  ALMOST EQUAL TO
+    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
+    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x258c: 0x00dd,     #  LEFT HALF BLOCK
+    0x2590: 0x00de,     #  RIGHT HALF BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp775.py
==============================================================================
--- python/trunk/Lib/encodings/cp775.py	(original)
+++ python/trunk/Lib/encodings/cp775.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x0106,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0081: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x0101,	#  LATIN SMALL LETTER A WITH MACRON
-    0x0084: 0x00e4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x0123,	#  LATIN SMALL LETTER G WITH CEDILLA
-    0x0086: 0x00e5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x0107,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x0088: 0x0142,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0089: 0x0113,	#  LATIN SMALL LETTER E WITH MACRON
-    0x008a: 0x0156,	#  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x008b: 0x0157,	#  LATIN SMALL LETTER R WITH CEDILLA
-    0x008c: 0x012b,	#  LATIN SMALL LETTER I WITH MACRON
-    0x008d: 0x0179,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x008e: 0x00c4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,	#  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,	#  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x014d,	#  LATIN SMALL LETTER O WITH MACRON
-    0x0094: 0x00f6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x0122,	#  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0096: 0x00a2,	#  CENT SIGN
-    0x0097: 0x015a,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x0098: 0x015b,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x0099: 0x00d6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x00d8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x00d7,	#  MULTIPLICATION SIGN
-    0x009f: 0x00a4,	#  CURRENCY SIGN
-    0x00a0: 0x0100,	#  LATIN CAPITAL LETTER A WITH MACRON
-    0x00a1: 0x012a,	#  LATIN CAPITAL LETTER I WITH MACRON
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x017b,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x00a4: 0x017c,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x00a5: 0x017a,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x00a6: 0x201d,	#  RIGHT DOUBLE QUOTATION MARK
-    0x00a7: 0x00a6,	#  BROKEN BAR
-    0x00a8: 0x00a9,	#  COPYRIGHT SIGN
-    0x00a9: 0x00ae,	#  REGISTERED SIGN
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,	#  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x0141,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x0104,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x00b6: 0x010c,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x00b7: 0x0118,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x00b8: 0x0116,	#  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x012e,	#  LATIN CAPITAL LETTER I WITH OGONEK
-    0x00be: 0x0160,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x0172,	#  LATIN CAPITAL LETTER U WITH OGONEK
-    0x00c7: 0x016a,	#  LATIN CAPITAL LETTER U WITH MACRON
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x017d,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x00d0: 0x0105,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x00d1: 0x010d,	#  LATIN SMALL LETTER C WITH CARON
-    0x00d2: 0x0119,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x00d3: 0x0117,	#  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x00d4: 0x012f,	#  LATIN SMALL LETTER I WITH OGONEK
-    0x00d5: 0x0161,	#  LATIN SMALL LETTER S WITH CARON
-    0x00d6: 0x0173,	#  LATIN SMALL LETTER U WITH OGONEK
-    0x00d7: 0x016b,	#  LATIN SMALL LETTER U WITH MACRON
-    0x00d8: 0x017e,	#  LATIN SMALL LETTER Z WITH CARON
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x258c,	#  LEFT HALF BLOCK
-    0x00de: 0x2590,	#  RIGHT HALF BLOCK
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x00d3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e2: 0x014c,	#  LATIN CAPITAL LETTER O WITH MACRON
-    0x00e3: 0x0143,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x00e4: 0x00f5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00e5: 0x00d5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00e6: 0x00b5,	#  MICRO SIGN
-    0x00e7: 0x0144,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x00e8: 0x0136,	#  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x00e9: 0x0137,	#  LATIN SMALL LETTER K WITH CEDILLA
-    0x00ea: 0x013b,	#  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x00eb: 0x013c,	#  LATIN SMALL LETTER L WITH CEDILLA
-    0x00ec: 0x0146,	#  LATIN SMALL LETTER N WITH CEDILLA
-    0x00ed: 0x0112,	#  LATIN CAPITAL LETTER E WITH MACRON
-    0x00ee: 0x0145,	#  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x00ef: 0x2019,	#  RIGHT SINGLE QUOTATION MARK
-    0x00f0: 0x00ad,	#  SOFT HYPHEN
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x201c,	#  LEFT DOUBLE QUOTATION MARK
-    0x00f3: 0x00be,	#  VULGAR FRACTION THREE QUARTERS
-    0x00f4: 0x00b6,	#  PILCROW SIGN
-    0x00f5: 0x00a7,	#  SECTION SIGN
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x201e,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x2219,	#  BULLET OPERATOR
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x00b9,	#  SUPERSCRIPT ONE
-    0x00fc: 0x00b3,	#  SUPERSCRIPT THREE
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x0106,     #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x0083: 0x0101,     #  LATIN SMALL LETTER A WITH MACRON
+    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x0085: 0x0123,     #  LATIN SMALL LETTER G WITH CEDILLA
+    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x0087: 0x0107,     #  LATIN SMALL LETTER C WITH ACUTE
+    0x0088: 0x0142,     #  LATIN SMALL LETTER L WITH STROKE
+    0x0089: 0x0113,     #  LATIN SMALL LETTER E WITH MACRON
+    0x008a: 0x0156,     #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x008b: 0x0157,     #  LATIN SMALL LETTER R WITH CEDILLA
+    0x008c: 0x012b,     #  LATIN SMALL LETTER I WITH MACRON
+    0x008d: 0x0179,     #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
+    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
+    0x0093: 0x014d,     #  LATIN SMALL LETTER O WITH MACRON
+    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x0095: 0x0122,     #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0096: 0x00a2,     #  CENT SIGN
+    0x0097: 0x015a,     #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x0098: 0x015b,     #  LATIN SMALL LETTER S WITH ACUTE
+    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x009e: 0x00d7,     #  MULTIPLICATION SIGN
+    0x009f: 0x00a4,     #  CURRENCY SIGN
+    0x00a0: 0x0100,     #  LATIN CAPITAL LETTER A WITH MACRON
+    0x00a1: 0x012a,     #  LATIN CAPITAL LETTER I WITH MACRON
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x017b,     #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x00a4: 0x017c,     #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x00a5: 0x017a,     #  LATIN SMALL LETTER Z WITH ACUTE
+    0x00a6: 0x201d,     #  RIGHT DOUBLE QUOTATION MARK
+    0x00a7: 0x00a6,     #  BROKEN BAR
+    0x00a8: 0x00a9,     #  COPYRIGHT SIGN
+    0x00a9: 0x00ae,     #  REGISTERED SIGN
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
+    0x00ad: 0x0141,     #  LATIN CAPITAL LETTER L WITH STROKE
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x0104,     #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x00b6: 0x010c,     #  LATIN CAPITAL LETTER C WITH CARON
+    0x00b7: 0x0118,     #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x00b8: 0x0116,     #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x012e,     #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x00be: 0x0160,     #  LATIN CAPITAL LETTER S WITH CARON
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x0172,     #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x00c7: 0x016a,     #  LATIN CAPITAL LETTER U WITH MACRON
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x017d,     #  LATIN CAPITAL LETTER Z WITH CARON
+    0x00d0: 0x0105,     #  LATIN SMALL LETTER A WITH OGONEK
+    0x00d1: 0x010d,     #  LATIN SMALL LETTER C WITH CARON
+    0x00d2: 0x0119,     #  LATIN SMALL LETTER E WITH OGONEK
+    0x00d3: 0x0117,     #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x00d4: 0x012f,     #  LATIN SMALL LETTER I WITH OGONEK
+    0x00d5: 0x0161,     #  LATIN SMALL LETTER S WITH CARON
+    0x00d6: 0x0173,     #  LATIN SMALL LETTER U WITH OGONEK
+    0x00d7: 0x016b,     #  LATIN SMALL LETTER U WITH MACRON
+    0x00d8: 0x017e,     #  LATIN SMALL LETTER Z WITH CARON
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x258c,     #  LEFT HALF BLOCK
+    0x00de: 0x2590,     #  RIGHT HALF BLOCK
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00e2: 0x014c,     #  LATIN CAPITAL LETTER O WITH MACRON
+    0x00e3: 0x0143,     #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x00e4: 0x00f5,     #  LATIN SMALL LETTER O WITH TILDE
+    0x00e5: 0x00d5,     #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00e6: 0x00b5,     #  MICRO SIGN
+    0x00e7: 0x0144,     #  LATIN SMALL LETTER N WITH ACUTE
+    0x00e8: 0x0136,     #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x00e9: 0x0137,     #  LATIN SMALL LETTER K WITH CEDILLA
+    0x00ea: 0x013b,     #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x00eb: 0x013c,     #  LATIN SMALL LETTER L WITH CEDILLA
+    0x00ec: 0x0146,     #  LATIN SMALL LETTER N WITH CEDILLA
+    0x00ed: 0x0112,     #  LATIN CAPITAL LETTER E WITH MACRON
+    0x00ee: 0x0145,     #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x00ef: 0x2019,     #  RIGHT SINGLE QUOTATION MARK
+    0x00f0: 0x00ad,     #  SOFT HYPHEN
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x201c,     #  LEFT DOUBLE QUOTATION MARK
+    0x00f3: 0x00be,     #  VULGAR FRACTION THREE QUARTERS
+    0x00f4: 0x00b6,     #  PILCROW SIGN
+    0x00f5: 0x00a7,     #  SECTION SIGN
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x201e,     #  DOUBLE LOW-9 QUOTATION MARK
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x2219,     #  BULLET OPERATOR
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x00b9,     #  SUPERSCRIPT ONE
+    0x00fc: 0x00b3,     #  SUPERSCRIPT THREE
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\u0106'	#  0x0080 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xfc'	#  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'	#  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0101'	#  0x0083 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xe4'	#  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u0123'	#  0x0085 -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\xe5'	#  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\u0107'	#  0x0087 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\u0142'	#  0x0088 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u0113'	#  0x0089 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0156'	#  0x008a -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\u0157'	#  0x008b -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\u012b'	#  0x008c -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0179'	#  0x008d -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xc4'	#  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'	#  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'	#  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'	#  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\u014d'	#  0x0093 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf6'	#  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u0122'	#  0x0095 -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\xa2'	#  0x0096 -> CENT SIGN
-    u'\u015a'	#  0x0097 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u015b'	#  0x0098 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\xd6'	#  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'	#  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\xd8'	#  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd7'	#  0x009e -> MULTIPLICATION SIGN
-    u'\xa4'	#  0x009f -> CURRENCY SIGN
-    u'\u0100'	#  0x00a0 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u012a'	#  0x00a1 -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u017b'	#  0x00a3 -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017c'	#  0x00a4 -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u017a'	#  0x00a5 -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u201d'	#  0x00a6 -> RIGHT DOUBLE QUOTATION MARK
-    u'\xa6'	#  0x00a7 -> BROKEN BAR
-    u'\xa9'	#  0x00a8 -> COPYRIGHT SIGN
-    u'\xae'	#  0x00a9 -> REGISTERED SIGN
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\u0141'	#  0x00ad -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u0104'	#  0x00b5 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u010c'	#  0x00b6 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u0118'	#  0x00b7 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0116'	#  0x00b8 -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u012e'	#  0x00bd -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u0160'	#  0x00be -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u0172'	#  0x00c6 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u016a'	#  0x00c7 -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u017d'	#  0x00cf -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u0105'	#  0x00d0 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u010d'	#  0x00d1 -> LATIN SMALL LETTER C WITH CARON
-    u'\u0119'	#  0x00d2 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u0117'	#  0x00d3 -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\u012f'	#  0x00d4 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u0161'	#  0x00d5 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0173'	#  0x00d6 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\u016b'	#  0x00d7 -> LATIN SMALL LETTER U WITH MACRON
-    u'\u017e'	#  0x00d8 -> LATIN SMALL LETTER Z WITH CARON
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'	#  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'	#  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\xd3'	#  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'\u014c'	#  0x00e2 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\u0143'	#  0x00e3 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\xf5'	#  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xd5'	#  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xb5'	#  0x00e6 -> MICRO SIGN
-    u'\u0144'	#  0x00e7 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0136'	#  0x00e8 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u0137'	#  0x00e9 -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u013b'	#  0x00ea -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u013c'	#  0x00eb -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0146'	#  0x00ec -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u0112'	#  0x00ed -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0145'	#  0x00ee -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u2019'	#  0x00ef -> RIGHT SINGLE QUOTATION MARK
-    u'\xad'	#  0x00f0 -> SOFT HYPHEN
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u201c'	#  0x00f2 -> LEFT DOUBLE QUOTATION MARK
-    u'\xbe'	#  0x00f3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'	#  0x00f4 -> PILCROW SIGN
-    u'\xa7'	#  0x00f5 -> SECTION SIGN
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\u201e'	#  0x00f7 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\u2219'	#  0x00f9 -> BULLET OPERATOR
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\xb9'	#  0x00fb -> SUPERSCRIPT ONE
-    u'\xb3'	#  0x00fc -> SUPERSCRIPT THREE
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\u0106'   #  0x0080 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0101'   #  0x0083 -> LATIN SMALL LETTER A WITH MACRON
+    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u0123'   #  0x0085 -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\u0107'   #  0x0087 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\u0142'   #  0x0088 -> LATIN SMALL LETTER L WITH STROKE
+    u'\u0113'   #  0x0089 -> LATIN SMALL LETTER E WITH MACRON
+    u'\u0156'   #  0x008a -> LATIN CAPITAL LETTER R WITH CEDILLA
+    u'\u0157'   #  0x008b -> LATIN SMALL LETTER R WITH CEDILLA
+    u'\u012b'   #  0x008c -> LATIN SMALL LETTER I WITH MACRON
+    u'\u0179'   #  0x008d -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
+    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
+    u'\u014d'   #  0x0093 -> LATIN SMALL LETTER O WITH MACRON
+    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\u0122'   #  0x0095 -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\xa2'     #  0x0096 -> CENT SIGN
+    u'\u015a'   #  0x0097 -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u015b'   #  0x0098 -> LATIN SMALL LETTER S WITH ACUTE
+    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd7'     #  0x009e -> MULTIPLICATION SIGN
+    u'\xa4'     #  0x009f -> CURRENCY SIGN
+    u'\u0100'   #  0x00a0 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\u012a'   #  0x00a1 -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\u017b'   #  0x00a3 -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\u017c'   #  0x00a4 -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u017a'   #  0x00a5 -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u201d'   #  0x00a6 -> RIGHT DOUBLE QUOTATION MARK
+    u'\xa6'     #  0x00a7 -> BROKEN BAR
+    u'\xa9'     #  0x00a8 -> COPYRIGHT SIGN
+    u'\xae'     #  0x00a9 -> REGISTERED SIGN
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
+    u'\u0141'   #  0x00ad -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u0104'   #  0x00b5 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u010c'   #  0x00b6 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\u0118'   #  0x00b7 -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\u0116'   #  0x00b8 -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u012e'   #  0x00bd -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u0160'   #  0x00be -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u0172'   #  0x00c6 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\u016a'   #  0x00c7 -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u017d'   #  0x00cf -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u0105'   #  0x00d0 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u010d'   #  0x00d1 -> LATIN SMALL LETTER C WITH CARON
+    u'\u0119'   #  0x00d2 -> LATIN SMALL LETTER E WITH OGONEK
+    u'\u0117'   #  0x00d3 -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\u012f'   #  0x00d4 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u0161'   #  0x00d5 -> LATIN SMALL LETTER S WITH CARON
+    u'\u0173'   #  0x00d6 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\u016b'   #  0x00d7 -> LATIN SMALL LETTER U WITH MACRON
+    u'\u017e'   #  0x00d8 -> LATIN SMALL LETTER Z WITH CARON
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
+    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\xd3'     #  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S (GERMAN)
+    u'\u014c'   #  0x00e2 -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\u0143'   #  0x00e3 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\xf5'     #  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xd5'     #  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xb5'     #  0x00e6 -> MICRO SIGN
+    u'\u0144'   #  0x00e7 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0136'   #  0x00e8 -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\u0137'   #  0x00e9 -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\u013b'   #  0x00ea -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\u013c'   #  0x00eb -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u0146'   #  0x00ec -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\u0112'   #  0x00ed -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u0145'   #  0x00ee -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\u2019'   #  0x00ef -> RIGHT SINGLE QUOTATION MARK
+    u'\xad'     #  0x00f0 -> SOFT HYPHEN
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u201c'   #  0x00f2 -> LEFT DOUBLE QUOTATION MARK
+    u'\xbe'     #  0x00f3 -> VULGAR FRACTION THREE QUARTERS
+    u'\xb6'     #  0x00f4 -> PILCROW SIGN
+    u'\xa7'     #  0x00f5 -> SECTION SIGN
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\u201e'   #  0x00f7 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\xb9'     #  0x00fb -> SUPERSCRIPT ONE
+    u'\xb3'     #  0x00fc -> SUPERSCRIPT THREE
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a2: 0x0096,	#  CENT SIGN
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00a4: 0x009f,	#  CURRENCY SIGN
-    0x00a6: 0x00a7,	#  BROKEN BAR
-    0x00a7: 0x00f5,	#  SECTION SIGN
-    0x00a9: 0x00a8,	#  COPYRIGHT SIGN
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00ad: 0x00f0,	#  SOFT HYPHEN
-    0x00ae: 0x00a9,	#  REGISTERED SIGN
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b3: 0x00fc,	#  SUPERSCRIPT THREE
-    0x00b5: 0x00e6,	#  MICRO SIGN
-    0x00b6: 0x00f4,	#  PILCROW SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00b9: 0x00fb,	#  SUPERSCRIPT ONE
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,	#  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x00be: 0x00f3,	#  VULGAR FRACTION THREE QUARTERS
-    0x00c4: 0x008e,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,	#  LATIN CAPITAL LIGATURE AE
-    0x00c9: 0x0090,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d3: 0x00e0,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d5: 0x00e5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x0099,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0x009e,	#  MULTIPLICATION SIGN
-    0x00d8: 0x009d,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00dc: 0x009a,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e4: 0x0084,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,	#  LATIN SMALL LIGATURE AE
-    0x00e9: 0x0082,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f5: 0x00e4,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x0094,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00f8: 0x009b,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00fc: 0x0081,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0100: 0x00a0,	#  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0x0083,	#  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0x00b5,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0x00d0,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0x0080,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0x0087,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0x00b6,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0x00d1,	#  LATIN SMALL LETTER C WITH CARON
-    0x0112: 0x00ed,	#  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0x0089,	#  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0x00b8,	#  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0x00d3,	#  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0x00b7,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0x00d2,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0x0095,	#  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0x0085,	#  LATIN SMALL LETTER G WITH CEDILLA
-    0x012a: 0x00a1,	#  LATIN CAPITAL LETTER I WITH MACRON
-    0x012b: 0x008c,	#  LATIN SMALL LETTER I WITH MACRON
-    0x012e: 0x00bd,	#  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012f: 0x00d4,	#  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0x00e8,	#  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0x00e9,	#  LATIN SMALL LETTER K WITH CEDILLA
-    0x013b: 0x00ea,	#  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013c: 0x00eb,	#  LATIN SMALL LETTER L WITH CEDILLA
-    0x0141: 0x00ad,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0x0088,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0x00e3,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0x00e7,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x0145: 0x00ee,	#  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0x00ec,	#  LATIN SMALL LETTER N WITH CEDILLA
-    0x014c: 0x00e2,	#  LATIN CAPITAL LETTER O WITH MACRON
-    0x014d: 0x0093,	#  LATIN SMALL LETTER O WITH MACRON
-    0x0156: 0x008a,	#  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0x008b,	#  LATIN SMALL LETTER R WITH CEDILLA
-    0x015a: 0x0097,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0x0098,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0x00be,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x00d5,	#  LATIN SMALL LETTER S WITH CARON
-    0x016a: 0x00c7,	#  LATIN CAPITAL LETTER U WITH MACRON
-    0x016b: 0x00d7,	#  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0x00c6,	#  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0x00d6,	#  LATIN SMALL LETTER U WITH OGONEK
-    0x0179: 0x008d,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0x00a5,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0x00a3,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0x00a4,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0x00cf,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0x00d8,	#  LATIN SMALL LETTER Z WITH CARON
-    0x2019: 0x00ef,	#  RIGHT SINGLE QUOTATION MARK
-    0x201c: 0x00f2,	#  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x00a6,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x00f7,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2219: 0x00f9,	#  BULLET OPERATOR
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x258c: 0x00dd,	#  LEFT HALF BLOCK
-    0x2590: 0x00de,	#  RIGHT HALF BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a2: 0x0096,     #  CENT SIGN
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00a4: 0x009f,     #  CURRENCY SIGN
+    0x00a6: 0x00a7,     #  BROKEN BAR
+    0x00a7: 0x00f5,     #  SECTION SIGN
+    0x00a9: 0x00a8,     #  COPYRIGHT SIGN
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00ad: 0x00f0,     #  SOFT HYPHEN
+    0x00ae: 0x00a9,     #  REGISTERED SIGN
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b3: 0x00fc,     #  SUPERSCRIPT THREE
+    0x00b5: 0x00e6,     #  MICRO SIGN
+    0x00b6: 0x00f4,     #  PILCROW SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00b9: 0x00fb,     #  SUPERSCRIPT ONE
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x00be: 0x00f3,     #  VULGAR FRACTION THREE QUARTERS
+    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
+    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00d3: 0x00e0,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00d5: 0x00e5,     #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00d7: 0x009e,     #  MULTIPLICATION SIGN
+    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
+    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f5: 0x00e4,     #  LATIN SMALL LETTER O WITH TILDE
+    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
+    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0100: 0x00a0,     #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0x0083,     #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0x00b5,     #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0x00d0,     #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0x0080,     #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0x0087,     #  LATIN SMALL LETTER C WITH ACUTE
+    0x010c: 0x00b6,     #  LATIN CAPITAL LETTER C WITH CARON
+    0x010d: 0x00d1,     #  LATIN SMALL LETTER C WITH CARON
+    0x0112: 0x00ed,     #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0x0089,     #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0x00b8,     #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0x00d3,     #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0x00b7,     #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0x00d2,     #  LATIN SMALL LETTER E WITH OGONEK
+    0x0122: 0x0095,     #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0x0085,     #  LATIN SMALL LETTER G WITH CEDILLA
+    0x012a: 0x00a1,     #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012b: 0x008c,     #  LATIN SMALL LETTER I WITH MACRON
+    0x012e: 0x00bd,     #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012f: 0x00d4,     #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0x00e8,     #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0x00e9,     #  LATIN SMALL LETTER K WITH CEDILLA
+    0x013b: 0x00ea,     #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013c: 0x00eb,     #  LATIN SMALL LETTER L WITH CEDILLA
+    0x0141: 0x00ad,     #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0x0088,     #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0x00e3,     #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0x00e7,     #  LATIN SMALL LETTER N WITH ACUTE
+    0x0145: 0x00ee,     #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0x00ec,     #  LATIN SMALL LETTER N WITH CEDILLA
+    0x014c: 0x00e2,     #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014d: 0x0093,     #  LATIN SMALL LETTER O WITH MACRON
+    0x0156: 0x008a,     #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x0157: 0x008b,     #  LATIN SMALL LETTER R WITH CEDILLA
+    0x015a: 0x0097,     #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015b: 0x0098,     #  LATIN SMALL LETTER S WITH ACUTE
+    0x0160: 0x00be,     #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0x00d5,     #  LATIN SMALL LETTER S WITH CARON
+    0x016a: 0x00c7,     #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016b: 0x00d7,     #  LATIN SMALL LETTER U WITH MACRON
+    0x0172: 0x00c6,     #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0x00d6,     #  LATIN SMALL LETTER U WITH OGONEK
+    0x0179: 0x008d,     #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017a: 0x00a5,     #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017b: 0x00a3,     #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017c: 0x00a4,     #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017d: 0x00cf,     #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017e: 0x00d8,     #  LATIN SMALL LETTER Z WITH CARON
+    0x2019: 0x00ef,     #  RIGHT SINGLE QUOTATION MARK
+    0x201c: 0x00f2,     #  LEFT DOUBLE QUOTATION MARK
+    0x201d: 0x00a6,     #  RIGHT DOUBLE QUOTATION MARK
+    0x201e: 0x00f7,     #  DOUBLE LOW-9 QUOTATION MARK
+    0x2219: 0x00f9,     #  BULLET OPERATOR
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x258c: 0x00dd,     #  LEFT HALF BLOCK
+    0x2590: 0x00de,     #  RIGHT HALF BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp850.py
==============================================================================
--- python/trunk/Lib/encodings/cp850.py	(original)
+++ python/trunk/Lib/encodings/cp850.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x00c7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x00ec,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x008e: 0x00c4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,	#  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,	#  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00f2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00fb,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00ff,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0099: 0x00d6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x00d8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x00d7,	#  MULTIPLICATION SIGN
-    0x009f: 0x0192,	#  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,	#  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,	#  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,	#  INVERTED QUESTION MARK
-    0x00a9: 0x00ae,	#  REGISTERED SIGN
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,	#  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,	#  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x00c1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00b6: 0x00c2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00b7: 0x00c0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00b8: 0x00a9,	#  COPYRIGHT SIGN
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x00a2,	#  CENT SIGN
-    0x00be: 0x00a5,	#  YEN SIGN
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x00e3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00c7: 0x00c3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x00a4,	#  CURRENCY SIGN
-    0x00d0: 0x00f0,	#  LATIN SMALL LETTER ETH
-    0x00d1: 0x00d0,	#  LATIN CAPITAL LETTER ETH
-    0x00d2: 0x00ca,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00d3: 0x00cb,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00d4: 0x00c8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00d5: 0x0131,	#  LATIN SMALL LETTER DOTLESS I
-    0x00d6: 0x00cd,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d7: 0x00ce,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d8: 0x00cf,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x00a6,	#  BROKEN BAR
-    0x00de: 0x00cc,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x00d3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x00d4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00e3: 0x00d2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00e4: 0x00f5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00e5: 0x00d5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00e6: 0x00b5,	#  MICRO SIGN
-    0x00e7: 0x00fe,	#  LATIN SMALL LETTER THORN
-    0x00e8: 0x00de,	#  LATIN CAPITAL LETTER THORN
-    0x00e9: 0x00da,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00ea: 0x00db,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00eb: 0x00d9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00ec: 0x00fd,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00ed: 0x00dd,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00ee: 0x00af,	#  MACRON
-    0x00ef: 0x00b4,	#  ACUTE ACCENT
-    0x00f0: 0x00ad,	#  SOFT HYPHEN
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x2017,	#  DOUBLE LOW LINE
-    0x00f3: 0x00be,	#  VULGAR FRACTION THREE QUARTERS
-    0x00f4: 0x00b6,	#  PILCROW SIGN
-    0x00f5: 0x00a7,	#  SECTION SIGN
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x00b8,	#  CEDILLA
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x00a8,	#  DIAERESIS
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x00b9,	#  SUPERSCRIPT ONE
-    0x00fc: 0x00b3,	#  SUPERSCRIPT THREE
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x008d: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
+    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
+    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
+    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x0098: 0x00ff,     #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x009e: 0x00d7,     #  MULTIPLICATION SIGN
+    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
+    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
+    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
+    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
+    0x00a9: 0x00ae,     #  REGISTERED SIGN
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
+    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00b6: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00b7: 0x00c0,     #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00b8: 0x00a9,     #  COPYRIGHT SIGN
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x00a2,     #  CENT SIGN
+    0x00be: 0x00a5,     #  YEN SIGN
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x00e3,     #  LATIN SMALL LETTER A WITH TILDE
+    0x00c7: 0x00c3,     #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x00a4,     #  CURRENCY SIGN
+    0x00d0: 0x00f0,     #  LATIN SMALL LETTER ETH
+    0x00d1: 0x00d0,     #  LATIN CAPITAL LETTER ETH
+    0x00d2: 0x00ca,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00d3: 0x00cb,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00d4: 0x00c8,     #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00d5: 0x0131,     #  LATIN SMALL LETTER DOTLESS I
+    0x00d6: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00d7: 0x00ce,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00d8: 0x00cf,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x00a6,     #  BROKEN BAR
+    0x00de: 0x00cc,     #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
+    0x00e2: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00e3: 0x00d2,     #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00e4: 0x00f5,     #  LATIN SMALL LETTER O WITH TILDE
+    0x00e5: 0x00d5,     #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00e6: 0x00b5,     #  MICRO SIGN
+    0x00e7: 0x00fe,     #  LATIN SMALL LETTER THORN
+    0x00e8: 0x00de,     #  LATIN CAPITAL LETTER THORN
+    0x00e9: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00ea: 0x00db,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00eb: 0x00d9,     #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00ec: 0x00fd,     #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00ed: 0x00dd,     #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00ee: 0x00af,     #  MACRON
+    0x00ef: 0x00b4,     #  ACUTE ACCENT
+    0x00f0: 0x00ad,     #  SOFT HYPHEN
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x2017,     #  DOUBLE LOW LINE
+    0x00f3: 0x00be,     #  VULGAR FRACTION THREE QUARTERS
+    0x00f4: 0x00b6,     #  PILCROW SIGN
+    0x00f5: 0x00a7,     #  SECTION SIGN
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x00b8,     #  CEDILLA
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x00a8,     #  DIAERESIS
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x00b9,     #  SUPERSCRIPT ONE
+    0x00fc: 0x00b3,     #  SUPERSCRIPT THREE
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\xc7'	#  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'	#  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'	#  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'	#  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'	#  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'	#  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'	#  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'	#  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'	#  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xec'	#  0x008d -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xc4'	#  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'	#  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'	#  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'	#  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'	#  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'	#  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xfb'	#  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'	#  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xff'	#  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xd6'	#  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'	#  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\xd8'	#  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd7'	#  0x009e -> MULTIPLICATION SIGN
-    u'\u0192'	#  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'	#  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'	#  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'	#  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'	#  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'	#  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'	#  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'	#  0x00a8 -> INVERTED QUESTION MARK
-    u'\xae'	#  0x00a9 -> REGISTERED SIGN
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'	#  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\xc1'	#  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc0'	#  0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xa9'	#  0x00b8 -> COPYRIGHT SIGN
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\xa2'	#  0x00bd -> CENT SIGN
-    u'\xa5'	#  0x00be -> YEN SIGN
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\xe3'	#  0x00c6 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xc3'	#  0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'	#  0x00cf -> CURRENCY SIGN
-    u'\xf0'	#  0x00d0 -> LATIN SMALL LETTER ETH
-    u'\xd0'	#  0x00d1 -> LATIN CAPITAL LETTER ETH
-    u'\xca'	#  0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\u0131'	#  0x00d5 -> LATIN SMALL LETTER DOTLESS I
-    u'\xcd'	#  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\xa6'	#  0x00dd -> BROKEN BAR
-    u'\xcc'	#  0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\xd3'	#  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\xd4'	#  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd2'	#  0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xf5'	#  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xd5'	#  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xb5'	#  0x00e6 -> MICRO SIGN
-    u'\xfe'	#  0x00e7 -> LATIN SMALL LETTER THORN
-    u'\xde'	#  0x00e8 -> LATIN CAPITAL LETTER THORN
-    u'\xda'	#  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'	#  0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xfd'	#  0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xdd'	#  0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xaf'	#  0x00ee -> MACRON
-    u'\xb4'	#  0x00ef -> ACUTE ACCENT
-    u'\xad'	#  0x00f0 -> SOFT HYPHEN
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2017'	#  0x00f2 -> DOUBLE LOW LINE
-    u'\xbe'	#  0x00f3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'	#  0x00f4 -> PILCROW SIGN
-    u'\xa7'	#  0x00f5 -> SECTION SIGN
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\xb8'	#  0x00f7 -> CEDILLA
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\xa8'	#  0x00f9 -> DIAERESIS
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\xb9'	#  0x00fb -> SUPERSCRIPT ONE
-    u'\xb3'	#  0x00fc -> SUPERSCRIPT THREE
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xec'     #  0x008d -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
+    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
+    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xff'     #  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd7'     #  0x009e -> MULTIPLICATION SIGN
+    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
+    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
+    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
+    u'\xae'     #  0x00a9 -> REGISTERED SIGN
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
+    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\xc1'     #  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc0'     #  0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xa9'     #  0x00b8 -> COPYRIGHT SIGN
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\xa2'     #  0x00bd -> CENT SIGN
+    u'\xa5'     #  0x00be -> YEN SIGN
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\xe3'     #  0x00c6 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xc3'     #  0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa4'     #  0x00cf -> CURRENCY SIGN
+    u'\xf0'     #  0x00d0 -> LATIN SMALL LETTER ETH
+    u'\xd0'     #  0x00d1 -> LATIN CAPITAL LETTER ETH
+    u'\xca'     #  0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\u0131'   #  0x00d5 -> LATIN SMALL LETTER DOTLESS I
+    u'\xcd'     #  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\xa6'     #  0x00dd -> BROKEN BAR
+    u'\xcc'     #  0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\xd3'     #  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
+    u'\xd4'     #  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd2'     #  0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xf5'     #  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xd5'     #  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xb5'     #  0x00e6 -> MICRO SIGN
+    u'\xfe'     #  0x00e7 -> LATIN SMALL LETTER THORN
+    u'\xde'     #  0x00e8 -> LATIN CAPITAL LETTER THORN
+    u'\xda'     #  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'     #  0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xfd'     #  0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xdd'     #  0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xaf'     #  0x00ee -> MACRON
+    u'\xb4'     #  0x00ef -> ACUTE ACCENT
+    u'\xad'     #  0x00f0 -> SOFT HYPHEN
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u2017'   #  0x00f2 -> DOUBLE LOW LINE
+    u'\xbe'     #  0x00f3 -> VULGAR FRACTION THREE QUARTERS
+    u'\xb6'     #  0x00f4 -> PILCROW SIGN
+    u'\xa7'     #  0x00f5 -> SECTION SIGN
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\xb8'     #  0x00f7 -> CEDILLA
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\xa8'     #  0x00f9 -> DIAERESIS
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\xb9'     #  0x00fb -> SUPERSCRIPT ONE
+    u'\xb3'     #  0x00fc -> SUPERSCRIPT THREE
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a1: 0x00ad,	#  INVERTED EXCLAMATION MARK
-    0x00a2: 0x00bd,	#  CENT SIGN
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00a4: 0x00cf,	#  CURRENCY SIGN
-    0x00a5: 0x00be,	#  YEN SIGN
-    0x00a6: 0x00dd,	#  BROKEN BAR
-    0x00a7: 0x00f5,	#  SECTION SIGN
-    0x00a8: 0x00f9,	#  DIAERESIS
-    0x00a9: 0x00b8,	#  COPYRIGHT SIGN
-    0x00aa: 0x00a6,	#  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00ad: 0x00f0,	#  SOFT HYPHEN
-    0x00ae: 0x00a9,	#  REGISTERED SIGN
-    0x00af: 0x00ee,	#  MACRON
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b3: 0x00fc,	#  SUPERSCRIPT THREE
-    0x00b4: 0x00ef,	#  ACUTE ACCENT
-    0x00b5: 0x00e6,	#  MICRO SIGN
-    0x00b6: 0x00f4,	#  PILCROW SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00b8: 0x00f7,	#  CEDILLA
-    0x00b9: 0x00fb,	#  SUPERSCRIPT ONE
-    0x00ba: 0x00a7,	#  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,	#  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x00be: 0x00f3,	#  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0x00a8,	#  INVERTED QUESTION MARK
-    0x00c0: 0x00b7,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x00b5,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x00b6,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x00c7,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x008e,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,	#  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x00d4,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x0090,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x00d2,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x00d3,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0x00de,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x00d6,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x00d7,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x00d8,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0x00d1,	#  LATIN CAPITAL LETTER ETH
-    0x00d1: 0x00a5,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0x00e3,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0x00e0,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0x00e2,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0x00e5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x0099,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0x009e,	#  MULTIPLICATION SIGN
-    0x00d8: 0x009d,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0x00eb,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0x00e9,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0x00ea,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x009a,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0x00ed,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0x00e8,	#  LATIN CAPITAL LETTER THORN
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x00c6,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x0084,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,	#  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x008d,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0x00d0,	#  LATIN SMALL LETTER ETH
-    0x00f1: 0x00a4,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x00e4,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x0094,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00f8: 0x009b,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x0097,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x00ec,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0x00e7,	#  LATIN SMALL LETTER THORN
-    0x00ff: 0x0098,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0131: 0x00d5,	#  LATIN SMALL LETTER DOTLESS I
-    0x0192: 0x009f,	#  LATIN SMALL LETTER F WITH HOOK
-    0x2017: 0x00f2,	#  DOUBLE LOW LINE
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
+    0x00a2: 0x00bd,     #  CENT SIGN
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00a4: 0x00cf,     #  CURRENCY SIGN
+    0x00a5: 0x00be,     #  YEN SIGN
+    0x00a6: 0x00dd,     #  BROKEN BAR
+    0x00a7: 0x00f5,     #  SECTION SIGN
+    0x00a8: 0x00f9,     #  DIAERESIS
+    0x00a9: 0x00b8,     #  COPYRIGHT SIGN
+    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00ad: 0x00f0,     #  SOFT HYPHEN
+    0x00ae: 0x00a9,     #  REGISTERED SIGN
+    0x00af: 0x00ee,     #  MACRON
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b3: 0x00fc,     #  SUPERSCRIPT THREE
+    0x00b4: 0x00ef,     #  ACUTE ACCENT
+    0x00b5: 0x00e6,     #  MICRO SIGN
+    0x00b6: 0x00f4,     #  PILCROW SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00b8: 0x00f7,     #  CEDILLA
+    0x00b9: 0x00fb,     #  SUPERSCRIPT ONE
+    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x00be: 0x00f3,     #  VULGAR FRACTION THREE QUARTERS
+    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
+    0x00c0: 0x00b7,     #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00c1: 0x00b5,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00c2: 0x00b6,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00c3: 0x00c7,     #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
+    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00c8: 0x00d4,     #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00ca: 0x00d2,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00cb: 0x00d3,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00cc: 0x00de,     #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00cd: 0x00d6,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00ce: 0x00d7,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00cf: 0x00d8,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00d0: 0x00d1,     #  LATIN CAPITAL LETTER ETH
+    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00d2: 0x00e3,     #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00d3: 0x00e0,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00d4: 0x00e2,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00d5: 0x00e5,     #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00d7: 0x009e,     #  MULTIPLICATION SIGN
+    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00d9: 0x00eb,     #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00da: 0x00e9,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00db: 0x00ea,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00dd: 0x00ed,     #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00de: 0x00e8,     #  LATIN CAPITAL LETTER THORN
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
+    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00e3: 0x00c6,     #  LATIN SMALL LETTER A WITH TILDE
+    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
+    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ec: 0x008d,     #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00f0: 0x00d0,     #  LATIN SMALL LETTER ETH
+    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00f5: 0x00e4,     #  LATIN SMALL LETTER O WITH TILDE
+    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
+    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00fd: 0x00ec,     #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00fe: 0x00e7,     #  LATIN SMALL LETTER THORN
+    0x00ff: 0x0098,     #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0131: 0x00d5,     #  LATIN SMALL LETTER DOTLESS I
+    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
+    0x2017: 0x00f2,     #  DOUBLE LOW LINE
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp852.py
==============================================================================
--- python/trunk/Lib/encodings/cp852.py	(original)
+++ python/trunk/Lib/encodings/cp852.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x00c7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x016f,	#  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0086: 0x0107,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x0087: 0x00e7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x0142,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0089: 0x00eb,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x0150,	#  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x008b: 0x0151,	#  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x008c: 0x00ee,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x0179,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x008e: 0x00c4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x0106,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0090: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x0139,	#  LATIN CAPITAL LETTER L WITH ACUTE
-    0x0092: 0x013a,	#  LATIN SMALL LETTER L WITH ACUTE
-    0x0093: 0x00f4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x013d,	#  LATIN CAPITAL LETTER L WITH CARON
-    0x0096: 0x013e,	#  LATIN SMALL LETTER L WITH CARON
-    0x0097: 0x015a,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x0098: 0x015b,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x0099: 0x00d6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x0164,	#  LATIN CAPITAL LETTER T WITH CARON
-    0x009c: 0x0165,	#  LATIN SMALL LETTER T WITH CARON
-    0x009d: 0x0141,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x009e: 0x00d7,	#  MULTIPLICATION SIGN
-    0x009f: 0x010d,	#  LATIN SMALL LETTER C WITH CARON
-    0x00a0: 0x00e1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x0104,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x00a5: 0x0105,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x00a6: 0x017d,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x00a7: 0x017e,	#  LATIN SMALL LETTER Z WITH CARON
-    0x00a8: 0x0118,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x00a9: 0x0119,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x017a,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x00ac: 0x010c,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x00ad: 0x015f,	#  LATIN SMALL LETTER S WITH CEDILLA
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x00c1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00b6: 0x00c2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00b7: 0x011a,	#  LATIN CAPITAL LETTER E WITH CARON
-    0x00b8: 0x015e,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x017b,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x00be: 0x017c,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x0102,	#  LATIN CAPITAL LETTER A WITH BREVE
-    0x00c7: 0x0103,	#  LATIN SMALL LETTER A WITH BREVE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x00a4,	#  CURRENCY SIGN
-    0x00d0: 0x0111,	#  LATIN SMALL LETTER D WITH STROKE
-    0x00d1: 0x0110,	#  LATIN CAPITAL LETTER D WITH STROKE
-    0x00d2: 0x010e,	#  LATIN CAPITAL LETTER D WITH CARON
-    0x00d3: 0x00cb,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00d4: 0x010f,	#  LATIN SMALL LETTER D WITH CARON
-    0x00d5: 0x0147,	#  LATIN CAPITAL LETTER N WITH CARON
-    0x00d6: 0x00cd,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d7: 0x00ce,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d8: 0x011b,	#  LATIN SMALL LETTER E WITH CARON
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x0162,	#  LATIN CAPITAL LETTER T WITH CEDILLA
-    0x00de: 0x016e,	#  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x00d3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x00d4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00e3: 0x0143,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x00e4: 0x0144,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x00e5: 0x0148,	#  LATIN SMALL LETTER N WITH CARON
-    0x00e6: 0x0160,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x00e7: 0x0161,	#  LATIN SMALL LETTER S WITH CARON
-    0x00e8: 0x0154,	#  LATIN CAPITAL LETTER R WITH ACUTE
-    0x00e9: 0x00da,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00ea: 0x0155,	#  LATIN SMALL LETTER R WITH ACUTE
-    0x00eb: 0x0170,	#  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x00ec: 0x00fd,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00ed: 0x00dd,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00ee: 0x0163,	#  LATIN SMALL LETTER T WITH CEDILLA
-    0x00ef: 0x00b4,	#  ACUTE ACCENT
-    0x00f0: 0x00ad,	#  SOFT HYPHEN
-    0x00f1: 0x02dd,	#  DOUBLE ACUTE ACCENT
-    0x00f2: 0x02db,	#  OGONEK
-    0x00f3: 0x02c7,	#  CARON
-    0x00f4: 0x02d8,	#  BREVE
-    0x00f5: 0x00a7,	#  SECTION SIGN
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x00b8,	#  CEDILLA
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x00a8,	#  DIAERESIS
-    0x00fa: 0x02d9,	#  DOT ABOVE
-    0x00fb: 0x0171,	#  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x00fc: 0x0158,	#  LATIN CAPITAL LETTER R WITH CARON
-    0x00fd: 0x0159,	#  LATIN SMALL LETTER R WITH CARON
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x0085: 0x016f,     #  LATIN SMALL LETTER U WITH RING ABOVE
+    0x0086: 0x0107,     #  LATIN SMALL LETTER C WITH ACUTE
+    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x0088: 0x0142,     #  LATIN SMALL LETTER L WITH STROKE
+    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x008a: 0x0150,     #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x008b: 0x0151,     #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x008d: 0x0179,     #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x008f: 0x0106,     #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0091: 0x0139,     #  LATIN CAPITAL LETTER L WITH ACUTE
+    0x0092: 0x013a,     #  LATIN SMALL LETTER L WITH ACUTE
+    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x0095: 0x013d,     #  LATIN CAPITAL LETTER L WITH CARON
+    0x0096: 0x013e,     #  LATIN SMALL LETTER L WITH CARON
+    0x0097: 0x015a,     #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x0098: 0x015b,     #  LATIN SMALL LETTER S WITH ACUTE
+    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x009b: 0x0164,     #  LATIN CAPITAL LETTER T WITH CARON
+    0x009c: 0x0165,     #  LATIN SMALL LETTER T WITH CARON
+    0x009d: 0x0141,     #  LATIN CAPITAL LETTER L WITH STROKE
+    0x009e: 0x00d7,     #  MULTIPLICATION SIGN
+    0x009f: 0x010d,     #  LATIN SMALL LETTER C WITH CARON
+    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00a4: 0x0104,     #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x00a5: 0x0105,     #  LATIN SMALL LETTER A WITH OGONEK
+    0x00a6: 0x017d,     #  LATIN CAPITAL LETTER Z WITH CARON
+    0x00a7: 0x017e,     #  LATIN SMALL LETTER Z WITH CARON
+    0x00a8: 0x0118,     #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x00a9: 0x0119,     #  LATIN SMALL LETTER E WITH OGONEK
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x017a,     #  LATIN SMALL LETTER Z WITH ACUTE
+    0x00ac: 0x010c,     #  LATIN CAPITAL LETTER C WITH CARON
+    0x00ad: 0x015f,     #  LATIN SMALL LETTER S WITH CEDILLA
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00b6: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00b7: 0x011a,     #  LATIN CAPITAL LETTER E WITH CARON
+    0x00b8: 0x015e,     #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x017b,     #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x00be: 0x017c,     #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x0102,     #  LATIN CAPITAL LETTER A WITH BREVE
+    0x00c7: 0x0103,     #  LATIN SMALL LETTER A WITH BREVE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x00a4,     #  CURRENCY SIGN
+    0x00d0: 0x0111,     #  LATIN SMALL LETTER D WITH STROKE
+    0x00d1: 0x0110,     #  LATIN CAPITAL LETTER D WITH STROKE
+    0x00d2: 0x010e,     #  LATIN CAPITAL LETTER D WITH CARON
+    0x00d3: 0x00cb,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00d4: 0x010f,     #  LATIN SMALL LETTER D WITH CARON
+    0x00d5: 0x0147,     #  LATIN CAPITAL LETTER N WITH CARON
+    0x00d6: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00d7: 0x00ce,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00d8: 0x011b,     #  LATIN SMALL LETTER E WITH CARON
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x0162,     #  LATIN CAPITAL LETTER T WITH CEDILLA
+    0x00de: 0x016e,     #  LATIN CAPITAL LETTER U WITH RING ABOVE
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
+    0x00e2: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00e3: 0x0143,     #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x00e4: 0x0144,     #  LATIN SMALL LETTER N WITH ACUTE
+    0x00e5: 0x0148,     #  LATIN SMALL LETTER N WITH CARON
+    0x00e6: 0x0160,     #  LATIN CAPITAL LETTER S WITH CARON
+    0x00e7: 0x0161,     #  LATIN SMALL LETTER S WITH CARON
+    0x00e8: 0x0154,     #  LATIN CAPITAL LETTER R WITH ACUTE
+    0x00e9: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00ea: 0x0155,     #  LATIN SMALL LETTER R WITH ACUTE
+    0x00eb: 0x0170,     #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x00ec: 0x00fd,     #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00ed: 0x00dd,     #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00ee: 0x0163,     #  LATIN SMALL LETTER T WITH CEDILLA
+    0x00ef: 0x00b4,     #  ACUTE ACCENT
+    0x00f0: 0x00ad,     #  SOFT HYPHEN
+    0x00f1: 0x02dd,     #  DOUBLE ACUTE ACCENT
+    0x00f2: 0x02db,     #  OGONEK
+    0x00f3: 0x02c7,     #  CARON
+    0x00f4: 0x02d8,     #  BREVE
+    0x00f5: 0x00a7,     #  SECTION SIGN
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x00b8,     #  CEDILLA
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x00a8,     #  DIAERESIS
+    0x00fa: 0x02d9,     #  DOT ABOVE
+    0x00fb: 0x0171,     #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x00fc: 0x0158,     #  LATIN CAPITAL LETTER R WITH CARON
+    0x00fd: 0x0159,     #  LATIN SMALL LETTER R WITH CARON
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\xc7'	#  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'	#  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'	#  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'	#  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u016f'	#  0x0085 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\u0107'	#  0x0086 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe7'	#  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\u0142'	#  0x0088 -> LATIN SMALL LETTER L WITH STROKE
-    u'\xeb'	#  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0150'	#  0x008a -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\u0151'	#  0x008b -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xee'	#  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u0179'	#  0x008d -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xc4'	#  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0106'	#  0x008f -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc9'	#  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0139'	#  0x0091 -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u013a'	#  0x0092 -> LATIN SMALL LETTER L WITH ACUTE
-    u'\xf4'	#  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u013d'	#  0x0095 -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u013e'	#  0x0096 -> LATIN SMALL LETTER L WITH CARON
-    u'\u015a'	#  0x0097 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u015b'	#  0x0098 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\xd6'	#  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0164'	#  0x009b -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u0165'	#  0x009c -> LATIN SMALL LETTER T WITH CARON
-    u'\u0141'	#  0x009d -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xd7'	#  0x009e -> MULTIPLICATION SIGN
-    u'\u010d'	#  0x009f -> LATIN SMALL LETTER C WITH CARON
-    u'\xe1'	#  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'	#  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'	#  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u0104'	#  0x00a4 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0105'	#  0x00a5 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u017d'	#  0x00a6 -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u017e'	#  0x00a7 -> LATIN SMALL LETTER Z WITH CARON
-    u'\u0118'	#  0x00a8 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0119'	#  0x00a9 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\u017a'	#  0x00ab -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u010c'	#  0x00ac -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u015f'	#  0x00ad -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\xc1'	#  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u011a'	#  0x00b7 -> LATIN CAPITAL LETTER E WITH CARON
-    u'\u015e'	#  0x00b8 -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u017b'	#  0x00bd -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017c'	#  0x00be -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u0102'	#  0x00c6 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\u0103'	#  0x00c7 -> LATIN SMALL LETTER A WITH BREVE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'	#  0x00cf -> CURRENCY SIGN
-    u'\u0111'	#  0x00d0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0110'	#  0x00d1 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u010e'	#  0x00d2 -> LATIN CAPITAL LETTER D WITH CARON
-    u'\xcb'	#  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u010f'	#  0x00d4 -> LATIN SMALL LETTER D WITH CARON
-    u'\u0147'	#  0x00d5 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\xcd'	#  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u011b'	#  0x00d8 -> LATIN SMALL LETTER E WITH CARON
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u0162'	#  0x00dd -> LATIN CAPITAL LETTER T WITH CEDILLA
-    u'\u016e'	#  0x00de -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\xd3'	#  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\xd4'	#  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0143'	#  0x00e3 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0144'	#  0x00e4 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0148'	#  0x00e5 -> LATIN SMALL LETTER N WITH CARON
-    u'\u0160'	#  0x00e6 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0161'	#  0x00e7 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0154'	#  0x00e8 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\xda'	#  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u0155'	#  0x00ea -> LATIN SMALL LETTER R WITH ACUTE
-    u'\u0170'	#  0x00eb -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xfd'	#  0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xdd'	#  0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0163'	#  0x00ee -> LATIN SMALL LETTER T WITH CEDILLA
-    u'\xb4'	#  0x00ef -> ACUTE ACCENT
-    u'\xad'	#  0x00f0 -> SOFT HYPHEN
-    u'\u02dd'	#  0x00f1 -> DOUBLE ACUTE ACCENT
-    u'\u02db'	#  0x00f2 -> OGONEK
-    u'\u02c7'	#  0x00f3 -> CARON
-    u'\u02d8'	#  0x00f4 -> BREVE
-    u'\xa7'	#  0x00f5 -> SECTION SIGN
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\xb8'	#  0x00f7 -> CEDILLA
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\xa8'	#  0x00f9 -> DIAERESIS
-    u'\u02d9'	#  0x00fa -> DOT ABOVE
-    u'\u0171'	#  0x00fb -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\u0158'	#  0x00fc -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u0159'	#  0x00fd -> LATIN SMALL LETTER R WITH CARON
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u016f'   #  0x0085 -> LATIN SMALL LETTER U WITH RING ABOVE
+    u'\u0107'   #  0x0086 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\u0142'   #  0x0088 -> LATIN SMALL LETTER L WITH STROKE
+    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u0150'   #  0x008a -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    u'\u0151'   #  0x008b -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\u0179'   #  0x008d -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u0106'   #  0x008f -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0139'   #  0x0091 -> LATIN CAPITAL LETTER L WITH ACUTE
+    u'\u013a'   #  0x0092 -> LATIN SMALL LETTER L WITH ACUTE
+    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\u013d'   #  0x0095 -> LATIN CAPITAL LETTER L WITH CARON
+    u'\u013e'   #  0x0096 -> LATIN SMALL LETTER L WITH CARON
+    u'\u015a'   #  0x0097 -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u015b'   #  0x0098 -> LATIN SMALL LETTER S WITH ACUTE
+    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0164'   #  0x009b -> LATIN CAPITAL LETTER T WITH CARON
+    u'\u0165'   #  0x009c -> LATIN SMALL LETTER T WITH CARON
+    u'\u0141'   #  0x009d -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\xd7'     #  0x009e -> MULTIPLICATION SIGN
+    u'\u010d'   #  0x009f -> LATIN SMALL LETTER C WITH CARON
+    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
+    u'\u0104'   #  0x00a4 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u0105'   #  0x00a5 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u017d'   #  0x00a6 -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u017e'   #  0x00a7 -> LATIN SMALL LETTER Z WITH CARON
+    u'\u0118'   #  0x00a8 -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\u0119'   #  0x00a9 -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\u017a'   #  0x00ab -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u010c'   #  0x00ac -> LATIN CAPITAL LETTER C WITH CARON
+    u'\u015f'   #  0x00ad -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\xc1'     #  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u011a'   #  0x00b7 -> LATIN CAPITAL LETTER E WITH CARON
+    u'\u015e'   #  0x00b8 -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u017b'   #  0x00bd -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\u017c'   #  0x00be -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u0102'   #  0x00c6 -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\u0103'   #  0x00c7 -> LATIN SMALL LETTER A WITH BREVE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa4'     #  0x00cf -> CURRENCY SIGN
+    u'\u0111'   #  0x00d0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0110'   #  0x00d1 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u010e'   #  0x00d2 -> LATIN CAPITAL LETTER D WITH CARON
+    u'\xcb'     #  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u010f'   #  0x00d4 -> LATIN SMALL LETTER D WITH CARON
+    u'\u0147'   #  0x00d5 -> LATIN CAPITAL LETTER N WITH CARON
+    u'\xcd'     #  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\u011b'   #  0x00d8 -> LATIN SMALL LETTER E WITH CARON
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u0162'   #  0x00dd -> LATIN CAPITAL LETTER T WITH CEDILLA
+    u'\u016e'   #  0x00de -> LATIN CAPITAL LETTER U WITH RING ABOVE
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\xd3'     #  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
+    u'\xd4'     #  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0143'   #  0x00e3 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\u0144'   #  0x00e4 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0148'   #  0x00e5 -> LATIN SMALL LETTER N WITH CARON
+    u'\u0160'   #  0x00e6 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u0161'   #  0x00e7 -> LATIN SMALL LETTER S WITH CARON
+    u'\u0154'   #  0x00e8 -> LATIN CAPITAL LETTER R WITH ACUTE
+    u'\xda'     #  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\u0155'   #  0x00ea -> LATIN SMALL LETTER R WITH ACUTE
+    u'\u0170'   #  0x00eb -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    u'\xfd'     #  0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xdd'     #  0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\u0163'   #  0x00ee -> LATIN SMALL LETTER T WITH CEDILLA
+    u'\xb4'     #  0x00ef -> ACUTE ACCENT
+    u'\xad'     #  0x00f0 -> SOFT HYPHEN
+    u'\u02dd'   #  0x00f1 -> DOUBLE ACUTE ACCENT
+    u'\u02db'   #  0x00f2 -> OGONEK
+    u'\u02c7'   #  0x00f3 -> CARON
+    u'\u02d8'   #  0x00f4 -> BREVE
+    u'\xa7'     #  0x00f5 -> SECTION SIGN
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\xb8'     #  0x00f7 -> CEDILLA
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\xa8'     #  0x00f9 -> DIAERESIS
+    u'\u02d9'   #  0x00fa -> DOT ABOVE
+    u'\u0171'   #  0x00fb -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    u'\u0158'   #  0x00fc -> LATIN CAPITAL LETTER R WITH CARON
+    u'\u0159'   #  0x00fd -> LATIN SMALL LETTER R WITH CARON
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a4: 0x00cf,	#  CURRENCY SIGN
-    0x00a7: 0x00f5,	#  SECTION SIGN
-    0x00a8: 0x00f9,	#  DIAERESIS
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00ad: 0x00f0,	#  SOFT HYPHEN
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b4: 0x00ef,	#  ACUTE ACCENT
-    0x00b8: 0x00f7,	#  CEDILLA
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00c1: 0x00b5,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x00b6,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c4: 0x008e,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c7: 0x0080,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0090,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00cb: 0x00d3,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cd: 0x00d6,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x00d7,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d3: 0x00e0,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0x00e2,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d6: 0x0099,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0x009e,	#  MULTIPLICATION SIGN
-    0x00da: 0x00e9,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00dc: 0x009a,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0x00ed,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S
-    0x00e1: 0x00a0,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x0084,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e7: 0x0087,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e9: 0x0082,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00eb: 0x0089,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0x00a1,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x0094,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00fa: 0x00a3,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00fc: 0x0081,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x00ec,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x0102: 0x00c6,	#  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0x00c7,	#  LATIN SMALL LETTER A WITH BREVE
-    0x0104: 0x00a4,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0x00a5,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0x008f,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0x0086,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0x00ac,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0x009f,	#  LATIN SMALL LETTER C WITH CARON
-    0x010e: 0x00d2,	#  LATIN CAPITAL LETTER D WITH CARON
-    0x010f: 0x00d4,	#  LATIN SMALL LETTER D WITH CARON
-    0x0110: 0x00d1,	#  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0x00d0,	#  LATIN SMALL LETTER D WITH STROKE
-    0x0118: 0x00a8,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0x00a9,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x011a: 0x00b7,	#  LATIN CAPITAL LETTER E WITH CARON
-    0x011b: 0x00d8,	#  LATIN SMALL LETTER E WITH CARON
-    0x0139: 0x0091,	#  LATIN CAPITAL LETTER L WITH ACUTE
-    0x013a: 0x0092,	#  LATIN SMALL LETTER L WITH ACUTE
-    0x013d: 0x0095,	#  LATIN CAPITAL LETTER L WITH CARON
-    0x013e: 0x0096,	#  LATIN SMALL LETTER L WITH CARON
-    0x0141: 0x009d,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0x0088,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0x00e3,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0x00e4,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x0147: 0x00d5,	#  LATIN CAPITAL LETTER N WITH CARON
-    0x0148: 0x00e5,	#  LATIN SMALL LETTER N WITH CARON
-    0x0150: 0x008a,	#  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0x008b,	#  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0154: 0x00e8,	#  LATIN CAPITAL LETTER R WITH ACUTE
-    0x0155: 0x00ea,	#  LATIN SMALL LETTER R WITH ACUTE
-    0x0158: 0x00fc,	#  LATIN CAPITAL LETTER R WITH CARON
-    0x0159: 0x00fd,	#  LATIN SMALL LETTER R WITH CARON
-    0x015a: 0x0097,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0x0098,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x015e: 0x00b8,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0x00ad,	#  LATIN SMALL LETTER S WITH CEDILLA
-    0x0160: 0x00e6,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x00e7,	#  LATIN SMALL LETTER S WITH CARON
-    0x0162: 0x00dd,	#  LATIN CAPITAL LETTER T WITH CEDILLA
-    0x0163: 0x00ee,	#  LATIN SMALL LETTER T WITH CEDILLA
-    0x0164: 0x009b,	#  LATIN CAPITAL LETTER T WITH CARON
-    0x0165: 0x009c,	#  LATIN SMALL LETTER T WITH CARON
-    0x016e: 0x00de,	#  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x016f: 0x0085,	#  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0170: 0x00eb,	#  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0x00fb,	#  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0179: 0x008d,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0x00ab,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0x00bd,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0x00be,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0x00a6,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0x00a7,	#  LATIN SMALL LETTER Z WITH CARON
-    0x02c7: 0x00f3,	#  CARON
-    0x02d8: 0x00f4,	#  BREVE
-    0x02d9: 0x00fa,	#  DOT ABOVE
-    0x02db: 0x00f2,	#  OGONEK
-    0x02dd: 0x00f1,	#  DOUBLE ACUTE ACCENT
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a4: 0x00cf,     #  CURRENCY SIGN
+    0x00a7: 0x00f5,     #  SECTION SIGN
+    0x00a8: 0x00f9,     #  DIAERESIS
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00ad: 0x00f0,     #  SOFT HYPHEN
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b4: 0x00ef,     #  ACUTE ACCENT
+    0x00b8: 0x00f7,     #  CEDILLA
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00c1: 0x00b5,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00c2: 0x00b6,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00cb: 0x00d3,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00cd: 0x00d6,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00ce: 0x00d7,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00d3: 0x00e0,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00d4: 0x00e2,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00d7: 0x009e,     #  MULTIPLICATION SIGN
+    0x00da: 0x00e9,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00dd: 0x00ed,     #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
+    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00fd: 0x00ec,     #  LATIN SMALL LETTER Y WITH ACUTE
+    0x0102: 0x00c6,     #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0x00c7,     #  LATIN SMALL LETTER A WITH BREVE
+    0x0104: 0x00a4,     #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0x00a5,     #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0x008f,     #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0x0086,     #  LATIN SMALL LETTER C WITH ACUTE
+    0x010c: 0x00ac,     #  LATIN CAPITAL LETTER C WITH CARON
+    0x010d: 0x009f,     #  LATIN SMALL LETTER C WITH CARON
+    0x010e: 0x00d2,     #  LATIN CAPITAL LETTER D WITH CARON
+    0x010f: 0x00d4,     #  LATIN SMALL LETTER D WITH CARON
+    0x0110: 0x00d1,     #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0x00d0,     #  LATIN SMALL LETTER D WITH STROKE
+    0x0118: 0x00a8,     #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0x00a9,     #  LATIN SMALL LETTER E WITH OGONEK
+    0x011a: 0x00b7,     #  LATIN CAPITAL LETTER E WITH CARON
+    0x011b: 0x00d8,     #  LATIN SMALL LETTER E WITH CARON
+    0x0139: 0x0091,     #  LATIN CAPITAL LETTER L WITH ACUTE
+    0x013a: 0x0092,     #  LATIN SMALL LETTER L WITH ACUTE
+    0x013d: 0x0095,     #  LATIN CAPITAL LETTER L WITH CARON
+    0x013e: 0x0096,     #  LATIN SMALL LETTER L WITH CARON
+    0x0141: 0x009d,     #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0x0088,     #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0x00e3,     #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0x00e4,     #  LATIN SMALL LETTER N WITH ACUTE
+    0x0147: 0x00d5,     #  LATIN CAPITAL LETTER N WITH CARON
+    0x0148: 0x00e5,     #  LATIN SMALL LETTER N WITH CARON
+    0x0150: 0x008a,     #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x0151: 0x008b,     #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x0154: 0x00e8,     #  LATIN CAPITAL LETTER R WITH ACUTE
+    0x0155: 0x00ea,     #  LATIN SMALL LETTER R WITH ACUTE
+    0x0158: 0x00fc,     #  LATIN CAPITAL LETTER R WITH CARON
+    0x0159: 0x00fd,     #  LATIN SMALL LETTER R WITH CARON
+    0x015a: 0x0097,     #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015b: 0x0098,     #  LATIN SMALL LETTER S WITH ACUTE
+    0x015e: 0x00b8,     #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015f: 0x00ad,     #  LATIN SMALL LETTER S WITH CEDILLA
+    0x0160: 0x00e6,     #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0x00e7,     #  LATIN SMALL LETTER S WITH CARON
+    0x0162: 0x00dd,     #  LATIN CAPITAL LETTER T WITH CEDILLA
+    0x0163: 0x00ee,     #  LATIN SMALL LETTER T WITH CEDILLA
+    0x0164: 0x009b,     #  LATIN CAPITAL LETTER T WITH CARON
+    0x0165: 0x009c,     #  LATIN SMALL LETTER T WITH CARON
+    0x016e: 0x00de,     #  LATIN CAPITAL LETTER U WITH RING ABOVE
+    0x016f: 0x0085,     #  LATIN SMALL LETTER U WITH RING ABOVE
+    0x0170: 0x00eb,     #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x0171: 0x00fb,     #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x0179: 0x008d,     #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017a: 0x00ab,     #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017b: 0x00bd,     #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017c: 0x00be,     #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017d: 0x00a6,     #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017e: 0x00a7,     #  LATIN SMALL LETTER Z WITH CARON
+    0x02c7: 0x00f3,     #  CARON
+    0x02d8: 0x00f4,     #  BREVE
+    0x02d9: 0x00fa,     #  DOT ABOVE
+    0x02db: 0x00f2,     #  OGONEK
+    0x02dd: 0x00f1,     #  DOUBLE ACUTE ACCENT
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp855.py
==============================================================================
--- python/trunk/Lib/encodings/cp855.py	(original)
+++ python/trunk/Lib/encodings/cp855.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x0452,	#  CYRILLIC SMALL LETTER DJE
-    0x0081: 0x0402,	#  CYRILLIC CAPITAL LETTER DJE
-    0x0082: 0x0453,	#  CYRILLIC SMALL LETTER GJE
-    0x0083: 0x0403,	#  CYRILLIC CAPITAL LETTER GJE
-    0x0084: 0x0451,	#  CYRILLIC SMALL LETTER IO
-    0x0085: 0x0401,	#  CYRILLIC CAPITAL LETTER IO
-    0x0086: 0x0454,	#  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0087: 0x0404,	#  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0088: 0x0455,	#  CYRILLIC SMALL LETTER DZE
-    0x0089: 0x0405,	#  CYRILLIC CAPITAL LETTER DZE
-    0x008a: 0x0456,	#  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x008b: 0x0406,	#  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x008c: 0x0457,	#  CYRILLIC SMALL LETTER YI
-    0x008d: 0x0407,	#  CYRILLIC CAPITAL LETTER YI
-    0x008e: 0x0458,	#  CYRILLIC SMALL LETTER JE
-    0x008f: 0x0408,	#  CYRILLIC CAPITAL LETTER JE
-    0x0090: 0x0459,	#  CYRILLIC SMALL LETTER LJE
-    0x0091: 0x0409,	#  CYRILLIC CAPITAL LETTER LJE
-    0x0092: 0x045a,	#  CYRILLIC SMALL LETTER NJE
-    0x0093: 0x040a,	#  CYRILLIC CAPITAL LETTER NJE
-    0x0094: 0x045b,	#  CYRILLIC SMALL LETTER TSHE
-    0x0095: 0x040b,	#  CYRILLIC CAPITAL LETTER TSHE
-    0x0096: 0x045c,	#  CYRILLIC SMALL LETTER KJE
-    0x0097: 0x040c,	#  CYRILLIC CAPITAL LETTER KJE
-    0x0098: 0x045e,	#  CYRILLIC SMALL LETTER SHORT U
-    0x0099: 0x040e,	#  CYRILLIC CAPITAL LETTER SHORT U
-    0x009a: 0x045f,	#  CYRILLIC SMALL LETTER DZHE
-    0x009b: 0x040f,	#  CYRILLIC CAPITAL LETTER DZHE
-    0x009c: 0x044e,	#  CYRILLIC SMALL LETTER YU
-    0x009d: 0x042e,	#  CYRILLIC CAPITAL LETTER YU
-    0x009e: 0x044a,	#  CYRILLIC SMALL LETTER HARD SIGN
-    0x009f: 0x042a,	#  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x00a0: 0x0430,	#  CYRILLIC SMALL LETTER A
-    0x00a1: 0x0410,	#  CYRILLIC CAPITAL LETTER A
-    0x00a2: 0x0431,	#  CYRILLIC SMALL LETTER BE
-    0x00a3: 0x0411,	#  CYRILLIC CAPITAL LETTER BE
-    0x00a4: 0x0446,	#  CYRILLIC SMALL LETTER TSE
-    0x00a5: 0x0426,	#  CYRILLIC CAPITAL LETTER TSE
-    0x00a6: 0x0434,	#  CYRILLIC SMALL LETTER DE
-    0x00a7: 0x0414,	#  CYRILLIC CAPITAL LETTER DE
-    0x00a8: 0x0435,	#  CYRILLIC SMALL LETTER IE
-    0x00a9: 0x0415,	#  CYRILLIC CAPITAL LETTER IE
-    0x00aa: 0x0444,	#  CYRILLIC SMALL LETTER EF
-    0x00ab: 0x0424,	#  CYRILLIC CAPITAL LETTER EF
-    0x00ac: 0x0433,	#  CYRILLIC SMALL LETTER GHE
-    0x00ad: 0x0413,	#  CYRILLIC CAPITAL LETTER GHE
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x0445,	#  CYRILLIC SMALL LETTER HA
-    0x00b6: 0x0425,	#  CYRILLIC CAPITAL LETTER HA
-    0x00b7: 0x0438,	#  CYRILLIC SMALL LETTER I
-    0x00b8: 0x0418,	#  CYRILLIC CAPITAL LETTER I
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x0439,	#  CYRILLIC SMALL LETTER SHORT I
-    0x00be: 0x0419,	#  CYRILLIC CAPITAL LETTER SHORT I
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x043a,	#  CYRILLIC SMALL LETTER KA
-    0x00c7: 0x041a,	#  CYRILLIC CAPITAL LETTER KA
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x00a4,	#  CURRENCY SIGN
-    0x00d0: 0x043b,	#  CYRILLIC SMALL LETTER EL
-    0x00d1: 0x041b,	#  CYRILLIC CAPITAL LETTER EL
-    0x00d2: 0x043c,	#  CYRILLIC SMALL LETTER EM
-    0x00d3: 0x041c,	#  CYRILLIC CAPITAL LETTER EM
-    0x00d4: 0x043d,	#  CYRILLIC SMALL LETTER EN
-    0x00d5: 0x041d,	#  CYRILLIC CAPITAL LETTER EN
-    0x00d6: 0x043e,	#  CYRILLIC SMALL LETTER O
-    0x00d7: 0x041e,	#  CYRILLIC CAPITAL LETTER O
-    0x00d8: 0x043f,	#  CYRILLIC SMALL LETTER PE
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x041f,	#  CYRILLIC CAPITAL LETTER PE
-    0x00de: 0x044f,	#  CYRILLIC SMALL LETTER YA
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x042f,	#  CYRILLIC CAPITAL LETTER YA
-    0x00e1: 0x0440,	#  CYRILLIC SMALL LETTER ER
-    0x00e2: 0x0420,	#  CYRILLIC CAPITAL LETTER ER
-    0x00e3: 0x0441,	#  CYRILLIC SMALL LETTER ES
-    0x00e4: 0x0421,	#  CYRILLIC CAPITAL LETTER ES
-    0x00e5: 0x0442,	#  CYRILLIC SMALL LETTER TE
-    0x00e6: 0x0422,	#  CYRILLIC CAPITAL LETTER TE
-    0x00e7: 0x0443,	#  CYRILLIC SMALL LETTER U
-    0x00e8: 0x0423,	#  CYRILLIC CAPITAL LETTER U
-    0x00e9: 0x0436,	#  CYRILLIC SMALL LETTER ZHE
-    0x00ea: 0x0416,	#  CYRILLIC CAPITAL LETTER ZHE
-    0x00eb: 0x0432,	#  CYRILLIC SMALL LETTER VE
-    0x00ec: 0x0412,	#  CYRILLIC CAPITAL LETTER VE
-    0x00ed: 0x044c,	#  CYRILLIC SMALL LETTER SOFT SIGN
-    0x00ee: 0x042c,	#  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x00ef: 0x2116,	#  NUMERO SIGN
-    0x00f0: 0x00ad,	#  SOFT HYPHEN
-    0x00f1: 0x044b,	#  CYRILLIC SMALL LETTER YERU
-    0x00f2: 0x042b,	#  CYRILLIC CAPITAL LETTER YERU
-    0x00f3: 0x0437,	#  CYRILLIC SMALL LETTER ZE
-    0x00f4: 0x0417,	#  CYRILLIC CAPITAL LETTER ZE
-    0x00f5: 0x0448,	#  CYRILLIC SMALL LETTER SHA
-    0x00f6: 0x0428,	#  CYRILLIC CAPITAL LETTER SHA
-    0x00f7: 0x044d,	#  CYRILLIC SMALL LETTER E
-    0x00f8: 0x042d,	#  CYRILLIC CAPITAL LETTER E
-    0x00f9: 0x0449,	#  CYRILLIC SMALL LETTER SHCHA
-    0x00fa: 0x0429,	#  CYRILLIC CAPITAL LETTER SHCHA
-    0x00fb: 0x0447,	#  CYRILLIC SMALL LETTER CHE
-    0x00fc: 0x0427,	#  CYRILLIC CAPITAL LETTER CHE
-    0x00fd: 0x00a7,	#  SECTION SIGN
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x0452,     #  CYRILLIC SMALL LETTER DJE
+    0x0081: 0x0402,     #  CYRILLIC CAPITAL LETTER DJE
+    0x0082: 0x0453,     #  CYRILLIC SMALL LETTER GJE
+    0x0083: 0x0403,     #  CYRILLIC CAPITAL LETTER GJE
+    0x0084: 0x0451,     #  CYRILLIC SMALL LETTER IO
+    0x0085: 0x0401,     #  CYRILLIC CAPITAL LETTER IO
+    0x0086: 0x0454,     #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0087: 0x0404,     #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0088: 0x0455,     #  CYRILLIC SMALL LETTER DZE
+    0x0089: 0x0405,     #  CYRILLIC CAPITAL LETTER DZE
+    0x008a: 0x0456,     #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x008b: 0x0406,     #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x008c: 0x0457,     #  CYRILLIC SMALL LETTER YI
+    0x008d: 0x0407,     #  CYRILLIC CAPITAL LETTER YI
+    0x008e: 0x0458,     #  CYRILLIC SMALL LETTER JE
+    0x008f: 0x0408,     #  CYRILLIC CAPITAL LETTER JE
+    0x0090: 0x0459,     #  CYRILLIC SMALL LETTER LJE
+    0x0091: 0x0409,     #  CYRILLIC CAPITAL LETTER LJE
+    0x0092: 0x045a,     #  CYRILLIC SMALL LETTER NJE
+    0x0093: 0x040a,     #  CYRILLIC CAPITAL LETTER NJE
+    0x0094: 0x045b,     #  CYRILLIC SMALL LETTER TSHE
+    0x0095: 0x040b,     #  CYRILLIC CAPITAL LETTER TSHE
+    0x0096: 0x045c,     #  CYRILLIC SMALL LETTER KJE
+    0x0097: 0x040c,     #  CYRILLIC CAPITAL LETTER KJE
+    0x0098: 0x045e,     #  CYRILLIC SMALL LETTER SHORT U
+    0x0099: 0x040e,     #  CYRILLIC CAPITAL LETTER SHORT U
+    0x009a: 0x045f,     #  CYRILLIC SMALL LETTER DZHE
+    0x009b: 0x040f,     #  CYRILLIC CAPITAL LETTER DZHE
+    0x009c: 0x044e,     #  CYRILLIC SMALL LETTER YU
+    0x009d: 0x042e,     #  CYRILLIC CAPITAL LETTER YU
+    0x009e: 0x044a,     #  CYRILLIC SMALL LETTER HARD SIGN
+    0x009f: 0x042a,     #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x00a0: 0x0430,     #  CYRILLIC SMALL LETTER A
+    0x00a1: 0x0410,     #  CYRILLIC CAPITAL LETTER A
+    0x00a2: 0x0431,     #  CYRILLIC SMALL LETTER BE
+    0x00a3: 0x0411,     #  CYRILLIC CAPITAL LETTER BE
+    0x00a4: 0x0446,     #  CYRILLIC SMALL LETTER TSE
+    0x00a5: 0x0426,     #  CYRILLIC CAPITAL LETTER TSE
+    0x00a6: 0x0434,     #  CYRILLIC SMALL LETTER DE
+    0x00a7: 0x0414,     #  CYRILLIC CAPITAL LETTER DE
+    0x00a8: 0x0435,     #  CYRILLIC SMALL LETTER IE
+    0x00a9: 0x0415,     #  CYRILLIC CAPITAL LETTER IE
+    0x00aa: 0x0444,     #  CYRILLIC SMALL LETTER EF
+    0x00ab: 0x0424,     #  CYRILLIC CAPITAL LETTER EF
+    0x00ac: 0x0433,     #  CYRILLIC SMALL LETTER GHE
+    0x00ad: 0x0413,     #  CYRILLIC CAPITAL LETTER GHE
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x0445,     #  CYRILLIC SMALL LETTER HA
+    0x00b6: 0x0425,     #  CYRILLIC CAPITAL LETTER HA
+    0x00b7: 0x0438,     #  CYRILLIC SMALL LETTER I
+    0x00b8: 0x0418,     #  CYRILLIC CAPITAL LETTER I
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x0439,     #  CYRILLIC SMALL LETTER SHORT I
+    0x00be: 0x0419,     #  CYRILLIC CAPITAL LETTER SHORT I
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x043a,     #  CYRILLIC SMALL LETTER KA
+    0x00c7: 0x041a,     #  CYRILLIC CAPITAL LETTER KA
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x00a4,     #  CURRENCY SIGN
+    0x00d0: 0x043b,     #  CYRILLIC SMALL LETTER EL
+    0x00d1: 0x041b,     #  CYRILLIC CAPITAL LETTER EL
+    0x00d2: 0x043c,     #  CYRILLIC SMALL LETTER EM
+    0x00d3: 0x041c,     #  CYRILLIC CAPITAL LETTER EM
+    0x00d4: 0x043d,     #  CYRILLIC SMALL LETTER EN
+    0x00d5: 0x041d,     #  CYRILLIC CAPITAL LETTER EN
+    0x00d6: 0x043e,     #  CYRILLIC SMALL LETTER O
+    0x00d7: 0x041e,     #  CYRILLIC CAPITAL LETTER O
+    0x00d8: 0x043f,     #  CYRILLIC SMALL LETTER PE
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x041f,     #  CYRILLIC CAPITAL LETTER PE
+    0x00de: 0x044f,     #  CYRILLIC SMALL LETTER YA
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x042f,     #  CYRILLIC CAPITAL LETTER YA
+    0x00e1: 0x0440,     #  CYRILLIC SMALL LETTER ER
+    0x00e2: 0x0420,     #  CYRILLIC CAPITAL LETTER ER
+    0x00e3: 0x0441,     #  CYRILLIC SMALL LETTER ES
+    0x00e4: 0x0421,     #  CYRILLIC CAPITAL LETTER ES
+    0x00e5: 0x0442,     #  CYRILLIC SMALL LETTER TE
+    0x00e6: 0x0422,     #  CYRILLIC CAPITAL LETTER TE
+    0x00e7: 0x0443,     #  CYRILLIC SMALL LETTER U
+    0x00e8: 0x0423,     #  CYRILLIC CAPITAL LETTER U
+    0x00e9: 0x0436,     #  CYRILLIC SMALL LETTER ZHE
+    0x00ea: 0x0416,     #  CYRILLIC CAPITAL LETTER ZHE
+    0x00eb: 0x0432,     #  CYRILLIC SMALL LETTER VE
+    0x00ec: 0x0412,     #  CYRILLIC CAPITAL LETTER VE
+    0x00ed: 0x044c,     #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x00ee: 0x042c,     #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x00ef: 0x2116,     #  NUMERO SIGN
+    0x00f0: 0x00ad,     #  SOFT HYPHEN
+    0x00f1: 0x044b,     #  CYRILLIC SMALL LETTER YERU
+    0x00f2: 0x042b,     #  CYRILLIC CAPITAL LETTER YERU
+    0x00f3: 0x0437,     #  CYRILLIC SMALL LETTER ZE
+    0x00f4: 0x0417,     #  CYRILLIC CAPITAL LETTER ZE
+    0x00f5: 0x0448,     #  CYRILLIC SMALL LETTER SHA
+    0x00f6: 0x0428,     #  CYRILLIC CAPITAL LETTER SHA
+    0x00f7: 0x044d,     #  CYRILLIC SMALL LETTER E
+    0x00f8: 0x042d,     #  CYRILLIC CAPITAL LETTER E
+    0x00f9: 0x0449,     #  CYRILLIC SMALL LETTER SHCHA
+    0x00fa: 0x0429,     #  CYRILLIC CAPITAL LETTER SHCHA
+    0x00fb: 0x0447,     #  CYRILLIC SMALL LETTER CHE
+    0x00fc: 0x0427,     #  CYRILLIC CAPITAL LETTER CHE
+    0x00fd: 0x00a7,     #  SECTION SIGN
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\u0452'	#  0x0080 -> CYRILLIC SMALL LETTER DJE
-    u'\u0402'	#  0x0081 -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0453'	#  0x0082 -> CYRILLIC SMALL LETTER GJE
-    u'\u0403'	#  0x0083 -> CYRILLIC CAPITAL LETTER GJE
-    u'\u0451'	#  0x0084 -> CYRILLIC SMALL LETTER IO
-    u'\u0401'	#  0x0085 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0454'	#  0x0086 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0404'	#  0x0087 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0455'	#  0x0088 -> CYRILLIC SMALL LETTER DZE
-    u'\u0405'	#  0x0089 -> CYRILLIC CAPITAL LETTER DZE
-    u'\u0456'	#  0x008a -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0406'	#  0x008b -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0457'	#  0x008c -> CYRILLIC SMALL LETTER YI
-    u'\u0407'	#  0x008d -> CYRILLIC CAPITAL LETTER YI
-    u'\u0458'	#  0x008e -> CYRILLIC SMALL LETTER JE
-    u'\u0408'	#  0x008f -> CYRILLIC CAPITAL LETTER JE
-    u'\u0459'	#  0x0090 -> CYRILLIC SMALL LETTER LJE
-    u'\u0409'	#  0x0091 -> CYRILLIC CAPITAL LETTER LJE
-    u'\u045a'	#  0x0092 -> CYRILLIC SMALL LETTER NJE
-    u'\u040a'	#  0x0093 -> CYRILLIC CAPITAL LETTER NJE
-    u'\u045b'	#  0x0094 -> CYRILLIC SMALL LETTER TSHE
-    u'\u040b'	#  0x0095 -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u045c'	#  0x0096 -> CYRILLIC SMALL LETTER KJE
-    u'\u040c'	#  0x0097 -> CYRILLIC CAPITAL LETTER KJE
-    u'\u045e'	#  0x0098 -> CYRILLIC SMALL LETTER SHORT U
-    u'\u040e'	#  0x0099 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045f'	#  0x009a -> CYRILLIC SMALL LETTER DZHE
-    u'\u040f'	#  0x009b -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u044e'	#  0x009c -> CYRILLIC SMALL LETTER YU
-    u'\u042e'	#  0x009d -> CYRILLIC CAPITAL LETTER YU
-    u'\u044a'	#  0x009e -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u042a'	#  0x009f -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u0430'	#  0x00a0 -> CYRILLIC SMALL LETTER A
-    u'\u0410'	#  0x00a1 -> CYRILLIC CAPITAL LETTER A
-    u'\u0431'	#  0x00a2 -> CYRILLIC SMALL LETTER BE
-    u'\u0411'	#  0x00a3 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0446'	#  0x00a4 -> CYRILLIC SMALL LETTER TSE
-    u'\u0426'	#  0x00a5 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0434'	#  0x00a6 -> CYRILLIC SMALL LETTER DE
-    u'\u0414'	#  0x00a7 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0435'	#  0x00a8 -> CYRILLIC SMALL LETTER IE
-    u'\u0415'	#  0x00a9 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0444'	#  0x00aa -> CYRILLIC SMALL LETTER EF
-    u'\u0424'	#  0x00ab -> CYRILLIC CAPITAL LETTER EF
-    u'\u0433'	#  0x00ac -> CYRILLIC SMALL LETTER GHE
-    u'\u0413'	#  0x00ad -> CYRILLIC CAPITAL LETTER GHE
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u0445'	#  0x00b5 -> CYRILLIC SMALL LETTER HA
-    u'\u0425'	#  0x00b6 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0438'	#  0x00b7 -> CYRILLIC SMALL LETTER I
-    u'\u0418'	#  0x00b8 -> CYRILLIC CAPITAL LETTER I
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u0439'	#  0x00bd -> CYRILLIC SMALL LETTER SHORT I
-    u'\u0419'	#  0x00be -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u043a'	#  0x00c6 -> CYRILLIC SMALL LETTER KA
-    u'\u041a'	#  0x00c7 -> CYRILLIC CAPITAL LETTER KA
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'	#  0x00cf -> CURRENCY SIGN
-    u'\u043b'	#  0x00d0 -> CYRILLIC SMALL LETTER EL
-    u'\u041b'	#  0x00d1 -> CYRILLIC CAPITAL LETTER EL
-    u'\u043c'	#  0x00d2 -> CYRILLIC SMALL LETTER EM
-    u'\u041c'	#  0x00d3 -> CYRILLIC CAPITAL LETTER EM
-    u'\u043d'	#  0x00d4 -> CYRILLIC SMALL LETTER EN
-    u'\u041d'	#  0x00d5 -> CYRILLIC CAPITAL LETTER EN
-    u'\u043e'	#  0x00d6 -> CYRILLIC SMALL LETTER O
-    u'\u041e'	#  0x00d7 -> CYRILLIC CAPITAL LETTER O
-    u'\u043f'	#  0x00d8 -> CYRILLIC SMALL LETTER PE
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u041f'	#  0x00dd -> CYRILLIC CAPITAL LETTER PE
-    u'\u044f'	#  0x00de -> CYRILLIC SMALL LETTER YA
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u042f'	#  0x00e0 -> CYRILLIC CAPITAL LETTER YA
-    u'\u0440'	#  0x00e1 -> CYRILLIC SMALL LETTER ER
-    u'\u0420'	#  0x00e2 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0441'	#  0x00e3 -> CYRILLIC SMALL LETTER ES
-    u'\u0421'	#  0x00e4 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0442'	#  0x00e5 -> CYRILLIC SMALL LETTER TE
-    u'\u0422'	#  0x00e6 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0443'	#  0x00e7 -> CYRILLIC SMALL LETTER U
-    u'\u0423'	#  0x00e8 -> CYRILLIC CAPITAL LETTER U
-    u'\u0436'	#  0x00e9 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0416'	#  0x00ea -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0432'	#  0x00eb -> CYRILLIC SMALL LETTER VE
-    u'\u0412'	#  0x00ec -> CYRILLIC CAPITAL LETTER VE
-    u'\u044c'	#  0x00ed -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u042c'	#  0x00ee -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u2116'	#  0x00ef -> NUMERO SIGN
-    u'\xad'	#  0x00f0 -> SOFT HYPHEN
-    u'\u044b'	#  0x00f1 -> CYRILLIC SMALL LETTER YERU
-    u'\u042b'	#  0x00f2 -> CYRILLIC CAPITAL LETTER YERU
-    u'\u0437'	#  0x00f3 -> CYRILLIC SMALL LETTER ZE
-    u'\u0417'	#  0x00f4 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0448'	#  0x00f5 -> CYRILLIC SMALL LETTER SHA
-    u'\u0428'	#  0x00f6 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u044d'	#  0x00f7 -> CYRILLIC SMALL LETTER E
-    u'\u042d'	#  0x00f8 -> CYRILLIC CAPITAL LETTER E
-    u'\u0449'	#  0x00f9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u0429'	#  0x00fa -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u0447'	#  0x00fb -> CYRILLIC SMALL LETTER CHE
-    u'\u0427'	#  0x00fc -> CYRILLIC CAPITAL LETTER CHE
-    u'\xa7'	#  0x00fd -> SECTION SIGN
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\u0452'   #  0x0080 -> CYRILLIC SMALL LETTER DJE
+    u'\u0402'   #  0x0081 -> CYRILLIC CAPITAL LETTER DJE
+    u'\u0453'   #  0x0082 -> CYRILLIC SMALL LETTER GJE
+    u'\u0403'   #  0x0083 -> CYRILLIC CAPITAL LETTER GJE
+    u'\u0451'   #  0x0084 -> CYRILLIC SMALL LETTER IO
+    u'\u0401'   #  0x0085 -> CYRILLIC CAPITAL LETTER IO
+    u'\u0454'   #  0x0086 -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\u0404'   #  0x0087 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\u0455'   #  0x0088 -> CYRILLIC SMALL LETTER DZE
+    u'\u0405'   #  0x0089 -> CYRILLIC CAPITAL LETTER DZE
+    u'\u0456'   #  0x008a -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0406'   #  0x008b -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0457'   #  0x008c -> CYRILLIC SMALL LETTER YI
+    u'\u0407'   #  0x008d -> CYRILLIC CAPITAL LETTER YI
+    u'\u0458'   #  0x008e -> CYRILLIC SMALL LETTER JE
+    u'\u0408'   #  0x008f -> CYRILLIC CAPITAL LETTER JE
+    u'\u0459'   #  0x0090 -> CYRILLIC SMALL LETTER LJE
+    u'\u0409'   #  0x0091 -> CYRILLIC CAPITAL LETTER LJE
+    u'\u045a'   #  0x0092 -> CYRILLIC SMALL LETTER NJE
+    u'\u040a'   #  0x0093 -> CYRILLIC CAPITAL LETTER NJE
+    u'\u045b'   #  0x0094 -> CYRILLIC SMALL LETTER TSHE
+    u'\u040b'   #  0x0095 -> CYRILLIC CAPITAL LETTER TSHE
+    u'\u045c'   #  0x0096 -> CYRILLIC SMALL LETTER KJE
+    u'\u040c'   #  0x0097 -> CYRILLIC CAPITAL LETTER KJE
+    u'\u045e'   #  0x0098 -> CYRILLIC SMALL LETTER SHORT U
+    u'\u040e'   #  0x0099 -> CYRILLIC CAPITAL LETTER SHORT U
+    u'\u045f'   #  0x009a -> CYRILLIC SMALL LETTER DZHE
+    u'\u040f'   #  0x009b -> CYRILLIC CAPITAL LETTER DZHE
+    u'\u044e'   #  0x009c -> CYRILLIC SMALL LETTER YU
+    u'\u042e'   #  0x009d -> CYRILLIC CAPITAL LETTER YU
+    u'\u044a'   #  0x009e -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u042a'   #  0x009f -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\u0430'   #  0x00a0 -> CYRILLIC SMALL LETTER A
+    u'\u0410'   #  0x00a1 -> CYRILLIC CAPITAL LETTER A
+    u'\u0431'   #  0x00a2 -> CYRILLIC SMALL LETTER BE
+    u'\u0411'   #  0x00a3 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0446'   #  0x00a4 -> CYRILLIC SMALL LETTER TSE
+    u'\u0426'   #  0x00a5 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0434'   #  0x00a6 -> CYRILLIC SMALL LETTER DE
+    u'\u0414'   #  0x00a7 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0435'   #  0x00a8 -> CYRILLIC SMALL LETTER IE
+    u'\u0415'   #  0x00a9 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0444'   #  0x00aa -> CYRILLIC SMALL LETTER EF
+    u'\u0424'   #  0x00ab -> CYRILLIC CAPITAL LETTER EF
+    u'\u0433'   #  0x00ac -> CYRILLIC SMALL LETTER GHE
+    u'\u0413'   #  0x00ad -> CYRILLIC CAPITAL LETTER GHE
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u0445'   #  0x00b5 -> CYRILLIC SMALL LETTER HA
+    u'\u0425'   #  0x00b6 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0438'   #  0x00b7 -> CYRILLIC SMALL LETTER I
+    u'\u0418'   #  0x00b8 -> CYRILLIC CAPITAL LETTER I
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u0439'   #  0x00bd -> CYRILLIC SMALL LETTER SHORT I
+    u'\u0419'   #  0x00be -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u043a'   #  0x00c6 -> CYRILLIC SMALL LETTER KA
+    u'\u041a'   #  0x00c7 -> CYRILLIC CAPITAL LETTER KA
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa4'     #  0x00cf -> CURRENCY SIGN
+    u'\u043b'   #  0x00d0 -> CYRILLIC SMALL LETTER EL
+    u'\u041b'   #  0x00d1 -> CYRILLIC CAPITAL LETTER EL
+    u'\u043c'   #  0x00d2 -> CYRILLIC SMALL LETTER EM
+    u'\u041c'   #  0x00d3 -> CYRILLIC CAPITAL LETTER EM
+    u'\u043d'   #  0x00d4 -> CYRILLIC SMALL LETTER EN
+    u'\u041d'   #  0x00d5 -> CYRILLIC CAPITAL LETTER EN
+    u'\u043e'   #  0x00d6 -> CYRILLIC SMALL LETTER O
+    u'\u041e'   #  0x00d7 -> CYRILLIC CAPITAL LETTER O
+    u'\u043f'   #  0x00d8 -> CYRILLIC SMALL LETTER PE
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u041f'   #  0x00dd -> CYRILLIC CAPITAL LETTER PE
+    u'\u044f'   #  0x00de -> CYRILLIC SMALL LETTER YA
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u042f'   #  0x00e0 -> CYRILLIC CAPITAL LETTER YA
+    u'\u0440'   #  0x00e1 -> CYRILLIC SMALL LETTER ER
+    u'\u0420'   #  0x00e2 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0441'   #  0x00e3 -> CYRILLIC SMALL LETTER ES
+    u'\u0421'   #  0x00e4 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0442'   #  0x00e5 -> CYRILLIC SMALL LETTER TE
+    u'\u0422'   #  0x00e6 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0443'   #  0x00e7 -> CYRILLIC SMALL LETTER U
+    u'\u0423'   #  0x00e8 -> CYRILLIC CAPITAL LETTER U
+    u'\u0436'   #  0x00e9 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0416'   #  0x00ea -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0432'   #  0x00eb -> CYRILLIC SMALL LETTER VE
+    u'\u0412'   #  0x00ec -> CYRILLIC CAPITAL LETTER VE
+    u'\u044c'   #  0x00ed -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u042c'   #  0x00ee -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u2116'   #  0x00ef -> NUMERO SIGN
+    u'\xad'     #  0x00f0 -> SOFT HYPHEN
+    u'\u044b'   #  0x00f1 -> CYRILLIC SMALL LETTER YERU
+    u'\u042b'   #  0x00f2 -> CYRILLIC CAPITAL LETTER YERU
+    u'\u0437'   #  0x00f3 -> CYRILLIC SMALL LETTER ZE
+    u'\u0417'   #  0x00f4 -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0448'   #  0x00f5 -> CYRILLIC SMALL LETTER SHA
+    u'\u0428'   #  0x00f6 -> CYRILLIC CAPITAL LETTER SHA
+    u'\u044d'   #  0x00f7 -> CYRILLIC SMALL LETTER E
+    u'\u042d'   #  0x00f8 -> CYRILLIC CAPITAL LETTER E
+    u'\u0449'   #  0x00f9 -> CYRILLIC SMALL LETTER SHCHA
+    u'\u0429'   #  0x00fa -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u0447'   #  0x00fb -> CYRILLIC SMALL LETTER CHE
+    u'\u0427'   #  0x00fc -> CYRILLIC CAPITAL LETTER CHE
+    u'\xa7'     #  0x00fd -> SECTION SIGN
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a4: 0x00cf,	#  CURRENCY SIGN
-    0x00a7: 0x00fd,	#  SECTION SIGN
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ad: 0x00f0,	#  SOFT HYPHEN
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x0401: 0x0085,	#  CYRILLIC CAPITAL LETTER IO
-    0x0402: 0x0081,	#  CYRILLIC CAPITAL LETTER DJE
-    0x0403: 0x0083,	#  CYRILLIC CAPITAL LETTER GJE
-    0x0404: 0x0087,	#  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0405: 0x0089,	#  CYRILLIC CAPITAL LETTER DZE
-    0x0406: 0x008b,	#  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0x008d,	#  CYRILLIC CAPITAL LETTER YI
-    0x0408: 0x008f,	#  CYRILLIC CAPITAL LETTER JE
-    0x0409: 0x0091,	#  CYRILLIC CAPITAL LETTER LJE
-    0x040a: 0x0093,	#  CYRILLIC CAPITAL LETTER NJE
-    0x040b: 0x0095,	#  CYRILLIC CAPITAL LETTER TSHE
-    0x040c: 0x0097,	#  CYRILLIC CAPITAL LETTER KJE
-    0x040e: 0x0099,	#  CYRILLIC CAPITAL LETTER SHORT U
-    0x040f: 0x009b,	#  CYRILLIC CAPITAL LETTER DZHE
-    0x0410: 0x00a1,	#  CYRILLIC CAPITAL LETTER A
-    0x0411: 0x00a3,	#  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0x00ec,	#  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0x00ad,	#  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0x00a7,	#  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0x00a9,	#  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0x00ea,	#  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0x00f4,	#  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0x00b8,	#  CYRILLIC CAPITAL LETTER I
-    0x0419: 0x00be,	#  CYRILLIC CAPITAL LETTER SHORT I
-    0x041a: 0x00c7,	#  CYRILLIC CAPITAL LETTER KA
-    0x041b: 0x00d1,	#  CYRILLIC CAPITAL LETTER EL
-    0x041c: 0x00d3,	#  CYRILLIC CAPITAL LETTER EM
-    0x041d: 0x00d5,	#  CYRILLIC CAPITAL LETTER EN
-    0x041e: 0x00d7,	#  CYRILLIC CAPITAL LETTER O
-    0x041f: 0x00dd,	#  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0x00e2,	#  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0x00e4,	#  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0x00e6,	#  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0x00e8,	#  CYRILLIC CAPITAL LETTER U
-    0x0424: 0x00ab,	#  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0x00b6,	#  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0x00a5,	#  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0x00fc,	#  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0x00f6,	#  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0x00fa,	#  CYRILLIC CAPITAL LETTER SHCHA
-    0x042a: 0x009f,	#  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042b: 0x00f2,	#  CYRILLIC CAPITAL LETTER YERU
-    0x042c: 0x00ee,	#  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042d: 0x00f8,	#  CYRILLIC CAPITAL LETTER E
-    0x042e: 0x009d,	#  CYRILLIC CAPITAL LETTER YU
-    0x042f: 0x00e0,	#  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0x00a0,	#  CYRILLIC SMALL LETTER A
-    0x0431: 0x00a2,	#  CYRILLIC SMALL LETTER BE
-    0x0432: 0x00eb,	#  CYRILLIC SMALL LETTER VE
-    0x0433: 0x00ac,	#  CYRILLIC SMALL LETTER GHE
-    0x0434: 0x00a6,	#  CYRILLIC SMALL LETTER DE
-    0x0435: 0x00a8,	#  CYRILLIC SMALL LETTER IE
-    0x0436: 0x00e9,	#  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0x00f3,	#  CYRILLIC SMALL LETTER ZE
-    0x0438: 0x00b7,	#  CYRILLIC SMALL LETTER I
-    0x0439: 0x00bd,	#  CYRILLIC SMALL LETTER SHORT I
-    0x043a: 0x00c6,	#  CYRILLIC SMALL LETTER KA
-    0x043b: 0x00d0,	#  CYRILLIC SMALL LETTER EL
-    0x043c: 0x00d2,	#  CYRILLIC SMALL LETTER EM
-    0x043d: 0x00d4,	#  CYRILLIC SMALL LETTER EN
-    0x043e: 0x00d6,	#  CYRILLIC SMALL LETTER O
-    0x043f: 0x00d8,	#  CYRILLIC SMALL LETTER PE
-    0x0440: 0x00e1,	#  CYRILLIC SMALL LETTER ER
-    0x0441: 0x00e3,	#  CYRILLIC SMALL LETTER ES
-    0x0442: 0x00e5,	#  CYRILLIC SMALL LETTER TE
-    0x0443: 0x00e7,	#  CYRILLIC SMALL LETTER U
-    0x0444: 0x00aa,	#  CYRILLIC SMALL LETTER EF
-    0x0445: 0x00b5,	#  CYRILLIC SMALL LETTER HA
-    0x0446: 0x00a4,	#  CYRILLIC SMALL LETTER TSE
-    0x0447: 0x00fb,	#  CYRILLIC SMALL LETTER CHE
-    0x0448: 0x00f5,	#  CYRILLIC SMALL LETTER SHA
-    0x0449: 0x00f9,	#  CYRILLIC SMALL LETTER SHCHA
-    0x044a: 0x009e,	#  CYRILLIC SMALL LETTER HARD SIGN
-    0x044b: 0x00f1,	#  CYRILLIC SMALL LETTER YERU
-    0x044c: 0x00ed,	#  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044d: 0x00f7,	#  CYRILLIC SMALL LETTER E
-    0x044e: 0x009c,	#  CYRILLIC SMALL LETTER YU
-    0x044f: 0x00de,	#  CYRILLIC SMALL LETTER YA
-    0x0451: 0x0084,	#  CYRILLIC SMALL LETTER IO
-    0x0452: 0x0080,	#  CYRILLIC SMALL LETTER DJE
-    0x0453: 0x0082,	#  CYRILLIC SMALL LETTER GJE
-    0x0454: 0x0086,	#  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0455: 0x0088,	#  CYRILLIC SMALL LETTER DZE
-    0x0456: 0x008a,	#  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0x008c,	#  CYRILLIC SMALL LETTER YI
-    0x0458: 0x008e,	#  CYRILLIC SMALL LETTER JE
-    0x0459: 0x0090,	#  CYRILLIC SMALL LETTER LJE
-    0x045a: 0x0092,	#  CYRILLIC SMALL LETTER NJE
-    0x045b: 0x0094,	#  CYRILLIC SMALL LETTER TSHE
-    0x045c: 0x0096,	#  CYRILLIC SMALL LETTER KJE
-    0x045e: 0x0098,	#  CYRILLIC SMALL LETTER SHORT U
-    0x045f: 0x009a,	#  CYRILLIC SMALL LETTER DZHE
-    0x2116: 0x00ef,	#  NUMERO SIGN
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a4: 0x00cf,     #  CURRENCY SIGN
+    0x00a7: 0x00fd,     #  SECTION SIGN
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ad: 0x00f0,     #  SOFT HYPHEN
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x0401: 0x0085,     #  CYRILLIC CAPITAL LETTER IO
+    0x0402: 0x0081,     #  CYRILLIC CAPITAL LETTER DJE
+    0x0403: 0x0083,     #  CYRILLIC CAPITAL LETTER GJE
+    0x0404: 0x0087,     #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0405: 0x0089,     #  CYRILLIC CAPITAL LETTER DZE
+    0x0406: 0x008b,     #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0407: 0x008d,     #  CYRILLIC CAPITAL LETTER YI
+    0x0408: 0x008f,     #  CYRILLIC CAPITAL LETTER JE
+    0x0409: 0x0091,     #  CYRILLIC CAPITAL LETTER LJE
+    0x040a: 0x0093,     #  CYRILLIC CAPITAL LETTER NJE
+    0x040b: 0x0095,     #  CYRILLIC CAPITAL LETTER TSHE
+    0x040c: 0x0097,     #  CYRILLIC CAPITAL LETTER KJE
+    0x040e: 0x0099,     #  CYRILLIC CAPITAL LETTER SHORT U
+    0x040f: 0x009b,     #  CYRILLIC CAPITAL LETTER DZHE
+    0x0410: 0x00a1,     #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0x00a3,     #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0x00ec,     #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0x00ad,     #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0x00a7,     #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0x00a9,     #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0x00ea,     #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0x00f4,     #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0x00b8,     #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0x00be,     #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041a: 0x00c7,     #  CYRILLIC CAPITAL LETTER KA
+    0x041b: 0x00d1,     #  CYRILLIC CAPITAL LETTER EL
+    0x041c: 0x00d3,     #  CYRILLIC CAPITAL LETTER EM
+    0x041d: 0x00d5,     #  CYRILLIC CAPITAL LETTER EN
+    0x041e: 0x00d7,     #  CYRILLIC CAPITAL LETTER O
+    0x041f: 0x00dd,     #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0x00e2,     #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0x00e4,     #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0x00e6,     #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0x00e8,     #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0x00ab,     #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0x00b6,     #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0x00a5,     #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0x00fc,     #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0x00f6,     #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0x00fa,     #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042a: 0x009f,     #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042b: 0x00f2,     #  CYRILLIC CAPITAL LETTER YERU
+    0x042c: 0x00ee,     #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042d: 0x00f8,     #  CYRILLIC CAPITAL LETTER E
+    0x042e: 0x009d,     #  CYRILLIC CAPITAL LETTER YU
+    0x042f: 0x00e0,     #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0x00a0,     #  CYRILLIC SMALL LETTER A
+    0x0431: 0x00a2,     #  CYRILLIC SMALL LETTER BE
+    0x0432: 0x00eb,     #  CYRILLIC SMALL LETTER VE
+    0x0433: 0x00ac,     #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0x00a6,     #  CYRILLIC SMALL LETTER DE
+    0x0435: 0x00a8,     #  CYRILLIC SMALL LETTER IE
+    0x0436: 0x00e9,     #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0x00f3,     #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0x00b7,     #  CYRILLIC SMALL LETTER I
+    0x0439: 0x00bd,     #  CYRILLIC SMALL LETTER SHORT I
+    0x043a: 0x00c6,     #  CYRILLIC SMALL LETTER KA
+    0x043b: 0x00d0,     #  CYRILLIC SMALL LETTER EL
+    0x043c: 0x00d2,     #  CYRILLIC SMALL LETTER EM
+    0x043d: 0x00d4,     #  CYRILLIC SMALL LETTER EN
+    0x043e: 0x00d6,     #  CYRILLIC SMALL LETTER O
+    0x043f: 0x00d8,     #  CYRILLIC SMALL LETTER PE
+    0x0440: 0x00e1,     #  CYRILLIC SMALL LETTER ER
+    0x0441: 0x00e3,     #  CYRILLIC SMALL LETTER ES
+    0x0442: 0x00e5,     #  CYRILLIC SMALL LETTER TE
+    0x0443: 0x00e7,     #  CYRILLIC SMALL LETTER U
+    0x0444: 0x00aa,     #  CYRILLIC SMALL LETTER EF
+    0x0445: 0x00b5,     #  CYRILLIC SMALL LETTER HA
+    0x0446: 0x00a4,     #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0x00fb,     #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0x00f5,     #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0x00f9,     #  CYRILLIC SMALL LETTER SHCHA
+    0x044a: 0x009e,     #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044b: 0x00f1,     #  CYRILLIC SMALL LETTER YERU
+    0x044c: 0x00ed,     #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044d: 0x00f7,     #  CYRILLIC SMALL LETTER E
+    0x044e: 0x009c,     #  CYRILLIC SMALL LETTER YU
+    0x044f: 0x00de,     #  CYRILLIC SMALL LETTER YA
+    0x0451: 0x0084,     #  CYRILLIC SMALL LETTER IO
+    0x0452: 0x0080,     #  CYRILLIC SMALL LETTER DJE
+    0x0453: 0x0082,     #  CYRILLIC SMALL LETTER GJE
+    0x0454: 0x0086,     #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0455: 0x0088,     #  CYRILLIC SMALL LETTER DZE
+    0x0456: 0x008a,     #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0457: 0x008c,     #  CYRILLIC SMALL LETTER YI
+    0x0458: 0x008e,     #  CYRILLIC SMALL LETTER JE
+    0x0459: 0x0090,     #  CYRILLIC SMALL LETTER LJE
+    0x045a: 0x0092,     #  CYRILLIC SMALL LETTER NJE
+    0x045b: 0x0094,     #  CYRILLIC SMALL LETTER TSHE
+    0x045c: 0x0096,     #  CYRILLIC SMALL LETTER KJE
+    0x045e: 0x0098,     #  CYRILLIC SMALL LETTER SHORT U
+    0x045f: 0x009a,     #  CYRILLIC SMALL LETTER DZHE
+    0x2116: 0x00ef,     #  NUMERO SIGN
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp856.py
==============================================================================
--- python/trunk/Lib/encodings/cp856.py	(original)
+++ python/trunk/Lib/encodings/cp856.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,481 +32,480 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u05d0'	#  0x80 -> HEBREW LETTER ALEF
-    u'\u05d1'	#  0x81 -> HEBREW LETTER BET
-    u'\u05d2'	#  0x82 -> HEBREW LETTER GIMEL
-    u'\u05d3'	#  0x83 -> HEBREW LETTER DALET
-    u'\u05d4'	#  0x84 -> HEBREW LETTER HE
-    u'\u05d5'	#  0x85 -> HEBREW LETTER VAV
-    u'\u05d6'	#  0x86 -> HEBREW LETTER ZAYIN
-    u'\u05d7'	#  0x87 -> HEBREW LETTER HET
-    u'\u05d8'	#  0x88 -> HEBREW LETTER TET
-    u'\u05d9'	#  0x89 -> HEBREW LETTER YOD
-    u'\u05da'	#  0x8A -> HEBREW LETTER FINAL KAF
-    u'\u05db'	#  0x8B -> HEBREW LETTER KAF
-    u'\u05dc'	#  0x8C -> HEBREW LETTER LAMED
-    u'\u05dd'	#  0x8D -> HEBREW LETTER FINAL MEM
-    u'\u05de'	#  0x8E -> HEBREW LETTER MEM
-    u'\u05df'	#  0x8F -> HEBREW LETTER FINAL NUN
-    u'\u05e0'	#  0x90 -> HEBREW LETTER NUN
-    u'\u05e1'	#  0x91 -> HEBREW LETTER SAMEKH
-    u'\u05e2'	#  0x92 -> HEBREW LETTER AYIN
-    u'\u05e3'	#  0x93 -> HEBREW LETTER FINAL PE
-    u'\u05e4'	#  0x94 -> HEBREW LETTER PE
-    u'\u05e5'	#  0x95 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'	#  0x96 -> HEBREW LETTER TSADI
-    u'\u05e7'	#  0x97 -> HEBREW LETTER QOF
-    u'\u05e8'	#  0x98 -> HEBREW LETTER RESH
-    u'\u05e9'	#  0x99 -> HEBREW LETTER SHIN
-    u'\u05ea'	#  0x9A -> HEBREW LETTER TAV
-    u'\ufffe'	#  0x9B -> UNDEFINED
-    u'\xa3'	#  0x9C -> POUND SIGN
-    u'\ufffe'	#  0x9D -> UNDEFINED
-    u'\xd7'	#  0x9E -> MULTIPLICATION SIGN
-    u'\ufffe'	#  0x9F -> UNDEFINED
-    u'\ufffe'	#  0xA0 -> UNDEFINED
-    u'\ufffe'	#  0xA1 -> UNDEFINED
-    u'\ufffe'	#  0xA2 -> UNDEFINED
-    u'\ufffe'	#  0xA3 -> UNDEFINED
-    u'\ufffe'	#  0xA4 -> UNDEFINED
-    u'\ufffe'	#  0xA5 -> UNDEFINED
-    u'\ufffe'	#  0xA6 -> UNDEFINED
-    u'\ufffe'	#  0xA7 -> UNDEFINED
-    u'\ufffe'	#  0xA8 -> UNDEFINED
-    u'\xae'	#  0xA9 -> REGISTERED SIGN
-    u'\xac'	#  0xAA -> NOT SIGN
-    u'\xbd'	#  0xAB -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0xAC -> VULGAR FRACTION ONE QUARTER
-    u'\ufffe'	#  0xAD -> UNDEFINED
-    u'\xab'	#  0xAE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0xAF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0xB0 -> LIGHT SHADE
-    u'\u2592'	#  0xB1 -> MEDIUM SHADE
-    u'\u2593'	#  0xB2 -> DARK SHADE
-    u'\u2502'	#  0xB3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0xB4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\ufffe'	#  0xB5 -> UNDEFINED
-    u'\ufffe'	#  0xB6 -> UNDEFINED
-    u'\ufffe'	#  0xB7 -> UNDEFINED
-    u'\xa9'	#  0xB8 -> COPYRIGHT SIGN
-    u'\u2563'	#  0xB9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0xBA -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0xBB -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0xBC -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\xa2'	#  0xBD -> CENT SIGN
-    u'\xa5'	#  0xBE -> YEN SIGN
-    u'\u2510'	#  0xBF -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0xC0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0xC1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0xC2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0xC3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0xC4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0xC5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\ufffe'	#  0xC6 -> UNDEFINED
-    u'\ufffe'	#  0xC7 -> UNDEFINED
-    u'\u255a'	#  0xC8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0xC9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0xCA -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0xCB -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0xCC -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0xCD -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0xCE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'	#  0xCF -> CURRENCY SIGN
-    u'\ufffe'	#  0xD0 -> UNDEFINED
-    u'\ufffe'	#  0xD1 -> UNDEFINED
-    u'\ufffe'	#  0xD2 -> UNDEFINED
-    u'\ufffe'	#  0xD3 -> UNDEFINEDS
-    u'\ufffe'	#  0xD4 -> UNDEFINED
-    u'\ufffe'	#  0xD5 -> UNDEFINED
-    u'\ufffe'	#  0xD6 -> UNDEFINEDE
-    u'\ufffe'	#  0xD7 -> UNDEFINED
-    u'\ufffe'	#  0xD8 -> UNDEFINED
-    u'\u2518'	#  0xD9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0xDA -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0xDB -> FULL BLOCK
-    u'\u2584'	#  0xDC -> LOWER HALF BLOCK
-    u'\xa6'	#  0xDD -> BROKEN BAR
-    u'\ufffe'	#  0xDE -> UNDEFINED
-    u'\u2580'	#  0xDF -> UPPER HALF BLOCK
-    u'\ufffe'	#  0xE0 -> UNDEFINED
-    u'\ufffe'	#  0xE1 -> UNDEFINED
-    u'\ufffe'	#  0xE2 -> UNDEFINED
-    u'\ufffe'	#  0xE3 -> UNDEFINED
-    u'\ufffe'	#  0xE4 -> UNDEFINED
-    u'\ufffe'	#  0xE5 -> UNDEFINED
-    u'\xb5'	#  0xE6 -> MICRO SIGN
-    u'\ufffe'	#  0xE7 -> UNDEFINED
-    u'\ufffe'	#  0xE8 -> UNDEFINED
-    u'\ufffe'	#  0xE9 -> UNDEFINED
-    u'\ufffe'	#  0xEA -> UNDEFINED
-    u'\ufffe'	#  0xEB -> UNDEFINED
-    u'\ufffe'	#  0xEC -> UNDEFINED
-    u'\ufffe'	#  0xED -> UNDEFINED
-    u'\xaf'	#  0xEE -> MACRON
-    u'\xb4'	#  0xEF -> ACUTE ACCENT
-    u'\xad'	#  0xF0 -> SOFT HYPHEN
-    u'\xb1'	#  0xF1 -> PLUS-MINUS SIGN
-    u'\u2017'	#  0xF2 -> DOUBLE LOW LINE
-    u'\xbe'	#  0xF3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'	#  0xF4 -> PILCROW SIGN
-    u'\xa7'	#  0xF5 -> SECTION SIGN
-    u'\xf7'	#  0xF6 -> DIVISION SIGN
-    u'\xb8'	#  0xF7 -> CEDILLA
-    u'\xb0'	#  0xF8 -> DEGREE SIGN
-    u'\xa8'	#  0xF9 -> DIAERESIS
-    u'\xb7'	#  0xFA -> MIDDLE DOT
-    u'\xb9'	#  0xFB -> SUPERSCRIPT ONE
-    u'\xb3'	#  0xFC -> SUPERSCRIPT THREE
-    u'\xb2'	#  0xFD -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0xFE -> BLACK SQUARE
-    u'\xa0'	#  0xFF -> NO-BREAK SPACE
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u05d0'   #  0x80 -> HEBREW LETTER ALEF
+    u'\u05d1'   #  0x81 -> HEBREW LETTER BET
+    u'\u05d2'   #  0x82 -> HEBREW LETTER GIMEL
+    u'\u05d3'   #  0x83 -> HEBREW LETTER DALET
+    u'\u05d4'   #  0x84 -> HEBREW LETTER HE
+    u'\u05d5'   #  0x85 -> HEBREW LETTER VAV
+    u'\u05d6'   #  0x86 -> HEBREW LETTER ZAYIN
+    u'\u05d7'   #  0x87 -> HEBREW LETTER HET
+    u'\u05d8'   #  0x88 -> HEBREW LETTER TET
+    u'\u05d9'   #  0x89 -> HEBREW LETTER YOD
+    u'\u05da'   #  0x8A -> HEBREW LETTER FINAL KAF
+    u'\u05db'   #  0x8B -> HEBREW LETTER KAF
+    u'\u05dc'   #  0x8C -> HEBREW LETTER LAMED
+    u'\u05dd'   #  0x8D -> HEBREW LETTER FINAL MEM
+    u'\u05de'   #  0x8E -> HEBREW LETTER MEM
+    u'\u05df'   #  0x8F -> HEBREW LETTER FINAL NUN
+    u'\u05e0'   #  0x90 -> HEBREW LETTER NUN
+    u'\u05e1'   #  0x91 -> HEBREW LETTER SAMEKH
+    u'\u05e2'   #  0x92 -> HEBREW LETTER AYIN
+    u'\u05e3'   #  0x93 -> HEBREW LETTER FINAL PE
+    u'\u05e4'   #  0x94 -> HEBREW LETTER PE
+    u'\u05e5'   #  0x95 -> HEBREW LETTER FINAL TSADI
+    u'\u05e6'   #  0x96 -> HEBREW LETTER TSADI
+    u'\u05e7'   #  0x97 -> HEBREW LETTER QOF
+    u'\u05e8'   #  0x98 -> HEBREW LETTER RESH
+    u'\u05e9'   #  0x99 -> HEBREW LETTER SHIN
+    u'\u05ea'   #  0x9A -> HEBREW LETTER TAV
+    u'\ufffe'   #  0x9B -> UNDEFINED
+    u'\xa3'     #  0x9C -> POUND SIGN
+    u'\ufffe'   #  0x9D -> UNDEFINED
+    u'\xd7'     #  0x9E -> MULTIPLICATION SIGN
+    u'\ufffe'   #  0x9F -> UNDEFINED
+    u'\ufffe'   #  0xA0 -> UNDEFINED
+    u'\ufffe'   #  0xA1 -> UNDEFINED
+    u'\ufffe'   #  0xA2 -> UNDEFINED
+    u'\ufffe'   #  0xA3 -> UNDEFINED
+    u'\ufffe'   #  0xA4 -> UNDEFINED
+    u'\ufffe'   #  0xA5 -> UNDEFINED
+    u'\ufffe'   #  0xA6 -> UNDEFINED
+    u'\ufffe'   #  0xA7 -> UNDEFINED
+    u'\ufffe'   #  0xA8 -> UNDEFINED
+    u'\xae'     #  0xA9 -> REGISTERED SIGN
+    u'\xac'     #  0xAA -> NOT SIGN
+    u'\xbd'     #  0xAB -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0xAC -> VULGAR FRACTION ONE QUARTER
+    u'\ufffe'   #  0xAD -> UNDEFINED
+    u'\xab'     #  0xAE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0xAF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0xB0 -> LIGHT SHADE
+    u'\u2592'   #  0xB1 -> MEDIUM SHADE
+    u'\u2593'   #  0xB2 -> DARK SHADE
+    u'\u2502'   #  0xB3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0xB4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\ufffe'   #  0xB5 -> UNDEFINED
+    u'\ufffe'   #  0xB6 -> UNDEFINED
+    u'\ufffe'   #  0xB7 -> UNDEFINED
+    u'\xa9'     #  0xB8 -> COPYRIGHT SIGN
+    u'\u2563'   #  0xB9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0xBA -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0xBB -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0xBC -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\xa2'     #  0xBD -> CENT SIGN
+    u'\xa5'     #  0xBE -> YEN SIGN
+    u'\u2510'   #  0xBF -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0xC0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0xC1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0xC2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0xC3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0xC4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0xC5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\ufffe'   #  0xC6 -> UNDEFINED
+    u'\ufffe'   #  0xC7 -> UNDEFINED
+    u'\u255a'   #  0xC8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0xC9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0xCA -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0xCB -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0xCC -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0xCD -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0xCE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa4'     #  0xCF -> CURRENCY SIGN
+    u'\ufffe'   #  0xD0 -> UNDEFINED
+    u'\ufffe'   #  0xD1 -> UNDEFINED
+    u'\ufffe'   #  0xD2 -> UNDEFINED
+    u'\ufffe'   #  0xD3 -> UNDEFINEDS
+    u'\ufffe'   #  0xD4 -> UNDEFINED
+    u'\ufffe'   #  0xD5 -> UNDEFINED
+    u'\ufffe'   #  0xD6 -> UNDEFINEDE
+    u'\ufffe'   #  0xD7 -> UNDEFINED
+    u'\ufffe'   #  0xD8 -> UNDEFINED
+    u'\u2518'   #  0xD9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0xDA -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0xDB -> FULL BLOCK
+    u'\u2584'   #  0xDC -> LOWER HALF BLOCK
+    u'\xa6'     #  0xDD -> BROKEN BAR
+    u'\ufffe'   #  0xDE -> UNDEFINED
+    u'\u2580'   #  0xDF -> UPPER HALF BLOCK
+    u'\ufffe'   #  0xE0 -> UNDEFINED
+    u'\ufffe'   #  0xE1 -> UNDEFINED
+    u'\ufffe'   #  0xE2 -> UNDEFINED
+    u'\ufffe'   #  0xE3 -> UNDEFINED
+    u'\ufffe'   #  0xE4 -> UNDEFINED
+    u'\ufffe'   #  0xE5 -> UNDEFINED
+    u'\xb5'     #  0xE6 -> MICRO SIGN
+    u'\ufffe'   #  0xE7 -> UNDEFINED
+    u'\ufffe'   #  0xE8 -> UNDEFINED
+    u'\ufffe'   #  0xE9 -> UNDEFINED
+    u'\ufffe'   #  0xEA -> UNDEFINED
+    u'\ufffe'   #  0xEB -> UNDEFINED
+    u'\ufffe'   #  0xEC -> UNDEFINED
+    u'\ufffe'   #  0xED -> UNDEFINED
+    u'\xaf'     #  0xEE -> MACRON
+    u'\xb4'     #  0xEF -> ACUTE ACCENT
+    u'\xad'     #  0xF0 -> SOFT HYPHEN
+    u'\xb1'     #  0xF1 -> PLUS-MINUS SIGN
+    u'\u2017'   #  0xF2 -> DOUBLE LOW LINE
+    u'\xbe'     #  0xF3 -> VULGAR FRACTION THREE QUARTERS
+    u'\xb6'     #  0xF4 -> PILCROW SIGN
+    u'\xa7'     #  0xF5 -> SECTION SIGN
+    u'\xf7'     #  0xF6 -> DIVISION SIGN
+    u'\xb8'     #  0xF7 -> CEDILLA
+    u'\xb0'     #  0xF8 -> DEGREE SIGN
+    u'\xa8'     #  0xF9 -> DIAERESIS
+    u'\xb7'     #  0xFA -> MIDDLE DOT
+    u'\xb9'     #  0xFB -> SUPERSCRIPT ONE
+    u'\xb3'     #  0xFC -> SUPERSCRIPT THREE
+    u'\xb2'     #  0xFD -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0xFE -> BLACK SQUARE
+    u'\xa0'     #  0xFF -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xFF,	#  NO-BREAK SPACE
-    0x00A2: 0xBD,	#  CENT SIGN
-    0x00A3: 0x9C,	#  POUND SIGN
-    0x00A4: 0xCF,	#  CURRENCY SIGN
-    0x00A5: 0xBE,	#  YEN SIGN
-    0x00A6: 0xDD,	#  BROKEN BAR
-    0x00A7: 0xF5,	#  SECTION SIGN
-    0x00A8: 0xF9,	#  DIAERESIS
-    0x00A9: 0xB8,	#  COPYRIGHT SIGN
-    0x00AB: 0xAE,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAA,	#  NOT SIGN
-    0x00AD: 0xF0,	#  SOFT HYPHEN
-    0x00AE: 0xA9,	#  REGISTERED SIGN
-    0x00AF: 0xEE,	#  MACRON
-    0x00B0: 0xF8,	#  DEGREE SIGN
-    0x00B1: 0xF1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xFD,	#  SUPERSCRIPT TWO
-    0x00B3: 0xFC,	#  SUPERSCRIPT THREE
-    0x00B4: 0xEF,	#  ACUTE ACCENT
-    0x00B5: 0xE6,	#  MICRO SIGN
-    0x00B6: 0xF4,	#  PILCROW SIGN
-    0x00B7: 0xFA,	#  MIDDLE DOT
-    0x00B8: 0xF7,	#  CEDILLA
-    0x00B9: 0xFB,	#  SUPERSCRIPT ONE
-    0x00BB: 0xAF,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xAC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xAB,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xF3,	#  VULGAR FRACTION THREE QUARTERS
-    0x00D7: 0x9E,	#  MULTIPLICATION SIGN
-    0x00F7: 0xF6,	#  DIVISION SIGN
-    0x05D0: 0x80,	#  HEBREW LETTER ALEF
-    0x05D1: 0x81,	#  HEBREW LETTER BET
-    0x05D2: 0x82,	#  HEBREW LETTER GIMEL
-    0x05D3: 0x83,	#  HEBREW LETTER DALET
-    0x05D4: 0x84,	#  HEBREW LETTER HE
-    0x05D5: 0x85,	#  HEBREW LETTER VAV
-    0x05D6: 0x86,	#  HEBREW LETTER ZAYIN
-    0x05D7: 0x87,	#  HEBREW LETTER HET
-    0x05D8: 0x88,	#  HEBREW LETTER TET
-    0x05D9: 0x89,	#  HEBREW LETTER YOD
-    0x05DA: 0x8A,	#  HEBREW LETTER FINAL KAF
-    0x05DB: 0x8B,	#  HEBREW LETTER KAF
-    0x05DC: 0x8C,	#  HEBREW LETTER LAMED
-    0x05DD: 0x8D,	#  HEBREW LETTER FINAL MEM
-    0x05DE: 0x8E,	#  HEBREW LETTER MEM
-    0x05DF: 0x8F,	#  HEBREW LETTER FINAL NUN
-    0x05E0: 0x90,	#  HEBREW LETTER NUN
-    0x05E1: 0x91,	#  HEBREW LETTER SAMEKH
-    0x05E2: 0x92,	#  HEBREW LETTER AYIN
-    0x05E3: 0x93,	#  HEBREW LETTER FINAL PE
-    0x05E4: 0x94,	#  HEBREW LETTER PE
-    0x05E5: 0x95,	#  HEBREW LETTER FINAL TSADI
-    0x05E6: 0x96,	#  HEBREW LETTER TSADI
-    0x05E7: 0x97,	#  HEBREW LETTER QOF
-    0x05E8: 0x98,	#  HEBREW LETTER RESH
-    0x05E9: 0x99,	#  HEBREW LETTER SHIN
-    0x05EA: 0x9A,	#  HEBREW LETTER TAV
-    0x2017: 0xF2,	#  DOUBLE LOW LINE
-    0x2500: 0xC4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0xB3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250C: 0xDA,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0xBF,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0xC0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0xD9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251C: 0xC3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0xB4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252C: 0xC2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0xC1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253C: 0xC5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0xCD,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0xBA,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0xC9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0xBB,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255A: 0xC8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255D: 0xBC,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0xCC,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0xB9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0xCB,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0xCA,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256C: 0xCE,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0xDF,	#  UPPER HALF BLOCK
-    0x2584: 0xDC,	#  LOWER HALF BLOCK
-    0x2588: 0xDB,	#  FULL BLOCK
-    0x2591: 0xB0,	#  LIGHT SHADE
-    0x2592: 0xB1,	#  MEDIUM SHADE
-    0x2593: 0xB2,	#  DARK SHADE
-    0x25A0: 0xFE,	#  BLACK SQUARE
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xFF,       #  NO-BREAK SPACE
+    0x00A2: 0xBD,       #  CENT SIGN
+    0x00A3: 0x9C,       #  POUND SIGN
+    0x00A4: 0xCF,       #  CURRENCY SIGN
+    0x00A5: 0xBE,       #  YEN SIGN
+    0x00A6: 0xDD,       #  BROKEN BAR
+    0x00A7: 0xF5,       #  SECTION SIGN
+    0x00A8: 0xF9,       #  DIAERESIS
+    0x00A9: 0xB8,       #  COPYRIGHT SIGN
+    0x00AB: 0xAE,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAA,       #  NOT SIGN
+    0x00AD: 0xF0,       #  SOFT HYPHEN
+    0x00AE: 0xA9,       #  REGISTERED SIGN
+    0x00AF: 0xEE,       #  MACRON
+    0x00B0: 0xF8,       #  DEGREE SIGN
+    0x00B1: 0xF1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xFD,       #  SUPERSCRIPT TWO
+    0x00B3: 0xFC,       #  SUPERSCRIPT THREE
+    0x00B4: 0xEF,       #  ACUTE ACCENT
+    0x00B5: 0xE6,       #  MICRO SIGN
+    0x00B6: 0xF4,       #  PILCROW SIGN
+    0x00B7: 0xFA,       #  MIDDLE DOT
+    0x00B8: 0xF7,       #  CEDILLA
+    0x00B9: 0xFB,       #  SUPERSCRIPT ONE
+    0x00BB: 0xAF,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xAC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xAB,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xF3,       #  VULGAR FRACTION THREE QUARTERS
+    0x00D7: 0x9E,       #  MULTIPLICATION SIGN
+    0x00F7: 0xF6,       #  DIVISION SIGN
+    0x05D0: 0x80,       #  HEBREW LETTER ALEF
+    0x05D1: 0x81,       #  HEBREW LETTER BET
+    0x05D2: 0x82,       #  HEBREW LETTER GIMEL
+    0x05D3: 0x83,       #  HEBREW LETTER DALET
+    0x05D4: 0x84,       #  HEBREW LETTER HE
+    0x05D5: 0x85,       #  HEBREW LETTER VAV
+    0x05D6: 0x86,       #  HEBREW LETTER ZAYIN
+    0x05D7: 0x87,       #  HEBREW LETTER HET
+    0x05D8: 0x88,       #  HEBREW LETTER TET
+    0x05D9: 0x89,       #  HEBREW LETTER YOD
+    0x05DA: 0x8A,       #  HEBREW LETTER FINAL KAF
+    0x05DB: 0x8B,       #  HEBREW LETTER KAF
+    0x05DC: 0x8C,       #  HEBREW LETTER LAMED
+    0x05DD: 0x8D,       #  HEBREW LETTER FINAL MEM
+    0x05DE: 0x8E,       #  HEBREW LETTER MEM
+    0x05DF: 0x8F,       #  HEBREW LETTER FINAL NUN
+    0x05E0: 0x90,       #  HEBREW LETTER NUN
+    0x05E1: 0x91,       #  HEBREW LETTER SAMEKH
+    0x05E2: 0x92,       #  HEBREW LETTER AYIN
+    0x05E3: 0x93,       #  HEBREW LETTER FINAL PE
+    0x05E4: 0x94,       #  HEBREW LETTER PE
+    0x05E5: 0x95,       #  HEBREW LETTER FINAL TSADI
+    0x05E6: 0x96,       #  HEBREW LETTER TSADI
+    0x05E7: 0x97,       #  HEBREW LETTER QOF
+    0x05E8: 0x98,       #  HEBREW LETTER RESH
+    0x05E9: 0x99,       #  HEBREW LETTER SHIN
+    0x05EA: 0x9A,       #  HEBREW LETTER TAV
+    0x2017: 0xF2,       #  DOUBLE LOW LINE
+    0x2500: 0xC4,       #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0xB3,       #  BOX DRAWINGS LIGHT VERTICAL
+    0x250C: 0xDA,       #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0xBF,       #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0xC0,       #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0xD9,       #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251C: 0xC3,       #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0xB4,       #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252C: 0xC2,       #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0xC1,       #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253C: 0xC5,       #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0xCD,       #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0xBA,       #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2554: 0xC9,       #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0xBB,       #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x255A: 0xC8,       #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255D: 0xBC,       #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x2560: 0xCC,       #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2563: 0xB9,       #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0xCB,       #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2569: 0xCA,       #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256C: 0xCE,       #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0xDF,       #  UPPER HALF BLOCK
+    0x2584: 0xDC,       #  LOWER HALF BLOCK
+    0x2588: 0xDB,       #  FULL BLOCK
+    0x2591: 0xB0,       #  LIGHT SHADE
+    0x2592: 0xB1,       #  MEDIUM SHADE
+    0x2593: 0xB2,       #  DARK SHADE
+    0x25A0: 0xFE,       #  BLACK SQUARE
 }
-

Modified: python/trunk/Lib/encodings/cp857.py
==============================================================================
--- python/trunk/Lib/encodings/cp857.py	(original)
+++ python/trunk/Lib/encodings/cp857.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,650 +32,650 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x00c7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x0131,	#  LATIN SMALL LETTER DOTLESS I
-    0x008e: 0x00c4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,	#  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,	#  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00f2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00fb,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x0130,	#  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0099: 0x00d6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x00d8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x015e,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x009f: 0x015f,	#  LATIN SMALL LETTER S WITH CEDILLA
-    0x00a0: 0x00e1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x011e,	#  LATIN CAPITAL LETTER G WITH BREVE
-    0x00a7: 0x011f,	#  LATIN SMALL LETTER G WITH BREVE
-    0x00a8: 0x00bf,	#  INVERTED QUESTION MARK
-    0x00a9: 0x00ae,	#  REGISTERED SIGN
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,	#  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,	#  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x00c1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00b6: 0x00c2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00b7: 0x00c0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00b8: 0x00a9,	#  COPYRIGHT SIGN
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x00a2,	#  CENT SIGN
-    0x00be: 0x00a5,	#  YEN SIGN
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x00e3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00c7: 0x00c3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x00a4,	#  CURRENCY SIGN
-    0x00d0: 0x00ba,	#  MASCULINE ORDINAL INDICATOR
-    0x00d1: 0x00aa,	#  FEMININE ORDINAL INDICATOR
-    0x00d2: 0x00ca,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00d3: 0x00cb,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00d4: 0x00c8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00d5: None,	#  UNDEFINED
-    0x00d6: 0x00cd,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d7: 0x00ce,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d8: 0x00cf,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x00a6,	#  BROKEN BAR
-    0x00de: 0x00cc,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x00d3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x00d4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00e3: 0x00d2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00e4: 0x00f5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00e5: 0x00d5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00e6: 0x00b5,	#  MICRO SIGN
-    0x00e7: None,	#  UNDEFINED
-    0x00e8: 0x00d7,	#  MULTIPLICATION SIGN
-    0x00e9: 0x00da,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00ea: 0x00db,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00eb: 0x00d9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00ed: 0x00ff,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x00ee: 0x00af,	#  MACRON
-    0x00ef: 0x00b4,	#  ACUTE ACCENT
-    0x00f0: 0x00ad,	#  SOFT HYPHEN
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: None,	#  UNDEFINED
-    0x00f3: 0x00be,	#  VULGAR FRACTION THREE QUARTERS
-    0x00f4: 0x00b6,	#  PILCROW SIGN
-    0x00f5: 0x00a7,	#  SECTION SIGN
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x00b8,	#  CEDILLA
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x00a8,	#  DIAERESIS
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x00b9,	#  SUPERSCRIPT ONE
-    0x00fc: 0x00b3,	#  SUPERSCRIPT THREE
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x008d: 0x0131,     #  LATIN SMALL LETTER DOTLESS I
+    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
+    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
+    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x0098: 0x0130,     #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x009e: 0x015e,     #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x009f: 0x015f,     #  LATIN SMALL LETTER S WITH CEDILLA
+    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00a6: 0x011e,     #  LATIN CAPITAL LETTER G WITH BREVE
+    0x00a7: 0x011f,     #  LATIN SMALL LETTER G WITH BREVE
+    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
+    0x00a9: 0x00ae,     #  REGISTERED SIGN
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
+    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00b6: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00b7: 0x00c0,     #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00b8: 0x00a9,     #  COPYRIGHT SIGN
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x00a2,     #  CENT SIGN
+    0x00be: 0x00a5,     #  YEN SIGN
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x00e3,     #  LATIN SMALL LETTER A WITH TILDE
+    0x00c7: 0x00c3,     #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x00a4,     #  CURRENCY SIGN
+    0x00d0: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
+    0x00d1: 0x00aa,     #  FEMININE ORDINAL INDICATOR
+    0x00d2: 0x00ca,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00d3: 0x00cb,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00d4: 0x00c8,     #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00d5: None,       #  UNDEFINED
+    0x00d6: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00d7: 0x00ce,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00d8: 0x00cf,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x00a6,     #  BROKEN BAR
+    0x00de: 0x00cc,     #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
+    0x00e2: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00e3: 0x00d2,     #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00e4: 0x00f5,     #  LATIN SMALL LETTER O WITH TILDE
+    0x00e5: 0x00d5,     #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00e6: 0x00b5,     #  MICRO SIGN
+    0x00e7: None,       #  UNDEFINED
+    0x00e8: 0x00d7,     #  MULTIPLICATION SIGN
+    0x00e9: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00ea: 0x00db,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00eb: 0x00d9,     #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00ed: 0x00ff,     #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x00ee: 0x00af,     #  MACRON
+    0x00ef: 0x00b4,     #  ACUTE ACCENT
+    0x00f0: 0x00ad,     #  SOFT HYPHEN
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: None,       #  UNDEFINED
+    0x00f3: 0x00be,     #  VULGAR FRACTION THREE QUARTERS
+    0x00f4: 0x00b6,     #  PILCROW SIGN
+    0x00f5: 0x00a7,     #  SECTION SIGN
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x00b8,     #  CEDILLA
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x00a8,     #  DIAERESIS
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x00b9,     #  SUPERSCRIPT ONE
+    0x00fc: 0x00b3,     #  SUPERSCRIPT THREE
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\xc7'	#  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'	#  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'	#  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'	#  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'	#  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'	#  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'	#  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'	#  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'	#  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u0131'	#  0x008d -> LATIN SMALL LETTER DOTLESS I
-    u'\xc4'	#  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'	#  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'	#  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'	#  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'	#  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'	#  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xfb'	#  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'	#  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\u0130'	#  0x0098 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\xd6'	#  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'	#  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\xd8'	#  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u015e'	#  0x009e -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u015f'	#  0x009f -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xe1'	#  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'	#  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'	#  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'	#  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'	#  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\u011e'	#  0x00a6 -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u011f'	#  0x00a7 -> LATIN SMALL LETTER G WITH BREVE
-    u'\xbf'	#  0x00a8 -> INVERTED QUESTION MARK
-    u'\xae'	#  0x00a9 -> REGISTERED SIGN
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'	#  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\xc1'	#  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc0'	#  0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xa9'	#  0x00b8 -> COPYRIGHT SIGN
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\xa2'	#  0x00bd -> CENT SIGN
-    u'\xa5'	#  0x00be -> YEN SIGN
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\xe3'	#  0x00c6 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xc3'	#  0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'	#  0x00cf -> CURRENCY SIGN
-    u'\xba'	#  0x00d0 -> MASCULINE ORDINAL INDICATOR
-    u'\xaa'	#  0x00d1 -> FEMININE ORDINAL INDICATOR
-    u'\xca'	#  0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\ufffe'	#  0x00d5 -> UNDEFINED
-    u'\xcd'	#  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\xa6'	#  0x00dd -> BROKEN BAR
-    u'\xcc'	#  0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\xd3'	#  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\xd4'	#  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd2'	#  0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xf5'	#  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xd5'	#  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xb5'	#  0x00e6 -> MICRO SIGN
-    u'\ufffe'	#  0x00e7 -> UNDEFINED
-    u'\xd7'	#  0x00e8 -> MULTIPLICATION SIGN
-    u'\xda'	#  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'	#  0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xec'	#  0x00ec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xff'	#  0x00ed -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xaf'	#  0x00ee -> MACRON
-    u'\xb4'	#  0x00ef -> ACUTE ACCENT
-    u'\xad'	#  0x00f0 -> SOFT HYPHEN
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\ufffe'	#  0x00f2 -> UNDEFINED
-    u'\xbe'	#  0x00f3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'	#  0x00f4 -> PILCROW SIGN
-    u'\xa7'	#  0x00f5 -> SECTION SIGN
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\xb8'	#  0x00f7 -> CEDILLA
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\xa8'	#  0x00f9 -> DIAERESIS
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\xb9'	#  0x00fb -> SUPERSCRIPT ONE
-    u'\xb3'	#  0x00fc -> SUPERSCRIPT THREE
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\u0131'   #  0x008d -> LATIN SMALL LETTER DOTLESS I
+    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
+    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
+    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\u0130'   #  0x0098 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u015e'   #  0x009e -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\u015f'   #  0x009f -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\u011e'   #  0x00a6 -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\u011f'   #  0x00a7 -> LATIN SMALL LETTER G WITH BREVE
+    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
+    u'\xae'     #  0x00a9 -> REGISTERED SIGN
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
+    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\xc1'     #  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc0'     #  0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xa9'     #  0x00b8 -> COPYRIGHT SIGN
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\xa2'     #  0x00bd -> CENT SIGN
+    u'\xa5'     #  0x00be -> YEN SIGN
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\xe3'     #  0x00c6 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xc3'     #  0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa4'     #  0x00cf -> CURRENCY SIGN
+    u'\xba'     #  0x00d0 -> MASCULINE ORDINAL INDICATOR
+    u'\xaa'     #  0x00d1 -> FEMININE ORDINAL INDICATOR
+    u'\xca'     #  0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\ufffe'   #  0x00d5 -> UNDEFINED
+    u'\xcd'     #  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\xa6'     #  0x00dd -> BROKEN BAR
+    u'\xcc'     #  0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\xd3'     #  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
+    u'\xd4'     #  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd2'     #  0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xf5'     #  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xd5'     #  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xb5'     #  0x00e6 -> MICRO SIGN
+    u'\ufffe'   #  0x00e7 -> UNDEFINED
+    u'\xd7'     #  0x00e8 -> MULTIPLICATION SIGN
+    u'\xda'     #  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'     #  0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xec'     #  0x00ec -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xff'     #  0x00ed -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\xaf'     #  0x00ee -> MACRON
+    u'\xb4'     #  0x00ef -> ACUTE ACCENT
+    u'\xad'     #  0x00f0 -> SOFT HYPHEN
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\ufffe'   #  0x00f2 -> UNDEFINED
+    u'\xbe'     #  0x00f3 -> VULGAR FRACTION THREE QUARTERS
+    u'\xb6'     #  0x00f4 -> PILCROW SIGN
+    u'\xa7'     #  0x00f5 -> SECTION SIGN
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\xb8'     #  0x00f7 -> CEDILLA
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\xa8'     #  0x00f9 -> DIAERESIS
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\xb9'     #  0x00fb -> SUPERSCRIPT ONE
+    u'\xb3'     #  0x00fc -> SUPERSCRIPT THREE
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a1: 0x00ad,	#  INVERTED EXCLAMATION MARK
-    0x00a2: 0x00bd,	#  CENT SIGN
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00a4: 0x00cf,	#  CURRENCY SIGN
-    0x00a5: 0x00be,	#  YEN SIGN
-    0x00a6: 0x00dd,	#  BROKEN BAR
-    0x00a7: 0x00f5,	#  SECTION SIGN
-    0x00a8: 0x00f9,	#  DIAERESIS
-    0x00a9: 0x00b8,	#  COPYRIGHT SIGN
-    0x00aa: 0x00d1,	#  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00ad: 0x00f0,	#  SOFT HYPHEN
-    0x00ae: 0x00a9,	#  REGISTERED SIGN
-    0x00af: 0x00ee,	#  MACRON
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b3: 0x00fc,	#  SUPERSCRIPT THREE
-    0x00b4: 0x00ef,	#  ACUTE ACCENT
-    0x00b5: 0x00e6,	#  MICRO SIGN
-    0x00b6: 0x00f4,	#  PILCROW SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00b8: 0x00f7,	#  CEDILLA
-    0x00b9: 0x00fb,	#  SUPERSCRIPT ONE
-    0x00ba: 0x00d0,	#  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,	#  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x00be: 0x00f3,	#  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0x00a8,	#  INVERTED QUESTION MARK
-    0x00c0: 0x00b7,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x00b5,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x00b6,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x00c7,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x008e,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,	#  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x00d4,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x0090,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x00d2,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x00d3,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0x00de,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x00d6,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x00d7,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x00d8,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0x00a5,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0x00e3,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0x00e0,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0x00e2,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0x00e5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x0099,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0x00e8,	#  MULTIPLICATION SIGN
-    0x00d8: 0x009d,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0x00eb,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0x00e9,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0x00ea,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x009a,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x00c6,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x0084,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,	#  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x00ec,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x00a4,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x00e4,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x0094,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00f8: 0x009b,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x0097,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0x00ed,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011e: 0x00a6,	#  LATIN CAPITAL LETTER G WITH BREVE
-    0x011f: 0x00a7,	#  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0x0098,	#  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0x008d,	#  LATIN SMALL LETTER DOTLESS I
-    0x015e: 0x009e,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0x009f,	#  LATIN SMALL LETTER S WITH CEDILLA
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
+    0x00a2: 0x00bd,     #  CENT SIGN
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00a4: 0x00cf,     #  CURRENCY SIGN
+    0x00a5: 0x00be,     #  YEN SIGN
+    0x00a6: 0x00dd,     #  BROKEN BAR
+    0x00a7: 0x00f5,     #  SECTION SIGN
+    0x00a8: 0x00f9,     #  DIAERESIS
+    0x00a9: 0x00b8,     #  COPYRIGHT SIGN
+    0x00aa: 0x00d1,     #  FEMININE ORDINAL INDICATOR
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00ad: 0x00f0,     #  SOFT HYPHEN
+    0x00ae: 0x00a9,     #  REGISTERED SIGN
+    0x00af: 0x00ee,     #  MACRON
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b3: 0x00fc,     #  SUPERSCRIPT THREE
+    0x00b4: 0x00ef,     #  ACUTE ACCENT
+    0x00b5: 0x00e6,     #  MICRO SIGN
+    0x00b6: 0x00f4,     #  PILCROW SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00b8: 0x00f7,     #  CEDILLA
+    0x00b9: 0x00fb,     #  SUPERSCRIPT ONE
+    0x00ba: 0x00d0,     #  MASCULINE ORDINAL INDICATOR
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x00be: 0x00f3,     #  VULGAR FRACTION THREE QUARTERS
+    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
+    0x00c0: 0x00b7,     #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00c1: 0x00b5,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00c2: 0x00b6,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00c3: 0x00c7,     #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
+    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00c8: 0x00d4,     #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00ca: 0x00d2,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00cb: 0x00d3,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00cc: 0x00de,     #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00cd: 0x00d6,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00ce: 0x00d7,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00cf: 0x00d8,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00d2: 0x00e3,     #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00d3: 0x00e0,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00d4: 0x00e2,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00d5: 0x00e5,     #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00d7: 0x00e8,     #  MULTIPLICATION SIGN
+    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00d9: 0x00eb,     #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00da: 0x00e9,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00db: 0x00ea,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
+    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00e3: 0x00c6,     #  LATIN SMALL LETTER A WITH TILDE
+    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
+    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ec: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00f5: 0x00e4,     #  LATIN SMALL LETTER O WITH TILDE
+    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
+    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00ff: 0x00ed,     #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x011e: 0x00a6,     #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011f: 0x00a7,     #  LATIN SMALL LETTER G WITH BREVE
+    0x0130: 0x0098,     #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0x008d,     #  LATIN SMALL LETTER DOTLESS I
+    0x015e: 0x009e,     #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015f: 0x009f,     #  LATIN SMALL LETTER S WITH CEDILLA
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp860.py
==============================================================================
--- python/trunk/Lib/encodings/cp860.py	(original)
+++ python/trunk/Lib/encodings/cp860.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x00c7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x0085: 0x00e0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00c1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x0087: 0x00e7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00ca,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x008a: 0x00e8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00cd,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x008c: 0x00d4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x008d: 0x00ec,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x008e: 0x00c3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x008f: 0x00c2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x0090: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00c0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x0092: 0x00c8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x0093: 0x00f4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x0095: 0x00f2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00da,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x0097: 0x00f9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00cc,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x0099: 0x00d5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x009a: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00a2,	#  CENT SIGN
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x00d9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x009e: 0x20a7,	#  PESETA SIGN
-    0x009f: 0x00d3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00a0: 0x00e1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,	#  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,	#  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,	#  INVERTED QUESTION MARK
-    0x00a9: 0x00d2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,	#  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,	#  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x258c,	#  LEFT HALF BLOCK
-    0x00de: 0x2590,	#  RIGHT HALF BLOCK
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x03b1,	#  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,	#  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,	#  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,	#  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,	#  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,	#  MICRO SIGN
-    0x00e7: 0x03c4,	#  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,	#  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,	#  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,	#  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,	#  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,	#  INFINITY
-    0x00ed: 0x03c6,	#  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,	#  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,	#  INTERSECTION
-    0x00f0: 0x2261,	#  IDENTICAL TO
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x2265,	#  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,	#  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,	#  TOP HALF INTEGRAL
-    0x00f5: 0x2321,	#  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x2248,	#  ALMOST EQUAL TO
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x2219,	#  BULLET OPERATOR
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x221a,	#  SQUARE ROOT
-    0x00fc: 0x207f,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x0084: 0x00e3,     #  LATIN SMALL LETTER A WITH TILDE
+    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x0086: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x0089: 0x00ca,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x008b: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x008c: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x008d: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
+    0x008e: 0x00c3,     #  LATIN CAPITAL LETTER A WITH TILDE
+    0x008f: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0091: 0x00c0,     #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x0092: 0x00c8,     #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x0094: 0x00f5,     #  LATIN SMALL LETTER O WITH TILDE
+    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x0096: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x0098: 0x00cc,     #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x0099: 0x00d5,     #  LATIN CAPITAL LETTER O WITH TILDE
+    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x009b: 0x00a2,     #  CENT SIGN
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x00d9,     #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x009e: 0x20a7,     #  PESETA SIGN
+    0x009f: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
+    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
+    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
+    0x00a9: 0x00d2,     #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
+    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x258c,     #  LEFT HALF BLOCK
+    0x00de: 0x2590,     #  RIGHT HALF BLOCK
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
+    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
+    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
+    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
+    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
+    0x00e6: 0x00b5,     #  MICRO SIGN
+    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
+    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
+    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
+    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
+    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
+    0x00ec: 0x221e,     #  INFINITY
+    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
+    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
+    0x00ef: 0x2229,     #  INTERSECTION
+    0x00f0: 0x2261,     #  IDENTICAL TO
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
+    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
+    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
+    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x2248,     #  ALMOST EQUAL TO
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x2219,     #  BULLET OPERATOR
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x221a,     #  SQUARE ROOT
+    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\xc7'	#  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'	#  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'	#  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'	#  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'	#  0x0084 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe0'	#  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xc1'	#  0x0086 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xe7'	#  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'	#  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xca'	#  0x0089 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xe8'	#  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xcd'	#  0x008b -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xd4'	#  0x008c -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xec'	#  0x008d -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xc3'	#  0x008e -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc2'	#  0x008f -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc9'	#  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xc0'	#  0x0091 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc8'	#  0x0092 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xf4'	#  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'	#  0x0094 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf2'	#  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xda'	#  0x0096 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xf9'	#  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xcc'	#  0x0098 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd5'	#  0x0099 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xdc'	#  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xa2'	#  0x009b -> CENT SIGN
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\xd9'	#  0x009d -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u20a7'	#  0x009e -> PESETA SIGN
-    u'\xd3'	#  0x009f -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xe1'	#  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'	#  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'	#  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'	#  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'	#  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'	#  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'	#  0x00a8 -> INVERTED QUESTION MARK
-    u'\xd2'	#  0x00a9 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'	#  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'	#  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'	#  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'	#  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'	#  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'	#  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'	#  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'	#  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'	#  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'	#  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'	#  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'	#  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'	#  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'	#  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'	#  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'	#  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'	#  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'	#  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'	#  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'	#  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'	#  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'	#  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'	#  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'	#  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'	#  0x00e6 -> MICRO SIGN
-    u'\u03c4'	#  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'	#  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'	#  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'	#  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'	#  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'	#  0x00ec -> INFINITY
-    u'\u03c6'	#  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'	#  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'	#  0x00ef -> INTERSECTION
-    u'\u2261'	#  0x00f0 -> IDENTICAL TO
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'	#  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'	#  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'	#  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'	#  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\u2248'	#  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\u2219'	#  0x00f9 -> BULLET OPERATOR
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\u221a'	#  0x00fb -> SQUARE ROOT
-    u'\u207f'	#  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'     #  0x0084 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xc1'     #  0x0086 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xca'     #  0x0089 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xcd'     #  0x008b -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xd4'     #  0x008c -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xec'     #  0x008d -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xc3'     #  0x008e -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc2'     #  0x008f -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xc0'     #  0x0091 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc8'     #  0x0092 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'     #  0x0094 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xda'     #  0x0096 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xcc'     #  0x0098 -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd5'     #  0x0099 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xa2'     #  0x009b -> CENT SIGN
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\xd9'     #  0x009d -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\u20a7'   #  0x009e -> PESETA SIGN
+    u'\xd3'     #  0x009f -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
+    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
+    u'\xd2'     #  0x00a9 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
+    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
+    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
+    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
+    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
+    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
+    u'\xb5'     #  0x00e6 -> MICRO SIGN
+    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
+    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
+    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
+    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
+    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
+    u'\u221e'   #  0x00ec -> INFINITY
+    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
+    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
+    u'\u2229'   #  0x00ef -> INTERSECTION
+    u'\u2261'   #  0x00f0 -> IDENTICAL TO
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
+    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
+    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
+    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\u221a'   #  0x00fb -> SQUARE ROOT
+    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a1: 0x00ad,	#  INVERTED EXCLAMATION MARK
-    0x00a2: 0x009b,	#  CENT SIGN
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00aa: 0x00a6,	#  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,	#  MICRO SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00ba: 0x00a7,	#  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,	#  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,	#  INVERTED QUESTION MARK
-    0x00c0: 0x0091,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x0086,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x008f,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x008e,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c7: 0x0080,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x0092,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x0090,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x0089,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cc: 0x0098,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x008b,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d1: 0x00a5,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0x00a9,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0x009f,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0x008c,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0x0099,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d9: 0x009d,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0x0096,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00dc: 0x009a,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x0084,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00e7: 0x0087,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00ec: 0x008d,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00f1: 0x00a4,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x0094,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00f9: 0x0097,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00fc: 0x0081,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0393: 0x00e2,	#  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,	#  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,	#  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,	#  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,	#  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,	#  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,	#  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,	#  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,	#  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,	#  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,	#  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,	#  GREEK SMALL LETTER PHI
-    0x207f: 0x00fc,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,	#  PESETA SIGN
-    0x2219: 0x00f9,	#  BULLET OPERATOR
-    0x221a: 0x00fb,	#  SQUARE ROOT
-    0x221e: 0x00ec,	#  INFINITY
-    0x2229: 0x00ef,	#  INTERSECTION
-    0x2248: 0x00f7,	#  ALMOST EQUAL TO
-    0x2261: 0x00f0,	#  IDENTICAL TO
-    0x2264: 0x00f3,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,	#  GREATER-THAN OR EQUAL TO
-    0x2320: 0x00f4,	#  TOP HALF INTEGRAL
-    0x2321: 0x00f5,	#  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x258c: 0x00dd,	#  LEFT HALF BLOCK
-    0x2590: 0x00de,	#  RIGHT HALF BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
+    0x00a2: 0x009b,     #  CENT SIGN
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b5: 0x00e6,     #  MICRO SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
+    0x00c0: 0x0091,     #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00c1: 0x0086,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00c2: 0x008f,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00c3: 0x008e,     #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00c8: 0x0092,     #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00ca: 0x0089,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00cc: 0x0098,     #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00cd: 0x008b,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00d2: 0x00a9,     #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00d3: 0x009f,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00d4: 0x008c,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00d5: 0x0099,     #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00d9: 0x009d,     #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00da: 0x0096,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
+    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00e3: 0x0084,     #  LATIN SMALL LETTER A WITH TILDE
+    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00ec: 0x008d,     #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00f5: 0x0094,     #  LATIN SMALL LETTER O WITH TILDE
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
+    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
+    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
+    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
+    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
+    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
+    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
+    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
+    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
+    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
+    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
+    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
+    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x20a7: 0x009e,     #  PESETA SIGN
+    0x2219: 0x00f9,     #  BULLET OPERATOR
+    0x221a: 0x00fb,     #  SQUARE ROOT
+    0x221e: 0x00ec,     #  INFINITY
+    0x2229: 0x00ef,     #  INTERSECTION
+    0x2248: 0x00f7,     #  ALMOST EQUAL TO
+    0x2261: 0x00f0,     #  IDENTICAL TO
+    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
+    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
+    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
+    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x258c: 0x00dd,     #  LEFT HALF BLOCK
+    0x2590: 0x00de,     #  RIGHT HALF BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp861.py
==============================================================================
--- python/trunk/Lib/encodings/cp861.py	(original)
+++ python/trunk/Lib/encodings/cp861.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x00c7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00d0,	#  LATIN CAPITAL LETTER ETH
-    0x008c: 0x00f0,	#  LATIN SMALL LETTER ETH
-    0x008d: 0x00de,	#  LATIN CAPITAL LETTER THORN
-    0x008e: 0x00c4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,	#  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,	#  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00fe,	#  LATIN SMALL LETTER THORN
-    0x0096: 0x00fb,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00dd,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x0098: 0x00fd,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x0099: 0x00d6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x00d8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x20a7,	#  PESETA SIGN
-    0x009f: 0x0192,	#  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00c1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00a5: 0x00cd,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00a6: 0x00d3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00a7: 0x00da,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00a8: 0x00bf,	#  INVERTED QUESTION MARK
-    0x00a9: 0x2310,	#  REVERSED NOT SIGN
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,	#  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,	#  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x258c,	#  LEFT HALF BLOCK
-    0x00de: 0x2590,	#  RIGHT HALF BLOCK
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x03b1,	#  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,	#  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,	#  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,	#  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,	#  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,	#  MICRO SIGN
-    0x00e7: 0x03c4,	#  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,	#  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,	#  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,	#  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,	#  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,	#  INFINITY
-    0x00ed: 0x03c6,	#  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,	#  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,	#  INTERSECTION
-    0x00f0: 0x2261,	#  IDENTICAL TO
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x2265,	#  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,	#  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,	#  TOP HALF INTEGRAL
-    0x00f5: 0x2321,	#  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x2248,	#  ALMOST EQUAL TO
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x2219,	#  BULLET OPERATOR
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x221a,	#  SQUARE ROOT
-    0x00fc: 0x207f,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x008b: 0x00d0,     #  LATIN CAPITAL LETTER ETH
+    0x008c: 0x00f0,     #  LATIN SMALL LETTER ETH
+    0x008d: 0x00de,     #  LATIN CAPITAL LETTER THORN
+    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
+    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
+    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x0095: 0x00fe,     #  LATIN SMALL LETTER THORN
+    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x0097: 0x00dd,     #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x0098: 0x00fd,     #  LATIN SMALL LETTER Y WITH ACUTE
+    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x009e: 0x20a7,     #  PESETA SIGN
+    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
+    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00a4: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00a5: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00a6: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00a7: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
+    0x00a9: 0x2310,     #  REVERSED NOT SIGN
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
+    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x258c,     #  LEFT HALF BLOCK
+    0x00de: 0x2590,     #  RIGHT HALF BLOCK
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
+    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
+    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
+    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
+    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
+    0x00e6: 0x00b5,     #  MICRO SIGN
+    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
+    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
+    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
+    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
+    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
+    0x00ec: 0x221e,     #  INFINITY
+    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
+    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
+    0x00ef: 0x2229,     #  INTERSECTION
+    0x00f0: 0x2261,     #  IDENTICAL TO
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
+    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
+    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
+    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x2248,     #  ALMOST EQUAL TO
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x2219,     #  BULLET OPERATOR
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x221a,     #  SQUARE ROOT
+    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\xc7'	#  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'	#  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'	#  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'	#  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'	#  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'	#  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'	#  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xd0'	#  0x008b -> LATIN CAPITAL LETTER ETH
-    u'\xf0'	#  0x008c -> LATIN SMALL LETTER ETH
-    u'\xde'	#  0x008d -> LATIN CAPITAL LETTER THORN
-    u'\xc4'	#  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'	#  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'	#  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'	#  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'	#  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xfe'	#  0x0095 -> LATIN SMALL LETTER THORN
-    u'\xfb'	#  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xdd'	#  0x0097 -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xfd'	#  0x0098 -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xd6'	#  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'	#  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\xd8'	#  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u20a7'	#  0x009e -> PESETA SIGN
-    u'\u0192'	#  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'	#  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'	#  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'	#  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xc1'	#  0x00a4 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcd'	#  0x00a5 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xd3'	#  0x00a6 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xda'	#  0x00a7 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xbf'	#  0x00a8 -> INVERTED QUESTION MARK
-    u'\u2310'	#  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'	#  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'	#  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'	#  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'	#  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'	#  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'	#  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'	#  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'	#  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'	#  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'	#  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'	#  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'	#  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'	#  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'	#  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'	#  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'	#  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'	#  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'	#  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'	#  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'	#  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'	#  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'	#  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'	#  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'	#  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'	#  0x00e6 -> MICRO SIGN
-    u'\u03c4'	#  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'	#  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'	#  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'	#  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'	#  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'	#  0x00ec -> INFINITY
-    u'\u03c6'	#  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'	#  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'	#  0x00ef -> INTERSECTION
-    u'\u2261'	#  0x00f0 -> IDENTICAL TO
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'	#  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'	#  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'	#  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'	#  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\u2248'	#  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\u2219'	#  0x00f9 -> BULLET OPERATOR
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\u221a'	#  0x00fb -> SQUARE ROOT
-    u'\u207f'	#  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xd0'     #  0x008b -> LATIN CAPITAL LETTER ETH
+    u'\xf0'     #  0x008c -> LATIN SMALL LETTER ETH
+    u'\xde'     #  0x008d -> LATIN CAPITAL LETTER THORN
+    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
+    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
+    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xfe'     #  0x0095 -> LATIN SMALL LETTER THORN
+    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xdd'     #  0x0097 -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xfd'     #  0x0098 -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u20a7'   #  0x009e -> PESETA SIGN
+    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
+    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xc1'     #  0x00a4 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xcd'     #  0x00a5 -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xd3'     #  0x00a6 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xda'     #  0x00a7 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
+    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
+    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
+    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
+    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
+    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
+    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
+    u'\xb5'     #  0x00e6 -> MICRO SIGN
+    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
+    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
+    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
+    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
+    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
+    u'\u221e'   #  0x00ec -> INFINITY
+    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
+    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
+    u'\u2229'   #  0x00ef -> INTERSECTION
+    u'\u2261'   #  0x00f0 -> IDENTICAL TO
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
+    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
+    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
+    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\u221a'   #  0x00fb -> SQUARE ROOT
+    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a1: 0x00ad,	#  INVERTED EXCLAMATION MARK
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,	#  MICRO SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,	#  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,	#  INVERTED QUESTION MARK
-    0x00c1: 0x00a4,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c4: 0x008e,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,	#  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0090,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00cd: 0x00a5,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d0: 0x008b,	#  LATIN CAPITAL LETTER ETH
-    0x00d3: 0x00a6,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d6: 0x0099,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0x009d,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00da: 0x00a7,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00dc: 0x009a,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0x0097,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0x008d,	#  LATIN CAPITAL LETTER THORN
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x0084,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,	#  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0x00a1,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00f0: 0x008c,	#  LATIN SMALL LETTER ETH
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x0094,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00f8: 0x009b,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00fa: 0x00a3,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x0098,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0x0095,	#  LATIN SMALL LETTER THORN
-    0x0192: 0x009f,	#  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,	#  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,	#  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,	#  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,	#  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,	#  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,	#  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,	#  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,	#  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,	#  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,	#  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,	#  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,	#  GREEK SMALL LETTER PHI
-    0x207f: 0x00fc,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,	#  PESETA SIGN
-    0x2219: 0x00f9,	#  BULLET OPERATOR
-    0x221a: 0x00fb,	#  SQUARE ROOT
-    0x221e: 0x00ec,	#  INFINITY
-    0x2229: 0x00ef,	#  INTERSECTION
-    0x2248: 0x00f7,	#  ALMOST EQUAL TO
-    0x2261: 0x00f0,	#  IDENTICAL TO
-    0x2264: 0x00f3,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,	#  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,	#  REVERSED NOT SIGN
-    0x2320: 0x00f4,	#  TOP HALF INTEGRAL
-    0x2321: 0x00f5,	#  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x258c: 0x00dd,	#  LEFT HALF BLOCK
-    0x2590: 0x00de,	#  RIGHT HALF BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b5: 0x00e6,     #  MICRO SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
+    0x00c1: 0x00a4,     #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
+    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00cd: 0x00a5,     #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00d0: 0x008b,     #  LATIN CAPITAL LETTER ETH
+    0x00d3: 0x00a6,     #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00da: 0x00a7,     #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00dd: 0x0097,     #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00de: 0x008d,     #  LATIN CAPITAL LETTER THORN
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
+    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
+    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00f0: 0x008c,     #  LATIN SMALL LETTER ETH
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
+    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00fd: 0x0098,     #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00fe: 0x0095,     #  LATIN SMALL LETTER THORN
+    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
+    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
+    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
+    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
+    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
+    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
+    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
+    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
+    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
+    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
+    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
+    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
+    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
+    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x20a7: 0x009e,     #  PESETA SIGN
+    0x2219: 0x00f9,     #  BULLET OPERATOR
+    0x221a: 0x00fb,     #  SQUARE ROOT
+    0x221e: 0x00ec,     #  INFINITY
+    0x2229: 0x00ef,     #  INTERSECTION
+    0x2248: 0x00f7,     #  ALMOST EQUAL TO
+    0x2261: 0x00f0,     #  IDENTICAL TO
+    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
+    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
+    0x2310: 0x00a9,     #  REVERSED NOT SIGN
+    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
+    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x258c: 0x00dd,     #  LEFT HALF BLOCK
+    0x2590: 0x00de,     #  RIGHT HALF BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp862.py
==============================================================================
--- python/trunk/Lib/encodings/cp862.py	(original)
+++ python/trunk/Lib/encodings/cp862.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x05d0,	#  HEBREW LETTER ALEF
-    0x0081: 0x05d1,	#  HEBREW LETTER BET
-    0x0082: 0x05d2,	#  HEBREW LETTER GIMEL
-    0x0083: 0x05d3,	#  HEBREW LETTER DALET
-    0x0084: 0x05d4,	#  HEBREW LETTER HE
-    0x0085: 0x05d5,	#  HEBREW LETTER VAV
-    0x0086: 0x05d6,	#  HEBREW LETTER ZAYIN
-    0x0087: 0x05d7,	#  HEBREW LETTER HET
-    0x0088: 0x05d8,	#  HEBREW LETTER TET
-    0x0089: 0x05d9,	#  HEBREW LETTER YOD
-    0x008a: 0x05da,	#  HEBREW LETTER FINAL KAF
-    0x008b: 0x05db,	#  HEBREW LETTER KAF
-    0x008c: 0x05dc,	#  HEBREW LETTER LAMED
-    0x008d: 0x05dd,	#  HEBREW LETTER FINAL MEM
-    0x008e: 0x05de,	#  HEBREW LETTER MEM
-    0x008f: 0x05df,	#  HEBREW LETTER FINAL NUN
-    0x0090: 0x05e0,	#  HEBREW LETTER NUN
-    0x0091: 0x05e1,	#  HEBREW LETTER SAMEKH
-    0x0092: 0x05e2,	#  HEBREW LETTER AYIN
-    0x0093: 0x05e3,	#  HEBREW LETTER FINAL PE
-    0x0094: 0x05e4,	#  HEBREW LETTER PE
-    0x0095: 0x05e5,	#  HEBREW LETTER FINAL TSADI
-    0x0096: 0x05e6,	#  HEBREW LETTER TSADI
-    0x0097: 0x05e7,	#  HEBREW LETTER QOF
-    0x0098: 0x05e8,	#  HEBREW LETTER RESH
-    0x0099: 0x05e9,	#  HEBREW LETTER SHIN
-    0x009a: 0x05ea,	#  HEBREW LETTER TAV
-    0x009b: 0x00a2,	#  CENT SIGN
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x00a5,	#  YEN SIGN
-    0x009e: 0x20a7,	#  PESETA SIGN
-    0x009f: 0x0192,	#  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,	#  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,	#  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,	#  INVERTED QUESTION MARK
-    0x00a9: 0x2310,	#  REVERSED NOT SIGN
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,	#  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,	#  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x258c,	#  LEFT HALF BLOCK
-    0x00de: 0x2590,	#  RIGHT HALF BLOCK
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x03b1,	#  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e2: 0x0393,	#  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,	#  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,	#  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,	#  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,	#  MICRO SIGN
-    0x00e7: 0x03c4,	#  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,	#  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,	#  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,	#  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,	#  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,	#  INFINITY
-    0x00ed: 0x03c6,	#  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,	#  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,	#  INTERSECTION
-    0x00f0: 0x2261,	#  IDENTICAL TO
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x2265,	#  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,	#  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,	#  TOP HALF INTEGRAL
-    0x00f5: 0x2321,	#  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x2248,	#  ALMOST EQUAL TO
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x2219,	#  BULLET OPERATOR
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x221a,	#  SQUARE ROOT
-    0x00fc: 0x207f,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x05d0,     #  HEBREW LETTER ALEF
+    0x0081: 0x05d1,     #  HEBREW LETTER BET
+    0x0082: 0x05d2,     #  HEBREW LETTER GIMEL
+    0x0083: 0x05d3,     #  HEBREW LETTER DALET
+    0x0084: 0x05d4,     #  HEBREW LETTER HE
+    0x0085: 0x05d5,     #  HEBREW LETTER VAV
+    0x0086: 0x05d6,     #  HEBREW LETTER ZAYIN
+    0x0087: 0x05d7,     #  HEBREW LETTER HET
+    0x0088: 0x05d8,     #  HEBREW LETTER TET
+    0x0089: 0x05d9,     #  HEBREW LETTER YOD
+    0x008a: 0x05da,     #  HEBREW LETTER FINAL KAF
+    0x008b: 0x05db,     #  HEBREW LETTER KAF
+    0x008c: 0x05dc,     #  HEBREW LETTER LAMED
+    0x008d: 0x05dd,     #  HEBREW LETTER FINAL MEM
+    0x008e: 0x05de,     #  HEBREW LETTER MEM
+    0x008f: 0x05df,     #  HEBREW LETTER FINAL NUN
+    0x0090: 0x05e0,     #  HEBREW LETTER NUN
+    0x0091: 0x05e1,     #  HEBREW LETTER SAMEKH
+    0x0092: 0x05e2,     #  HEBREW LETTER AYIN
+    0x0093: 0x05e3,     #  HEBREW LETTER FINAL PE
+    0x0094: 0x05e4,     #  HEBREW LETTER PE
+    0x0095: 0x05e5,     #  HEBREW LETTER FINAL TSADI
+    0x0096: 0x05e6,     #  HEBREW LETTER TSADI
+    0x0097: 0x05e7,     #  HEBREW LETTER QOF
+    0x0098: 0x05e8,     #  HEBREW LETTER RESH
+    0x0099: 0x05e9,     #  HEBREW LETTER SHIN
+    0x009a: 0x05ea,     #  HEBREW LETTER TAV
+    0x009b: 0x00a2,     #  CENT SIGN
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x00a5,     #  YEN SIGN
+    0x009e: 0x20a7,     #  PESETA SIGN
+    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
+    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
+    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
+    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
+    0x00a9: 0x2310,     #  REVERSED NOT SIGN
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
+    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x258c,     #  LEFT HALF BLOCK
+    0x00de: 0x2590,     #  RIGHT HALF BLOCK
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
+    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
+    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
+    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
+    0x00e6: 0x00b5,     #  MICRO SIGN
+    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
+    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
+    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
+    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
+    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
+    0x00ec: 0x221e,     #  INFINITY
+    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
+    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
+    0x00ef: 0x2229,     #  INTERSECTION
+    0x00f0: 0x2261,     #  IDENTICAL TO
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
+    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
+    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
+    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x2248,     #  ALMOST EQUAL TO
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x2219,     #  BULLET OPERATOR
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x221a,     #  SQUARE ROOT
+    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\u05d0'	#  0x0080 -> HEBREW LETTER ALEF
-    u'\u05d1'	#  0x0081 -> HEBREW LETTER BET
-    u'\u05d2'	#  0x0082 -> HEBREW LETTER GIMEL
-    u'\u05d3'	#  0x0083 -> HEBREW LETTER DALET
-    u'\u05d4'	#  0x0084 -> HEBREW LETTER HE
-    u'\u05d5'	#  0x0085 -> HEBREW LETTER VAV
-    u'\u05d6'	#  0x0086 -> HEBREW LETTER ZAYIN
-    u'\u05d7'	#  0x0087 -> HEBREW LETTER HET
-    u'\u05d8'	#  0x0088 -> HEBREW LETTER TET
-    u'\u05d9'	#  0x0089 -> HEBREW LETTER YOD
-    u'\u05da'	#  0x008a -> HEBREW LETTER FINAL KAF
-    u'\u05db'	#  0x008b -> HEBREW LETTER KAF
-    u'\u05dc'	#  0x008c -> HEBREW LETTER LAMED
-    u'\u05dd'	#  0x008d -> HEBREW LETTER FINAL MEM
-    u'\u05de'	#  0x008e -> HEBREW LETTER MEM
-    u'\u05df'	#  0x008f -> HEBREW LETTER FINAL NUN
-    u'\u05e0'	#  0x0090 -> HEBREW LETTER NUN
-    u'\u05e1'	#  0x0091 -> HEBREW LETTER SAMEKH
-    u'\u05e2'	#  0x0092 -> HEBREW LETTER AYIN
-    u'\u05e3'	#  0x0093 -> HEBREW LETTER FINAL PE
-    u'\u05e4'	#  0x0094 -> HEBREW LETTER PE
-    u'\u05e5'	#  0x0095 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'	#  0x0096 -> HEBREW LETTER TSADI
-    u'\u05e7'	#  0x0097 -> HEBREW LETTER QOF
-    u'\u05e8'	#  0x0098 -> HEBREW LETTER RESH
-    u'\u05e9'	#  0x0099 -> HEBREW LETTER SHIN
-    u'\u05ea'	#  0x009a -> HEBREW LETTER TAV
-    u'\xa2'	#  0x009b -> CENT SIGN
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\xa5'	#  0x009d -> YEN SIGN
-    u'\u20a7'	#  0x009e -> PESETA SIGN
-    u'\u0192'	#  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'	#  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'	#  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'	#  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'	#  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'	#  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'	#  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'	#  0x00a8 -> INVERTED QUESTION MARK
-    u'\u2310'	#  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'	#  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'	#  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'	#  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'	#  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'	#  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'	#  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'	#  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'	#  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'	#  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'	#  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'	#  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'	#  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'	#  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'	#  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'	#  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'	#  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'	#  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'	#  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'	#  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'	#  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'\u0393'	#  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'	#  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'	#  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'	#  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'	#  0x00e6 -> MICRO SIGN
-    u'\u03c4'	#  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'	#  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'	#  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'	#  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'	#  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'	#  0x00ec -> INFINITY
-    u'\u03c6'	#  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'	#  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'	#  0x00ef -> INTERSECTION
-    u'\u2261'	#  0x00f0 -> IDENTICAL TO
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'	#  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'	#  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'	#  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'	#  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\u2248'	#  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\u2219'	#  0x00f9 -> BULLET OPERATOR
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\u221a'	#  0x00fb -> SQUARE ROOT
-    u'\u207f'	#  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\u05d0'   #  0x0080 -> HEBREW LETTER ALEF
+    u'\u05d1'   #  0x0081 -> HEBREW LETTER BET
+    u'\u05d2'   #  0x0082 -> HEBREW LETTER GIMEL
+    u'\u05d3'   #  0x0083 -> HEBREW LETTER DALET
+    u'\u05d4'   #  0x0084 -> HEBREW LETTER HE
+    u'\u05d5'   #  0x0085 -> HEBREW LETTER VAV
+    u'\u05d6'   #  0x0086 -> HEBREW LETTER ZAYIN
+    u'\u05d7'   #  0x0087 -> HEBREW LETTER HET
+    u'\u05d8'   #  0x0088 -> HEBREW LETTER TET
+    u'\u05d9'   #  0x0089 -> HEBREW LETTER YOD
+    u'\u05da'   #  0x008a -> HEBREW LETTER FINAL KAF
+    u'\u05db'   #  0x008b -> HEBREW LETTER KAF
+    u'\u05dc'   #  0x008c -> HEBREW LETTER LAMED
+    u'\u05dd'   #  0x008d -> HEBREW LETTER FINAL MEM
+    u'\u05de'   #  0x008e -> HEBREW LETTER MEM
+    u'\u05df'   #  0x008f -> HEBREW LETTER FINAL NUN
+    u'\u05e0'   #  0x0090 -> HEBREW LETTER NUN
+    u'\u05e1'   #  0x0091 -> HEBREW LETTER SAMEKH
+    u'\u05e2'   #  0x0092 -> HEBREW LETTER AYIN
+    u'\u05e3'   #  0x0093 -> HEBREW LETTER FINAL PE
+    u'\u05e4'   #  0x0094 -> HEBREW LETTER PE
+    u'\u05e5'   #  0x0095 -> HEBREW LETTER FINAL TSADI
+    u'\u05e6'   #  0x0096 -> HEBREW LETTER TSADI
+    u'\u05e7'   #  0x0097 -> HEBREW LETTER QOF
+    u'\u05e8'   #  0x0098 -> HEBREW LETTER RESH
+    u'\u05e9'   #  0x0099 -> HEBREW LETTER SHIN
+    u'\u05ea'   #  0x009a -> HEBREW LETTER TAV
+    u'\xa2'     #  0x009b -> CENT SIGN
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\xa5'     #  0x009d -> YEN SIGN
+    u'\u20a7'   #  0x009e -> PESETA SIGN
+    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
+    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
+    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
+    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
+    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
+    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S (GERMAN)
+    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
+    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
+    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
+    u'\xb5'     #  0x00e6 -> MICRO SIGN
+    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
+    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
+    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
+    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
+    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
+    u'\u221e'   #  0x00ec -> INFINITY
+    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
+    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
+    u'\u2229'   #  0x00ef -> INTERSECTION
+    u'\u2261'   #  0x00f0 -> IDENTICAL TO
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
+    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
+    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
+    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\u221a'   #  0x00fb -> SQUARE ROOT
+    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a1: 0x00ad,	#  INVERTED EXCLAMATION MARK
-    0x00a2: 0x009b,	#  CENT SIGN
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00a5: 0x009d,	#  YEN SIGN
-    0x00aa: 0x00a6,	#  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,	#  MICRO SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00ba: 0x00a7,	#  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,	#  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,	#  INVERTED QUESTION MARK
-    0x00d1: 0x00a5,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e1: 0x00a0,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00ed: 0x00a1,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00f1: 0x00a4,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00fa: 0x00a3,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x0192: 0x009f,	#  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,	#  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,	#  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,	#  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,	#  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,	#  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,	#  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,	#  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,	#  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,	#  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,	#  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,	#  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,	#  GREEK SMALL LETTER PHI
-    0x05d0: 0x0080,	#  HEBREW LETTER ALEF
-    0x05d1: 0x0081,	#  HEBREW LETTER BET
-    0x05d2: 0x0082,	#  HEBREW LETTER GIMEL
-    0x05d3: 0x0083,	#  HEBREW LETTER DALET
-    0x05d4: 0x0084,	#  HEBREW LETTER HE
-    0x05d5: 0x0085,	#  HEBREW LETTER VAV
-    0x05d6: 0x0086,	#  HEBREW LETTER ZAYIN
-    0x05d7: 0x0087,	#  HEBREW LETTER HET
-    0x05d8: 0x0088,	#  HEBREW LETTER TET
-    0x05d9: 0x0089,	#  HEBREW LETTER YOD
-    0x05da: 0x008a,	#  HEBREW LETTER FINAL KAF
-    0x05db: 0x008b,	#  HEBREW LETTER KAF
-    0x05dc: 0x008c,	#  HEBREW LETTER LAMED
-    0x05dd: 0x008d,	#  HEBREW LETTER FINAL MEM
-    0x05de: 0x008e,	#  HEBREW LETTER MEM
-    0x05df: 0x008f,	#  HEBREW LETTER FINAL NUN
-    0x05e0: 0x0090,	#  HEBREW LETTER NUN
-    0x05e1: 0x0091,	#  HEBREW LETTER SAMEKH
-    0x05e2: 0x0092,	#  HEBREW LETTER AYIN
-    0x05e3: 0x0093,	#  HEBREW LETTER FINAL PE
-    0x05e4: 0x0094,	#  HEBREW LETTER PE
-    0x05e5: 0x0095,	#  HEBREW LETTER FINAL TSADI
-    0x05e6: 0x0096,	#  HEBREW LETTER TSADI
-    0x05e7: 0x0097,	#  HEBREW LETTER QOF
-    0x05e8: 0x0098,	#  HEBREW LETTER RESH
-    0x05e9: 0x0099,	#  HEBREW LETTER SHIN
-    0x05ea: 0x009a,	#  HEBREW LETTER TAV
-    0x207f: 0x00fc,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,	#  PESETA SIGN
-    0x2219: 0x00f9,	#  BULLET OPERATOR
-    0x221a: 0x00fb,	#  SQUARE ROOT
-    0x221e: 0x00ec,	#  INFINITY
-    0x2229: 0x00ef,	#  INTERSECTION
-    0x2248: 0x00f7,	#  ALMOST EQUAL TO
-    0x2261: 0x00f0,	#  IDENTICAL TO
-    0x2264: 0x00f3,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,	#  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,	#  REVERSED NOT SIGN
-    0x2320: 0x00f4,	#  TOP HALF INTEGRAL
-    0x2321: 0x00f5,	#  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x258c: 0x00dd,	#  LEFT HALF BLOCK
-    0x2590: 0x00de,	#  RIGHT HALF BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
+    0x00a2: 0x009b,     #  CENT SIGN
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00a5: 0x009d,     #  YEN SIGN
+    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b5: 0x00e6,     #  MICRO SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
+    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S (GERMAN)
+    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
+    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
+    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
+    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
+    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
+    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
+    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
+    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
+    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
+    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
+    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
+    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
+    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
+    0x05d0: 0x0080,     #  HEBREW LETTER ALEF
+    0x05d1: 0x0081,     #  HEBREW LETTER BET
+    0x05d2: 0x0082,     #  HEBREW LETTER GIMEL
+    0x05d3: 0x0083,     #  HEBREW LETTER DALET
+    0x05d4: 0x0084,     #  HEBREW LETTER HE
+    0x05d5: 0x0085,     #  HEBREW LETTER VAV
+    0x05d6: 0x0086,     #  HEBREW LETTER ZAYIN
+    0x05d7: 0x0087,     #  HEBREW LETTER HET
+    0x05d8: 0x0088,     #  HEBREW LETTER TET
+    0x05d9: 0x0089,     #  HEBREW LETTER YOD
+    0x05da: 0x008a,     #  HEBREW LETTER FINAL KAF
+    0x05db: 0x008b,     #  HEBREW LETTER KAF
+    0x05dc: 0x008c,     #  HEBREW LETTER LAMED
+    0x05dd: 0x008d,     #  HEBREW LETTER FINAL MEM
+    0x05de: 0x008e,     #  HEBREW LETTER MEM
+    0x05df: 0x008f,     #  HEBREW LETTER FINAL NUN
+    0x05e0: 0x0090,     #  HEBREW LETTER NUN
+    0x05e1: 0x0091,     #  HEBREW LETTER SAMEKH
+    0x05e2: 0x0092,     #  HEBREW LETTER AYIN
+    0x05e3: 0x0093,     #  HEBREW LETTER FINAL PE
+    0x05e4: 0x0094,     #  HEBREW LETTER PE
+    0x05e5: 0x0095,     #  HEBREW LETTER FINAL TSADI
+    0x05e6: 0x0096,     #  HEBREW LETTER TSADI
+    0x05e7: 0x0097,     #  HEBREW LETTER QOF
+    0x05e8: 0x0098,     #  HEBREW LETTER RESH
+    0x05e9: 0x0099,     #  HEBREW LETTER SHIN
+    0x05ea: 0x009a,     #  HEBREW LETTER TAV
+    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x20a7: 0x009e,     #  PESETA SIGN
+    0x2219: 0x00f9,     #  BULLET OPERATOR
+    0x221a: 0x00fb,     #  SQUARE ROOT
+    0x221e: 0x00ec,     #  INFINITY
+    0x2229: 0x00ef,     #  INTERSECTION
+    0x2248: 0x00f7,     #  ALMOST EQUAL TO
+    0x2261: 0x00f0,     #  IDENTICAL TO
+    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
+    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
+    0x2310: 0x00a9,     #  REVERSED NOT SIGN
+    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
+    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x258c: 0x00dd,     #  LEFT HALF BLOCK
+    0x2590: 0x00de,     #  RIGHT HALF BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp863.py
==============================================================================
--- python/trunk/Lib/encodings/cp863.py	(original)
+++ python/trunk/Lib/encodings/cp863.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x00c7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00c2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x0085: 0x00e0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00b6,	#  PILCROW SIGN
-    0x0087: 0x00e7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x2017,	#  DOUBLE LOW LINE
-    0x008e: 0x00c0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x008f: 0x00a7,	#  SECTION SIGN
-    0x0090: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00c8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x0092: 0x00ca,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x0093: 0x00f4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00cb,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x0095: 0x00cf,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x0096: 0x00fb,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00a4,	#  CURRENCY SIGN
-    0x0099: 0x00d4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x009a: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00a2,	#  CENT SIGN
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x00d9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x009e: 0x00db,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x009f: 0x0192,	#  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00a6,	#  BROKEN BAR
-    0x00a1: 0x00b4,	#  ACUTE ACCENT
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00a8,	#  DIAERESIS
-    0x00a5: 0x00b8,	#  CEDILLA
-    0x00a6: 0x00b3,	#  SUPERSCRIPT THREE
-    0x00a7: 0x00af,	#  MACRON
-    0x00a8: 0x00ce,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00a9: 0x2310,	#  REVERSED NOT SIGN
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,	#  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00be,	#  VULGAR FRACTION THREE QUARTERS
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x258c,	#  LEFT HALF BLOCK
-    0x00de: 0x2590,	#  RIGHT HALF BLOCK
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x03b1,	#  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,	#  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,	#  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,	#  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,	#  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,	#  MICRO SIGN
-    0x00e7: 0x03c4,	#  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,	#  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,	#  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,	#  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,	#  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,	#  INFINITY
-    0x00ed: 0x03c6,	#  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,	#  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,	#  INTERSECTION
-    0x00f0: 0x2261,	#  IDENTICAL TO
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x2265,	#  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,	#  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,	#  TOP HALF INTEGRAL
-    0x00f5: 0x2321,	#  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x2248,	#  ALMOST EQUAL TO
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x2219,	#  BULLET OPERATOR
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x221a,	#  SQUARE ROOT
-    0x00fc: 0x207f,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x0084: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x0086: 0x00b6,     #  PILCROW SIGN
+    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x008d: 0x2017,     #  DOUBLE LOW LINE
+    0x008e: 0x00c0,     #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x008f: 0x00a7,     #  SECTION SIGN
+    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0091: 0x00c8,     #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x0092: 0x00ca,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x0094: 0x00cb,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x0095: 0x00cf,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x0098: 0x00a4,     #  CURRENCY SIGN
+    0x0099: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x009b: 0x00a2,     #  CENT SIGN
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x00d9,     #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x009e: 0x00db,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
+    0x00a0: 0x00a6,     #  BROKEN BAR
+    0x00a1: 0x00b4,     #  ACUTE ACCENT
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00a4: 0x00a8,     #  DIAERESIS
+    0x00a5: 0x00b8,     #  CEDILLA
+    0x00a6: 0x00b3,     #  SUPERSCRIPT THREE
+    0x00a7: 0x00af,     #  MACRON
+    0x00a8: 0x00ce,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00a9: 0x2310,     #  REVERSED NOT SIGN
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
+    0x00ad: 0x00be,     #  VULGAR FRACTION THREE QUARTERS
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x258c,     #  LEFT HALF BLOCK
+    0x00de: 0x2590,     #  RIGHT HALF BLOCK
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
+    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
+    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
+    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
+    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
+    0x00e6: 0x00b5,     #  MICRO SIGN
+    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
+    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
+    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
+    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
+    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
+    0x00ec: 0x221e,     #  INFINITY
+    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
+    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
+    0x00ef: 0x2229,     #  INTERSECTION
+    0x00f0: 0x2261,     #  IDENTICAL TO
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
+    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
+    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
+    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x2248,     #  ALMOST EQUAL TO
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x2219,     #  BULLET OPERATOR
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x221a,     #  SQUARE ROOT
+    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\xc7'	#  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'	#  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'	#  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'	#  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xc2'	#  0x0084 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xe0'	#  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xb6'	#  0x0086 -> PILCROW SIGN
-    u'\xe7'	#  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'	#  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'	#  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'	#  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u2017'	#  0x008d -> DOUBLE LOW LINE
-    u'\xc0'	#  0x008e -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xa7'	#  0x008f -> SECTION SIGN
-    u'\xc9'	#  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xc8'	#  0x0091 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xca'	#  0x0092 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xf4'	#  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xcb'	#  0x0094 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcf'	#  0x0095 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xfb'	#  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'	#  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xa4'	#  0x0098 -> CURRENCY SIGN
-    u'\xd4'	#  0x0099 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xdc'	#  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xa2'	#  0x009b -> CENT SIGN
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\xd9'	#  0x009d -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xdb'	#  0x009e -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\u0192'	#  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xa6'	#  0x00a0 -> BROKEN BAR
-    u'\xb4'	#  0x00a1 -> ACUTE ACCENT
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'	#  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xa8'	#  0x00a4 -> DIAERESIS
-    u'\xb8'	#  0x00a5 -> CEDILLA
-    u'\xb3'	#  0x00a6 -> SUPERSCRIPT THREE
-    u'\xaf'	#  0x00a7 -> MACRON
-    u'\xce'	#  0x00a8 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u2310'	#  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xbe'	#  0x00ad -> VULGAR FRACTION THREE QUARTERS
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'	#  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'	#  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'	#  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'	#  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'	#  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'	#  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'	#  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'	#  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'	#  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'	#  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'	#  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'	#  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'	#  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'	#  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'	#  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'	#  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'	#  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'	#  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'	#  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'	#  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'	#  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'	#  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'	#  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'	#  0x00e6 -> MICRO SIGN
-    u'\u03c4'	#  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'	#  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'	#  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'	#  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'	#  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'	#  0x00ec -> INFINITY
-    u'\u03c6'	#  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'	#  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'	#  0x00ef -> INTERSECTION
-    u'\u2261'	#  0x00f0 -> IDENTICAL TO
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'	#  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'	#  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'	#  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'	#  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\u2248'	#  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\u2219'	#  0x00f9 -> BULLET OPERATOR
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\u221a'	#  0x00fb -> SQUARE ROOT
-    u'\u207f'	#  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xc2'     #  0x0084 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xb6'     #  0x0086 -> PILCROW SIGN
+    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\u2017'   #  0x008d -> DOUBLE LOW LINE
+    u'\xc0'     #  0x008e -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xa7'     #  0x008f -> SECTION SIGN
+    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xc8'     #  0x0091 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xca'     #  0x0092 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xcb'     #  0x0094 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcf'     #  0x0095 -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xa4'     #  0x0098 -> CURRENCY SIGN
+    u'\xd4'     #  0x0099 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xa2'     #  0x009b -> CENT SIGN
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\xd9'     #  0x009d -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xdb'     #  0x009e -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
+    u'\xa6'     #  0x00a0 -> BROKEN BAR
+    u'\xb4'     #  0x00a1 -> ACUTE ACCENT
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xa8'     #  0x00a4 -> DIAERESIS
+    u'\xb8'     #  0x00a5 -> CEDILLA
+    u'\xb3'     #  0x00a6 -> SUPERSCRIPT THREE
+    u'\xaf'     #  0x00a7 -> MACRON
+    u'\xce'     #  0x00a8 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
+    u'\xbe'     #  0x00ad -> VULGAR FRACTION THREE QUARTERS
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
+    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
+    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
+    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
+    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
+    u'\xb5'     #  0x00e6 -> MICRO SIGN
+    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
+    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
+    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
+    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
+    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
+    u'\u221e'   #  0x00ec -> INFINITY
+    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
+    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
+    u'\u2229'   #  0x00ef -> INTERSECTION
+    u'\u2261'   #  0x00f0 -> IDENTICAL TO
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
+    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
+    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
+    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\u221a'   #  0x00fb -> SQUARE ROOT
+    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a2: 0x009b,	#  CENT SIGN
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00a4: 0x0098,	#  CURRENCY SIGN
-    0x00a6: 0x00a0,	#  BROKEN BAR
-    0x00a7: 0x008f,	#  SECTION SIGN
-    0x00a8: 0x00a4,	#  DIAERESIS
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00af: 0x00a7,	#  MACRON
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b3: 0x00a6,	#  SUPERSCRIPT THREE
-    0x00b4: 0x00a1,	#  ACUTE ACCENT
-    0x00b5: 0x00e6,	#  MICRO SIGN
-    0x00b6: 0x0086,	#  PILCROW SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00b8: 0x00a5,	#  CEDILLA
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,	#  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x00be: 0x00ad,	#  VULGAR FRACTION THREE QUARTERS
-    0x00c0: 0x008e,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c2: 0x0084,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c7: 0x0080,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x0091,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x0090,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x0092,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x0094,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00ce: 0x00a8,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x0095,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d4: 0x0099,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d9: 0x009d,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00db: 0x009e,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x009a,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00e2: 0x0083,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e7: 0x0087,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ee: 0x008c,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00f9: 0x0097,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0192: 0x009f,	#  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,	#  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,	#  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,	#  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,	#  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,	#  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,	#  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,	#  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,	#  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,	#  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,	#  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,	#  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,	#  GREEK SMALL LETTER PHI
-    0x2017: 0x008d,	#  DOUBLE LOW LINE
-    0x207f: 0x00fc,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x2219: 0x00f9,	#  BULLET OPERATOR
-    0x221a: 0x00fb,	#  SQUARE ROOT
-    0x221e: 0x00ec,	#  INFINITY
-    0x2229: 0x00ef,	#  INTERSECTION
-    0x2248: 0x00f7,	#  ALMOST EQUAL TO
-    0x2261: 0x00f0,	#  IDENTICAL TO
-    0x2264: 0x00f3,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,	#  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,	#  REVERSED NOT SIGN
-    0x2320: 0x00f4,	#  TOP HALF INTEGRAL
-    0x2321: 0x00f5,	#  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x258c: 0x00dd,	#  LEFT HALF BLOCK
-    0x2590: 0x00de,	#  RIGHT HALF BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a2: 0x009b,     #  CENT SIGN
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00a4: 0x0098,     #  CURRENCY SIGN
+    0x00a6: 0x00a0,     #  BROKEN BAR
+    0x00a7: 0x008f,     #  SECTION SIGN
+    0x00a8: 0x00a4,     #  DIAERESIS
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00af: 0x00a7,     #  MACRON
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b3: 0x00a6,     #  SUPERSCRIPT THREE
+    0x00b4: 0x00a1,     #  ACUTE ACCENT
+    0x00b5: 0x00e6,     #  MICRO SIGN
+    0x00b6: 0x0086,     #  PILCROW SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00b8: 0x00a5,     #  CEDILLA
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x00be: 0x00ad,     #  VULGAR FRACTION THREE QUARTERS
+    0x00c0: 0x008e,     #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00c2: 0x0084,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00c8: 0x0091,     #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00ca: 0x0092,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00cb: 0x0094,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00ce: 0x00a8,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00cf: 0x0095,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00d4: 0x0099,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00d9: 0x009d,     #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00db: 0x009e,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
+    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
+    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
+    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
+    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
+    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
+    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
+    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
+    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
+    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
+    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
+    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
+    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
+    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
+    0x2017: 0x008d,     #  DOUBLE LOW LINE
+    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x2219: 0x00f9,     #  BULLET OPERATOR
+    0x221a: 0x00fb,     #  SQUARE ROOT
+    0x221e: 0x00ec,     #  INFINITY
+    0x2229: 0x00ef,     #  INTERSECTION
+    0x2248: 0x00f7,     #  ALMOST EQUAL TO
+    0x2261: 0x00f0,     #  IDENTICAL TO
+    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
+    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
+    0x2310: 0x00a9,     #  REVERSED NOT SIGN
+    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
+    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x258c: 0x00dd,     #  LEFT HALF BLOCK
+    0x2590: 0x00de,     #  RIGHT HALF BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp864.py
==============================================================================
--- python/trunk/Lib/encodings/cp864.py	(original)
+++ python/trunk/Lib/encodings/cp864.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,646 +32,646 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0025: 0x066a,	#  ARABIC PERCENT SIGN
-    0x0080: 0x00b0,	#  DEGREE SIGN
-    0x0081: 0x00b7,	#  MIDDLE DOT
-    0x0082: 0x2219,	#  BULLET OPERATOR
-    0x0083: 0x221a,	#  SQUARE ROOT
-    0x0084: 0x2592,	#  MEDIUM SHADE
-    0x0085: 0x2500,	#  FORMS LIGHT HORIZONTAL
-    0x0086: 0x2502,	#  FORMS LIGHT VERTICAL
-    0x0087: 0x253c,	#  FORMS LIGHT VERTICAL AND HORIZONTAL
-    0x0088: 0x2524,	#  FORMS LIGHT VERTICAL AND LEFT
-    0x0089: 0x252c,	#  FORMS LIGHT DOWN AND HORIZONTAL
-    0x008a: 0x251c,	#  FORMS LIGHT VERTICAL AND RIGHT
-    0x008b: 0x2534,	#  FORMS LIGHT UP AND HORIZONTAL
-    0x008c: 0x2510,	#  FORMS LIGHT DOWN AND LEFT
-    0x008d: 0x250c,	#  FORMS LIGHT DOWN AND RIGHT
-    0x008e: 0x2514,	#  FORMS LIGHT UP AND RIGHT
-    0x008f: 0x2518,	#  FORMS LIGHT UP AND LEFT
-    0x0090: 0x03b2,	#  GREEK SMALL BETA
-    0x0091: 0x221e,	#  INFINITY
-    0x0092: 0x03c6,	#  GREEK SMALL PHI
-    0x0093: 0x00b1,	#  PLUS-OR-MINUS SIGN
-    0x0094: 0x00bd,	#  FRACTION 1/2
-    0x0095: 0x00bc,	#  FRACTION 1/4
-    0x0096: 0x2248,	#  ALMOST EQUAL TO
-    0x0097: 0x00ab,	#  LEFT POINTING GUILLEMET
-    0x0098: 0x00bb,	#  RIGHT POINTING GUILLEMET
-    0x0099: 0xfef7,	#  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-    0x009a: 0xfef8,	#  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-    0x009b: None,	#  UNDEFINED
-    0x009c: None,	#  UNDEFINED
-    0x009d: 0xfefb,	#  ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-    0x009e: 0xfefc,	#  ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-    0x009f: None,	#  UNDEFINED
-    0x00a1: 0x00ad,	#  SOFT HYPHEN
-    0x00a2: 0xfe82,	#  ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-    0x00a5: 0xfe84,	#  ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-    0x00a6: None,	#  UNDEFINED
-    0x00a7: None,	#  UNDEFINED
-    0x00a8: 0xfe8e,	#  ARABIC LETTER ALEF FINAL FORM
-    0x00a9: 0xfe8f,	#  ARABIC LETTER BEH ISOLATED FORM
-    0x00aa: 0xfe95,	#  ARABIC LETTER TEH ISOLATED FORM
-    0x00ab: 0xfe99,	#  ARABIC LETTER THEH ISOLATED FORM
-    0x00ac: 0x060c,	#  ARABIC COMMA
-    0x00ad: 0xfe9d,	#  ARABIC LETTER JEEM ISOLATED FORM
-    0x00ae: 0xfea1,	#  ARABIC LETTER HAH ISOLATED FORM
-    0x00af: 0xfea5,	#  ARABIC LETTER KHAH ISOLATED FORM
-    0x00b0: 0x0660,	#  ARABIC-INDIC DIGIT ZERO
-    0x00b1: 0x0661,	#  ARABIC-INDIC DIGIT ONE
-    0x00b2: 0x0662,	#  ARABIC-INDIC DIGIT TWO
-    0x00b3: 0x0663,	#  ARABIC-INDIC DIGIT THREE
-    0x00b4: 0x0664,	#  ARABIC-INDIC DIGIT FOUR
-    0x00b5: 0x0665,	#  ARABIC-INDIC DIGIT FIVE
-    0x00b6: 0x0666,	#  ARABIC-INDIC DIGIT SIX
-    0x00b7: 0x0667,	#  ARABIC-INDIC DIGIT SEVEN
-    0x00b8: 0x0668,	#  ARABIC-INDIC DIGIT EIGHT
-    0x00b9: 0x0669,	#  ARABIC-INDIC DIGIT NINE
-    0x00ba: 0xfed1,	#  ARABIC LETTER FEH ISOLATED FORM
-    0x00bb: 0x061b,	#  ARABIC SEMICOLON
-    0x00bc: 0xfeb1,	#  ARABIC LETTER SEEN ISOLATED FORM
-    0x00bd: 0xfeb5,	#  ARABIC LETTER SHEEN ISOLATED FORM
-    0x00be: 0xfeb9,	#  ARABIC LETTER SAD ISOLATED FORM
-    0x00bf: 0x061f,	#  ARABIC QUESTION MARK
-    0x00c0: 0x00a2,	#  CENT SIGN
-    0x00c1: 0xfe80,	#  ARABIC LETTER HAMZA ISOLATED FORM
-    0x00c2: 0xfe81,	#  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    0x00c3: 0xfe83,	#  ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-    0x00c4: 0xfe85,	#  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    0x00c5: 0xfeca,	#  ARABIC LETTER AIN FINAL FORM
-    0x00c6: 0xfe8b,	#  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    0x00c7: 0xfe8d,	#  ARABIC LETTER ALEF ISOLATED FORM
-    0x00c8: 0xfe91,	#  ARABIC LETTER BEH INITIAL FORM
-    0x00c9: 0xfe93,	#  ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    0x00ca: 0xfe97,	#  ARABIC LETTER TEH INITIAL FORM
-    0x00cb: 0xfe9b,	#  ARABIC LETTER THEH INITIAL FORM
-    0x00cc: 0xfe9f,	#  ARABIC LETTER JEEM INITIAL FORM
-    0x00cd: 0xfea3,	#  ARABIC LETTER HAH INITIAL FORM
-    0x00ce: 0xfea7,	#  ARABIC LETTER KHAH INITIAL FORM
-    0x00cf: 0xfea9,	#  ARABIC LETTER DAL ISOLATED FORM
-    0x00d0: 0xfeab,	#  ARABIC LETTER THAL ISOLATED FORM
-    0x00d1: 0xfead,	#  ARABIC LETTER REH ISOLATED FORM
-    0x00d2: 0xfeaf,	#  ARABIC LETTER ZAIN ISOLATED FORM
-    0x00d3: 0xfeb3,	#  ARABIC LETTER SEEN INITIAL FORM
-    0x00d4: 0xfeb7,	#  ARABIC LETTER SHEEN INITIAL FORM
-    0x00d5: 0xfebb,	#  ARABIC LETTER SAD INITIAL FORM
-    0x00d6: 0xfebf,	#  ARABIC LETTER DAD INITIAL FORM
-    0x00d7: 0xfec1,	#  ARABIC LETTER TAH ISOLATED FORM
-    0x00d8: 0xfec5,	#  ARABIC LETTER ZAH ISOLATED FORM
-    0x00d9: 0xfecb,	#  ARABIC LETTER AIN INITIAL FORM
-    0x00da: 0xfecf,	#  ARABIC LETTER GHAIN INITIAL FORM
-    0x00db: 0x00a6,	#  BROKEN VERTICAL BAR
-    0x00dc: 0x00ac,	#  NOT SIGN
-    0x00dd: 0x00f7,	#  DIVISION SIGN
-    0x00de: 0x00d7,	#  MULTIPLICATION SIGN
-    0x00df: 0xfec9,	#  ARABIC LETTER AIN ISOLATED FORM
-    0x00e0: 0x0640,	#  ARABIC TATWEEL
-    0x00e1: 0xfed3,	#  ARABIC LETTER FEH INITIAL FORM
-    0x00e2: 0xfed7,	#  ARABIC LETTER QAF INITIAL FORM
-    0x00e3: 0xfedb,	#  ARABIC LETTER KAF INITIAL FORM
-    0x00e4: 0xfedf,	#  ARABIC LETTER LAM INITIAL FORM
-    0x00e5: 0xfee3,	#  ARABIC LETTER MEEM INITIAL FORM
-    0x00e6: 0xfee7,	#  ARABIC LETTER NOON INITIAL FORM
-    0x00e7: 0xfeeb,	#  ARABIC LETTER HEH INITIAL FORM
-    0x00e8: 0xfeed,	#  ARABIC LETTER WAW ISOLATED FORM
-    0x00e9: 0xfeef,	#  ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-    0x00ea: 0xfef3,	#  ARABIC LETTER YEH INITIAL FORM
-    0x00eb: 0xfebd,	#  ARABIC LETTER DAD ISOLATED FORM
-    0x00ec: 0xfecc,	#  ARABIC LETTER AIN MEDIAL FORM
-    0x00ed: 0xfece,	#  ARABIC LETTER GHAIN FINAL FORM
-    0x00ee: 0xfecd,	#  ARABIC LETTER GHAIN ISOLATED FORM
-    0x00ef: 0xfee1,	#  ARABIC LETTER MEEM ISOLATED FORM
-    0x00f0: 0xfe7d,	#  ARABIC SHADDA MEDIAL FORM
-    0x00f1: 0x0651,	#  ARABIC SHADDAH
-    0x00f2: 0xfee5,	#  ARABIC LETTER NOON ISOLATED FORM
-    0x00f3: 0xfee9,	#  ARABIC LETTER HEH ISOLATED FORM
-    0x00f4: 0xfeec,	#  ARABIC LETTER HEH MEDIAL FORM
-    0x00f5: 0xfef0,	#  ARABIC LETTER ALEF MAKSURA FINAL FORM
-    0x00f6: 0xfef2,	#  ARABIC LETTER YEH FINAL FORM
-    0x00f7: 0xfed0,	#  ARABIC LETTER GHAIN MEDIAL FORM
-    0x00f8: 0xfed5,	#  ARABIC LETTER QAF ISOLATED FORM
-    0x00f9: 0xfef5,	#  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-    0x00fa: 0xfef6,	#  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-    0x00fb: 0xfedd,	#  ARABIC LETTER LAM ISOLATED FORM
-    0x00fc: 0xfed9,	#  ARABIC LETTER KAF ISOLATED FORM
-    0x00fd: 0xfef1,	#  ARABIC LETTER YEH ISOLATED FORM
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: None,	#  UNDEFINED
+    0x0025: 0x066a,     #  ARABIC PERCENT SIGN
+    0x0080: 0x00b0,     #  DEGREE SIGN
+    0x0081: 0x00b7,     #  MIDDLE DOT
+    0x0082: 0x2219,     #  BULLET OPERATOR
+    0x0083: 0x221a,     #  SQUARE ROOT
+    0x0084: 0x2592,     #  MEDIUM SHADE
+    0x0085: 0x2500,     #  FORMS LIGHT HORIZONTAL
+    0x0086: 0x2502,     #  FORMS LIGHT VERTICAL
+    0x0087: 0x253c,     #  FORMS LIGHT VERTICAL AND HORIZONTAL
+    0x0088: 0x2524,     #  FORMS LIGHT VERTICAL AND LEFT
+    0x0089: 0x252c,     #  FORMS LIGHT DOWN AND HORIZONTAL
+    0x008a: 0x251c,     #  FORMS LIGHT VERTICAL AND RIGHT
+    0x008b: 0x2534,     #  FORMS LIGHT UP AND HORIZONTAL
+    0x008c: 0x2510,     #  FORMS LIGHT DOWN AND LEFT
+    0x008d: 0x250c,     #  FORMS LIGHT DOWN AND RIGHT
+    0x008e: 0x2514,     #  FORMS LIGHT UP AND RIGHT
+    0x008f: 0x2518,     #  FORMS LIGHT UP AND LEFT
+    0x0090: 0x03b2,     #  GREEK SMALL BETA
+    0x0091: 0x221e,     #  INFINITY
+    0x0092: 0x03c6,     #  GREEK SMALL PHI
+    0x0093: 0x00b1,     #  PLUS-OR-MINUS SIGN
+    0x0094: 0x00bd,     #  FRACTION 1/2
+    0x0095: 0x00bc,     #  FRACTION 1/4
+    0x0096: 0x2248,     #  ALMOST EQUAL TO
+    0x0097: 0x00ab,     #  LEFT POINTING GUILLEMET
+    0x0098: 0x00bb,     #  RIGHT POINTING GUILLEMET
+    0x0099: 0xfef7,     #  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+    0x009a: 0xfef8,     #  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+    0x009b: None,       #  UNDEFINED
+    0x009c: None,       #  UNDEFINED
+    0x009d: 0xfefb,     #  ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+    0x009e: 0xfefc,     #  ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+    0x009f: None,       #  UNDEFINED
+    0x00a1: 0x00ad,     #  SOFT HYPHEN
+    0x00a2: 0xfe82,     #  ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+    0x00a5: 0xfe84,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+    0x00a6: None,       #  UNDEFINED
+    0x00a7: None,       #  UNDEFINED
+    0x00a8: 0xfe8e,     #  ARABIC LETTER ALEF FINAL FORM
+    0x00a9: 0xfe8f,     #  ARABIC LETTER BEH ISOLATED FORM
+    0x00aa: 0xfe95,     #  ARABIC LETTER TEH ISOLATED FORM
+    0x00ab: 0xfe99,     #  ARABIC LETTER THEH ISOLATED FORM
+    0x00ac: 0x060c,     #  ARABIC COMMA
+    0x00ad: 0xfe9d,     #  ARABIC LETTER JEEM ISOLATED FORM
+    0x00ae: 0xfea1,     #  ARABIC LETTER HAH ISOLATED FORM
+    0x00af: 0xfea5,     #  ARABIC LETTER KHAH ISOLATED FORM
+    0x00b0: 0x0660,     #  ARABIC-INDIC DIGIT ZERO
+    0x00b1: 0x0661,     #  ARABIC-INDIC DIGIT ONE
+    0x00b2: 0x0662,     #  ARABIC-INDIC DIGIT TWO
+    0x00b3: 0x0663,     #  ARABIC-INDIC DIGIT THREE
+    0x00b4: 0x0664,     #  ARABIC-INDIC DIGIT FOUR
+    0x00b5: 0x0665,     #  ARABIC-INDIC DIGIT FIVE
+    0x00b6: 0x0666,     #  ARABIC-INDIC DIGIT SIX
+    0x00b7: 0x0667,     #  ARABIC-INDIC DIGIT SEVEN
+    0x00b8: 0x0668,     #  ARABIC-INDIC DIGIT EIGHT
+    0x00b9: 0x0669,     #  ARABIC-INDIC DIGIT NINE
+    0x00ba: 0xfed1,     #  ARABIC LETTER FEH ISOLATED FORM
+    0x00bb: 0x061b,     #  ARABIC SEMICOLON
+    0x00bc: 0xfeb1,     #  ARABIC LETTER SEEN ISOLATED FORM
+    0x00bd: 0xfeb5,     #  ARABIC LETTER SHEEN ISOLATED FORM
+    0x00be: 0xfeb9,     #  ARABIC LETTER SAD ISOLATED FORM
+    0x00bf: 0x061f,     #  ARABIC QUESTION MARK
+    0x00c0: 0x00a2,     #  CENT SIGN
+    0x00c1: 0xfe80,     #  ARABIC LETTER HAMZA ISOLATED FORM
+    0x00c2: 0xfe81,     #  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+    0x00c3: 0xfe83,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+    0x00c4: 0xfe85,     #  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+    0x00c5: 0xfeca,     #  ARABIC LETTER AIN FINAL FORM
+    0x00c6: 0xfe8b,     #  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+    0x00c7: 0xfe8d,     #  ARABIC LETTER ALEF ISOLATED FORM
+    0x00c8: 0xfe91,     #  ARABIC LETTER BEH INITIAL FORM
+    0x00c9: 0xfe93,     #  ARABIC LETTER TEH MARBUTA ISOLATED FORM
+    0x00ca: 0xfe97,     #  ARABIC LETTER TEH INITIAL FORM
+    0x00cb: 0xfe9b,     #  ARABIC LETTER THEH INITIAL FORM
+    0x00cc: 0xfe9f,     #  ARABIC LETTER JEEM INITIAL FORM
+    0x00cd: 0xfea3,     #  ARABIC LETTER HAH INITIAL FORM
+    0x00ce: 0xfea7,     #  ARABIC LETTER KHAH INITIAL FORM
+    0x00cf: 0xfea9,     #  ARABIC LETTER DAL ISOLATED FORM
+    0x00d0: 0xfeab,     #  ARABIC LETTER THAL ISOLATED FORM
+    0x00d1: 0xfead,     #  ARABIC LETTER REH ISOLATED FORM
+    0x00d2: 0xfeaf,     #  ARABIC LETTER ZAIN ISOLATED FORM
+    0x00d3: 0xfeb3,     #  ARABIC LETTER SEEN INITIAL FORM
+    0x00d4: 0xfeb7,     #  ARABIC LETTER SHEEN INITIAL FORM
+    0x00d5: 0xfebb,     #  ARABIC LETTER SAD INITIAL FORM
+    0x00d6: 0xfebf,     #  ARABIC LETTER DAD INITIAL FORM
+    0x00d7: 0xfec1,     #  ARABIC LETTER TAH ISOLATED FORM
+    0x00d8: 0xfec5,     #  ARABIC LETTER ZAH ISOLATED FORM
+    0x00d9: 0xfecb,     #  ARABIC LETTER AIN INITIAL FORM
+    0x00da: 0xfecf,     #  ARABIC LETTER GHAIN INITIAL FORM
+    0x00db: 0x00a6,     #  BROKEN VERTICAL BAR
+    0x00dc: 0x00ac,     #  NOT SIGN
+    0x00dd: 0x00f7,     #  DIVISION SIGN
+    0x00de: 0x00d7,     #  MULTIPLICATION SIGN
+    0x00df: 0xfec9,     #  ARABIC LETTER AIN ISOLATED FORM
+    0x00e0: 0x0640,     #  ARABIC TATWEEL
+    0x00e1: 0xfed3,     #  ARABIC LETTER FEH INITIAL FORM
+    0x00e2: 0xfed7,     #  ARABIC LETTER QAF INITIAL FORM
+    0x00e3: 0xfedb,     #  ARABIC LETTER KAF INITIAL FORM
+    0x00e4: 0xfedf,     #  ARABIC LETTER LAM INITIAL FORM
+    0x00e5: 0xfee3,     #  ARABIC LETTER MEEM INITIAL FORM
+    0x00e6: 0xfee7,     #  ARABIC LETTER NOON INITIAL FORM
+    0x00e7: 0xfeeb,     #  ARABIC LETTER HEH INITIAL FORM
+    0x00e8: 0xfeed,     #  ARABIC LETTER WAW ISOLATED FORM
+    0x00e9: 0xfeef,     #  ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+    0x00ea: 0xfef3,     #  ARABIC LETTER YEH INITIAL FORM
+    0x00eb: 0xfebd,     #  ARABIC LETTER DAD ISOLATED FORM
+    0x00ec: 0xfecc,     #  ARABIC LETTER AIN MEDIAL FORM
+    0x00ed: 0xfece,     #  ARABIC LETTER GHAIN FINAL FORM
+    0x00ee: 0xfecd,     #  ARABIC LETTER GHAIN ISOLATED FORM
+    0x00ef: 0xfee1,     #  ARABIC LETTER MEEM ISOLATED FORM
+    0x00f0: 0xfe7d,     #  ARABIC SHADDA MEDIAL FORM
+    0x00f1: 0x0651,     #  ARABIC SHADDAH
+    0x00f2: 0xfee5,     #  ARABIC LETTER NOON ISOLATED FORM
+    0x00f3: 0xfee9,     #  ARABIC LETTER HEH ISOLATED FORM
+    0x00f4: 0xfeec,     #  ARABIC LETTER HEH MEDIAL FORM
+    0x00f5: 0xfef0,     #  ARABIC LETTER ALEF MAKSURA FINAL FORM
+    0x00f6: 0xfef2,     #  ARABIC LETTER YEH FINAL FORM
+    0x00f7: 0xfed0,     #  ARABIC LETTER GHAIN MEDIAL FORM
+    0x00f8: 0xfed5,     #  ARABIC LETTER QAF ISOLATED FORM
+    0x00f9: 0xfef5,     #  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+    0x00fa: 0xfef6,     #  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+    0x00fb: 0xfedd,     #  ARABIC LETTER LAM ISOLATED FORM
+    0x00fc: 0xfed9,     #  ARABIC LETTER KAF ISOLATED FORM
+    0x00fd: 0xfef1,     #  ARABIC LETTER YEH ISOLATED FORM
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: None,       #  UNDEFINED
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'\u066a'	#  0x0025 -> ARABIC PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\xb0'	#  0x0080 -> DEGREE SIGN
-    u'\xb7'	#  0x0081 -> MIDDLE DOT
-    u'\u2219'	#  0x0082 -> BULLET OPERATOR
-    u'\u221a'	#  0x0083 -> SQUARE ROOT
-    u'\u2592'	#  0x0084 -> MEDIUM SHADE
-    u'\u2500'	#  0x0085 -> FORMS LIGHT HORIZONTAL
-    u'\u2502'	#  0x0086 -> FORMS LIGHT VERTICAL
-    u'\u253c'	#  0x0087 -> FORMS LIGHT VERTICAL AND HORIZONTAL
-    u'\u2524'	#  0x0088 -> FORMS LIGHT VERTICAL AND LEFT
-    u'\u252c'	#  0x0089 -> FORMS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x008a -> FORMS LIGHT VERTICAL AND RIGHT
-    u'\u2534'	#  0x008b -> FORMS LIGHT UP AND HORIZONTAL
-    u'\u2510'	#  0x008c -> FORMS LIGHT DOWN AND LEFT
-    u'\u250c'	#  0x008d -> FORMS LIGHT DOWN AND RIGHT
-    u'\u2514'	#  0x008e -> FORMS LIGHT UP AND RIGHT
-    u'\u2518'	#  0x008f -> FORMS LIGHT UP AND LEFT
-    u'\u03b2'	#  0x0090 -> GREEK SMALL BETA
-    u'\u221e'	#  0x0091 -> INFINITY
-    u'\u03c6'	#  0x0092 -> GREEK SMALL PHI
-    u'\xb1'	#  0x0093 -> PLUS-OR-MINUS SIGN
-    u'\xbd'	#  0x0094 -> FRACTION 1/2
-    u'\xbc'	#  0x0095 -> FRACTION 1/4
-    u'\u2248'	#  0x0096 -> ALMOST EQUAL TO
-    u'\xab'	#  0x0097 -> LEFT POINTING GUILLEMET
-    u'\xbb'	#  0x0098 -> RIGHT POINTING GUILLEMET
-    u'\ufef7'	#  0x0099 -> ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufef8'	#  0x009a -> ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-    u'\ufffe'	#  0x009b -> UNDEFINED
-    u'\ufffe'	#  0x009c -> UNDEFINED
-    u'\ufefb'	#  0x009d -> ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-    u'\ufefc'	#  0x009e -> ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-    u'\ufffe'	#  0x009f -> UNDEFINED
-    u'\xa0'	#  0x00a0 -> NON-BREAKING SPACE
-    u'\xad'	#  0x00a1 -> SOFT HYPHEN
-    u'\ufe82'	#  0x00a2 -> ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-    u'\xa3'	#  0x00a3 -> POUND SIGN
-    u'\xa4'	#  0x00a4 -> CURRENCY SIGN
-    u'\ufe84'	#  0x00a5 -> ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-    u'\ufffe'	#  0x00a6 -> UNDEFINED
-    u'\ufffe'	#  0x00a7 -> UNDEFINED
-    u'\ufe8e'	#  0x00a8 -> ARABIC LETTER ALEF FINAL FORM
-    u'\ufe8f'	#  0x00a9 -> ARABIC LETTER BEH ISOLATED FORM
-    u'\ufe95'	#  0x00aa -> ARABIC LETTER TEH ISOLATED FORM
-    u'\ufe99'	#  0x00ab -> ARABIC LETTER THEH ISOLATED FORM
-    u'\u060c'	#  0x00ac -> ARABIC COMMA
-    u'\ufe9d'	#  0x00ad -> ARABIC LETTER JEEM ISOLATED FORM
-    u'\ufea1'	#  0x00ae -> ARABIC LETTER HAH ISOLATED FORM
-    u'\ufea5'	#  0x00af -> ARABIC LETTER KHAH ISOLATED FORM
-    u'\u0660'	#  0x00b0 -> ARABIC-INDIC DIGIT ZERO
-    u'\u0661'	#  0x00b1 -> ARABIC-INDIC DIGIT ONE
-    u'\u0662'	#  0x00b2 -> ARABIC-INDIC DIGIT TWO
-    u'\u0663'	#  0x00b3 -> ARABIC-INDIC DIGIT THREE
-    u'\u0664'	#  0x00b4 -> ARABIC-INDIC DIGIT FOUR
-    u'\u0665'	#  0x00b5 -> ARABIC-INDIC DIGIT FIVE
-    u'\u0666'	#  0x00b6 -> ARABIC-INDIC DIGIT SIX
-    u'\u0667'	#  0x00b7 -> ARABIC-INDIC DIGIT SEVEN
-    u'\u0668'	#  0x00b8 -> ARABIC-INDIC DIGIT EIGHT
-    u'\u0669'	#  0x00b9 -> ARABIC-INDIC DIGIT NINE
-    u'\ufed1'	#  0x00ba -> ARABIC LETTER FEH ISOLATED FORM
-    u'\u061b'	#  0x00bb -> ARABIC SEMICOLON
-    u'\ufeb1'	#  0x00bc -> ARABIC LETTER SEEN ISOLATED FORM
-    u'\ufeb5'	#  0x00bd -> ARABIC LETTER SHEEN ISOLATED FORM
-    u'\ufeb9'	#  0x00be -> ARABIC LETTER SAD ISOLATED FORM
-    u'\u061f'	#  0x00bf -> ARABIC QUESTION MARK
-    u'\xa2'	#  0x00c0 -> CENT SIGN
-    u'\ufe80'	#  0x00c1 -> ARABIC LETTER HAMZA ISOLATED FORM
-    u'\ufe81'	#  0x00c2 -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    u'\ufe83'	#  0x00c3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufe85'	#  0x00c4 -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufeca'	#  0x00c5 -> ARABIC LETTER AIN FINAL FORM
-    u'\ufe8b'	#  0x00c6 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    u'\ufe8d'	#  0x00c7 -> ARABIC LETTER ALEF ISOLATED FORM
-    u'\ufe91'	#  0x00c8 -> ARABIC LETTER BEH INITIAL FORM
-    u'\ufe93'	#  0x00c9 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    u'\ufe97'	#  0x00ca -> ARABIC LETTER TEH INITIAL FORM
-    u'\ufe9b'	#  0x00cb -> ARABIC LETTER THEH INITIAL FORM
-    u'\ufe9f'	#  0x00cc -> ARABIC LETTER JEEM INITIAL FORM
-    u'\ufea3'	#  0x00cd -> ARABIC LETTER HAH INITIAL FORM
-    u'\ufea7'	#  0x00ce -> ARABIC LETTER KHAH INITIAL FORM
-    u'\ufea9'	#  0x00cf -> ARABIC LETTER DAL ISOLATED FORM
-    u'\ufeab'	#  0x00d0 -> ARABIC LETTER THAL ISOLATED FORM
-    u'\ufead'	#  0x00d1 -> ARABIC LETTER REH ISOLATED FORM
-    u'\ufeaf'	#  0x00d2 -> ARABIC LETTER ZAIN ISOLATED FORM
-    u'\ufeb3'	#  0x00d3 -> ARABIC LETTER SEEN INITIAL FORM
-    u'\ufeb7'	#  0x00d4 -> ARABIC LETTER SHEEN INITIAL FORM
-    u'\ufebb'	#  0x00d5 -> ARABIC LETTER SAD INITIAL FORM
-    u'\ufebf'	#  0x00d6 -> ARABIC LETTER DAD INITIAL FORM
-    u'\ufec1'	#  0x00d7 -> ARABIC LETTER TAH ISOLATED FORM
-    u'\ufec5'	#  0x00d8 -> ARABIC LETTER ZAH ISOLATED FORM
-    u'\ufecb'	#  0x00d9 -> ARABIC LETTER AIN INITIAL FORM
-    u'\ufecf'	#  0x00da -> ARABIC LETTER GHAIN INITIAL FORM
-    u'\xa6'	#  0x00db -> BROKEN VERTICAL BAR
-    u'\xac'	#  0x00dc -> NOT SIGN
-    u'\xf7'	#  0x00dd -> DIVISION SIGN
-    u'\xd7'	#  0x00de -> MULTIPLICATION SIGN
-    u'\ufec9'	#  0x00df -> ARABIC LETTER AIN ISOLATED FORM
-    u'\u0640'	#  0x00e0 -> ARABIC TATWEEL
-    u'\ufed3'	#  0x00e1 -> ARABIC LETTER FEH INITIAL FORM
-    u'\ufed7'	#  0x00e2 -> ARABIC LETTER QAF INITIAL FORM
-    u'\ufedb'	#  0x00e3 -> ARABIC LETTER KAF INITIAL FORM
-    u'\ufedf'	#  0x00e4 -> ARABIC LETTER LAM INITIAL FORM
-    u'\ufee3'	#  0x00e5 -> ARABIC LETTER MEEM INITIAL FORM
-    u'\ufee7'	#  0x00e6 -> ARABIC LETTER NOON INITIAL FORM
-    u'\ufeeb'	#  0x00e7 -> ARABIC LETTER HEH INITIAL FORM
-    u'\ufeed'	#  0x00e8 -> ARABIC LETTER WAW ISOLATED FORM
-    u'\ufeef'	#  0x00e9 -> ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-    u'\ufef3'	#  0x00ea -> ARABIC LETTER YEH INITIAL FORM
-    u'\ufebd'	#  0x00eb -> ARABIC LETTER DAD ISOLATED FORM
-    u'\ufecc'	#  0x00ec -> ARABIC LETTER AIN MEDIAL FORM
-    u'\ufece'	#  0x00ed -> ARABIC LETTER GHAIN FINAL FORM
-    u'\ufecd'	#  0x00ee -> ARABIC LETTER GHAIN ISOLATED FORM
-    u'\ufee1'	#  0x00ef -> ARABIC LETTER MEEM ISOLATED FORM
-    u'\ufe7d'	#  0x00f0 -> ARABIC SHADDA MEDIAL FORM
-    u'\u0651'	#  0x00f1 -> ARABIC SHADDAH
-    u'\ufee5'	#  0x00f2 -> ARABIC LETTER NOON ISOLATED FORM
-    u'\ufee9'	#  0x00f3 -> ARABIC LETTER HEH ISOLATED FORM
-    u'\ufeec'	#  0x00f4 -> ARABIC LETTER HEH MEDIAL FORM
-    u'\ufef0'	#  0x00f5 -> ARABIC LETTER ALEF MAKSURA FINAL FORM
-    u'\ufef2'	#  0x00f6 -> ARABIC LETTER YEH FINAL FORM
-    u'\ufed0'	#  0x00f7 -> ARABIC LETTER GHAIN MEDIAL FORM
-    u'\ufed5'	#  0x00f8 -> ARABIC LETTER QAF ISOLATED FORM
-    u'\ufef5'	#  0x00f9 -> ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-    u'\ufef6'	#  0x00fa -> ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-    u'\ufedd'	#  0x00fb -> ARABIC LETTER LAM ISOLATED FORM
-    u'\ufed9'	#  0x00fc -> ARABIC LETTER KAF ISOLATED FORM
-    u'\ufef1'	#  0x00fd -> ARABIC LETTER YEH ISOLATED FORM
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\ufffe'	#  0x00ff -> UNDEFINED
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'\u066a'   #  0x0025 -> ARABIC PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\xb0'     #  0x0080 -> DEGREE SIGN
+    u'\xb7'     #  0x0081 -> MIDDLE DOT
+    u'\u2219'   #  0x0082 -> BULLET OPERATOR
+    u'\u221a'   #  0x0083 -> SQUARE ROOT
+    u'\u2592'   #  0x0084 -> MEDIUM SHADE
+    u'\u2500'   #  0x0085 -> FORMS LIGHT HORIZONTAL
+    u'\u2502'   #  0x0086 -> FORMS LIGHT VERTICAL
+    u'\u253c'   #  0x0087 -> FORMS LIGHT VERTICAL AND HORIZONTAL
+    u'\u2524'   #  0x0088 -> FORMS LIGHT VERTICAL AND LEFT
+    u'\u252c'   #  0x0089 -> FORMS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x008a -> FORMS LIGHT VERTICAL AND RIGHT
+    u'\u2534'   #  0x008b -> FORMS LIGHT UP AND HORIZONTAL
+    u'\u2510'   #  0x008c -> FORMS LIGHT DOWN AND LEFT
+    u'\u250c'   #  0x008d -> FORMS LIGHT DOWN AND RIGHT
+    u'\u2514'   #  0x008e -> FORMS LIGHT UP AND RIGHT
+    u'\u2518'   #  0x008f -> FORMS LIGHT UP AND LEFT
+    u'\u03b2'   #  0x0090 -> GREEK SMALL BETA
+    u'\u221e'   #  0x0091 -> INFINITY
+    u'\u03c6'   #  0x0092 -> GREEK SMALL PHI
+    u'\xb1'     #  0x0093 -> PLUS-OR-MINUS SIGN
+    u'\xbd'     #  0x0094 -> FRACTION 1/2
+    u'\xbc'     #  0x0095 -> FRACTION 1/4
+    u'\u2248'   #  0x0096 -> ALMOST EQUAL TO
+    u'\xab'     #  0x0097 -> LEFT POINTING GUILLEMET
+    u'\xbb'     #  0x0098 -> RIGHT POINTING GUILLEMET
+    u'\ufef7'   #  0x0099 -> ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+    u'\ufef8'   #  0x009a -> ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+    u'\ufffe'   #  0x009b -> UNDEFINED
+    u'\ufffe'   #  0x009c -> UNDEFINED
+    u'\ufefb'   #  0x009d -> ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+    u'\ufefc'   #  0x009e -> ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+    u'\ufffe'   #  0x009f -> UNDEFINED
+    u'\xa0'     #  0x00a0 -> NON-BREAKING SPACE
+    u'\xad'     #  0x00a1 -> SOFT HYPHEN
+    u'\ufe82'   #  0x00a2 -> ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+    u'\xa3'     #  0x00a3 -> POUND SIGN
+    u'\xa4'     #  0x00a4 -> CURRENCY SIGN
+    u'\ufe84'   #  0x00a5 -> ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+    u'\ufffe'   #  0x00a6 -> UNDEFINED
+    u'\ufffe'   #  0x00a7 -> UNDEFINED
+    u'\ufe8e'   #  0x00a8 -> ARABIC LETTER ALEF FINAL FORM
+    u'\ufe8f'   #  0x00a9 -> ARABIC LETTER BEH ISOLATED FORM
+    u'\ufe95'   #  0x00aa -> ARABIC LETTER TEH ISOLATED FORM
+    u'\ufe99'   #  0x00ab -> ARABIC LETTER THEH ISOLATED FORM
+    u'\u060c'   #  0x00ac -> ARABIC COMMA
+    u'\ufe9d'   #  0x00ad -> ARABIC LETTER JEEM ISOLATED FORM
+    u'\ufea1'   #  0x00ae -> ARABIC LETTER HAH ISOLATED FORM
+    u'\ufea5'   #  0x00af -> ARABIC LETTER KHAH ISOLATED FORM
+    u'\u0660'   #  0x00b0 -> ARABIC-INDIC DIGIT ZERO
+    u'\u0661'   #  0x00b1 -> ARABIC-INDIC DIGIT ONE
+    u'\u0662'   #  0x00b2 -> ARABIC-INDIC DIGIT TWO
+    u'\u0663'   #  0x00b3 -> ARABIC-INDIC DIGIT THREE
+    u'\u0664'   #  0x00b4 -> ARABIC-INDIC DIGIT FOUR
+    u'\u0665'   #  0x00b5 -> ARABIC-INDIC DIGIT FIVE
+    u'\u0666'   #  0x00b6 -> ARABIC-INDIC DIGIT SIX
+    u'\u0667'   #  0x00b7 -> ARABIC-INDIC DIGIT SEVEN
+    u'\u0668'   #  0x00b8 -> ARABIC-INDIC DIGIT EIGHT
+    u'\u0669'   #  0x00b9 -> ARABIC-INDIC DIGIT NINE
+    u'\ufed1'   #  0x00ba -> ARABIC LETTER FEH ISOLATED FORM
+    u'\u061b'   #  0x00bb -> ARABIC SEMICOLON
+    u'\ufeb1'   #  0x00bc -> ARABIC LETTER SEEN ISOLATED FORM
+    u'\ufeb5'   #  0x00bd -> ARABIC LETTER SHEEN ISOLATED FORM
+    u'\ufeb9'   #  0x00be -> ARABIC LETTER SAD ISOLATED FORM
+    u'\u061f'   #  0x00bf -> ARABIC QUESTION MARK
+    u'\xa2'     #  0x00c0 -> CENT SIGN
+    u'\ufe80'   #  0x00c1 -> ARABIC LETTER HAMZA ISOLATED FORM
+    u'\ufe81'   #  0x00c2 -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+    u'\ufe83'   #  0x00c3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+    u'\ufe85'   #  0x00c4 -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+    u'\ufeca'   #  0x00c5 -> ARABIC LETTER AIN FINAL FORM
+    u'\ufe8b'   #  0x00c6 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+    u'\ufe8d'   #  0x00c7 -> ARABIC LETTER ALEF ISOLATED FORM
+    u'\ufe91'   #  0x00c8 -> ARABIC LETTER BEH INITIAL FORM
+    u'\ufe93'   #  0x00c9 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
+    u'\ufe97'   #  0x00ca -> ARABIC LETTER TEH INITIAL FORM
+    u'\ufe9b'   #  0x00cb -> ARABIC LETTER THEH INITIAL FORM
+    u'\ufe9f'   #  0x00cc -> ARABIC LETTER JEEM INITIAL FORM
+    u'\ufea3'   #  0x00cd -> ARABIC LETTER HAH INITIAL FORM
+    u'\ufea7'   #  0x00ce -> ARABIC LETTER KHAH INITIAL FORM
+    u'\ufea9'   #  0x00cf -> ARABIC LETTER DAL ISOLATED FORM
+    u'\ufeab'   #  0x00d0 -> ARABIC LETTER THAL ISOLATED FORM
+    u'\ufead'   #  0x00d1 -> ARABIC LETTER REH ISOLATED FORM
+    u'\ufeaf'   #  0x00d2 -> ARABIC LETTER ZAIN ISOLATED FORM
+    u'\ufeb3'   #  0x00d3 -> ARABIC LETTER SEEN INITIAL FORM
+    u'\ufeb7'   #  0x00d4 -> ARABIC LETTER SHEEN INITIAL FORM
+    u'\ufebb'   #  0x00d5 -> ARABIC LETTER SAD INITIAL FORM
+    u'\ufebf'   #  0x00d6 -> ARABIC LETTER DAD INITIAL FORM
+    u'\ufec1'   #  0x00d7 -> ARABIC LETTER TAH ISOLATED FORM
+    u'\ufec5'   #  0x00d8 -> ARABIC LETTER ZAH ISOLATED FORM
+    u'\ufecb'   #  0x00d9 -> ARABIC LETTER AIN INITIAL FORM
+    u'\ufecf'   #  0x00da -> ARABIC LETTER GHAIN INITIAL FORM
+    u'\xa6'     #  0x00db -> BROKEN VERTICAL BAR
+    u'\xac'     #  0x00dc -> NOT SIGN
+    u'\xf7'     #  0x00dd -> DIVISION SIGN
+    u'\xd7'     #  0x00de -> MULTIPLICATION SIGN
+    u'\ufec9'   #  0x00df -> ARABIC LETTER AIN ISOLATED FORM
+    u'\u0640'   #  0x00e0 -> ARABIC TATWEEL
+    u'\ufed3'   #  0x00e1 -> ARABIC LETTER FEH INITIAL FORM
+    u'\ufed7'   #  0x00e2 -> ARABIC LETTER QAF INITIAL FORM
+    u'\ufedb'   #  0x00e3 -> ARABIC LETTER KAF INITIAL FORM
+    u'\ufedf'   #  0x00e4 -> ARABIC LETTER LAM INITIAL FORM
+    u'\ufee3'   #  0x00e5 -> ARABIC LETTER MEEM INITIAL FORM
+    u'\ufee7'   #  0x00e6 -> ARABIC LETTER NOON INITIAL FORM
+    u'\ufeeb'   #  0x00e7 -> ARABIC LETTER HEH INITIAL FORM
+    u'\ufeed'   #  0x00e8 -> ARABIC LETTER WAW ISOLATED FORM
+    u'\ufeef'   #  0x00e9 -> ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+    u'\ufef3'   #  0x00ea -> ARABIC LETTER YEH INITIAL FORM
+    u'\ufebd'   #  0x00eb -> ARABIC LETTER DAD ISOLATED FORM
+    u'\ufecc'   #  0x00ec -> ARABIC LETTER AIN MEDIAL FORM
+    u'\ufece'   #  0x00ed -> ARABIC LETTER GHAIN FINAL FORM
+    u'\ufecd'   #  0x00ee -> ARABIC LETTER GHAIN ISOLATED FORM
+    u'\ufee1'   #  0x00ef -> ARABIC LETTER MEEM ISOLATED FORM
+    u'\ufe7d'   #  0x00f0 -> ARABIC SHADDA MEDIAL FORM
+    u'\u0651'   #  0x00f1 -> ARABIC SHADDAH
+    u'\ufee5'   #  0x00f2 -> ARABIC LETTER NOON ISOLATED FORM
+    u'\ufee9'   #  0x00f3 -> ARABIC LETTER HEH ISOLATED FORM
+    u'\ufeec'   #  0x00f4 -> ARABIC LETTER HEH MEDIAL FORM
+    u'\ufef0'   #  0x00f5 -> ARABIC LETTER ALEF MAKSURA FINAL FORM
+    u'\ufef2'   #  0x00f6 -> ARABIC LETTER YEH FINAL FORM
+    u'\ufed0'   #  0x00f7 -> ARABIC LETTER GHAIN MEDIAL FORM
+    u'\ufed5'   #  0x00f8 -> ARABIC LETTER QAF ISOLATED FORM
+    u'\ufef5'   #  0x00f9 -> ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+    u'\ufef6'   #  0x00fa -> ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+    u'\ufedd'   #  0x00fb -> ARABIC LETTER LAM ISOLATED FORM
+    u'\ufed9'   #  0x00fc -> ARABIC LETTER KAF ISOLATED FORM
+    u'\ufef1'   #  0x00fd -> ARABIC LETTER YEH ISOLATED FORM
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\ufffe'   #  0x00ff -> UNDEFINED
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00a0,	#  NON-BREAKING SPACE
-    0x00a2: 0x00c0,	#  CENT SIGN
-    0x00a3: 0x00a3,	#  POUND SIGN
-    0x00a4: 0x00a4,	#  CURRENCY SIGN
-    0x00a6: 0x00db,	#  BROKEN VERTICAL BAR
-    0x00ab: 0x0097,	#  LEFT POINTING GUILLEMET
-    0x00ac: 0x00dc,	#  NOT SIGN
-    0x00ad: 0x00a1,	#  SOFT HYPHEN
-    0x00b0: 0x0080,	#  DEGREE SIGN
-    0x00b1: 0x0093,	#  PLUS-OR-MINUS SIGN
-    0x00b7: 0x0081,	#  MIDDLE DOT
-    0x00bb: 0x0098,	#  RIGHT POINTING GUILLEMET
-    0x00bc: 0x0095,	#  FRACTION 1/4
-    0x00bd: 0x0094,	#  FRACTION 1/2
-    0x00d7: 0x00de,	#  MULTIPLICATION SIGN
-    0x00f7: 0x00dd,	#  DIVISION SIGN
-    0x03b2: 0x0090,	#  GREEK SMALL BETA
-    0x03c6: 0x0092,	#  GREEK SMALL PHI
-    0x060c: 0x00ac,	#  ARABIC COMMA
-    0x061b: 0x00bb,	#  ARABIC SEMICOLON
-    0x061f: 0x00bf,	#  ARABIC QUESTION MARK
-    0x0640: 0x00e0,	#  ARABIC TATWEEL
-    0x0651: 0x00f1,	#  ARABIC SHADDAH
-    0x0660: 0x00b0,	#  ARABIC-INDIC DIGIT ZERO
-    0x0661: 0x00b1,	#  ARABIC-INDIC DIGIT ONE
-    0x0662: 0x00b2,	#  ARABIC-INDIC DIGIT TWO
-    0x0663: 0x00b3,	#  ARABIC-INDIC DIGIT THREE
-    0x0664: 0x00b4,	#  ARABIC-INDIC DIGIT FOUR
-    0x0665: 0x00b5,	#  ARABIC-INDIC DIGIT FIVE
-    0x0666: 0x00b6,	#  ARABIC-INDIC DIGIT SIX
-    0x0667: 0x00b7,	#  ARABIC-INDIC DIGIT SEVEN
-    0x0668: 0x00b8,	#  ARABIC-INDIC DIGIT EIGHT
-    0x0669: 0x00b9,	#  ARABIC-INDIC DIGIT NINE
-    0x066a: 0x0025,	#  ARABIC PERCENT SIGN
-    0x2219: 0x0082,	#  BULLET OPERATOR
-    0x221a: 0x0083,	#  SQUARE ROOT
-    0x221e: 0x0091,	#  INFINITY
-    0x2248: 0x0096,	#  ALMOST EQUAL TO
-    0x2500: 0x0085,	#  FORMS LIGHT HORIZONTAL
-    0x2502: 0x0086,	#  FORMS LIGHT VERTICAL
-    0x250c: 0x008d,	#  FORMS LIGHT DOWN AND RIGHT
-    0x2510: 0x008c,	#  FORMS LIGHT DOWN AND LEFT
-    0x2514: 0x008e,	#  FORMS LIGHT UP AND RIGHT
-    0x2518: 0x008f,	#  FORMS LIGHT UP AND LEFT
-    0x251c: 0x008a,	#  FORMS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x0088,	#  FORMS LIGHT VERTICAL AND LEFT
-    0x252c: 0x0089,	#  FORMS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x008b,	#  FORMS LIGHT UP AND HORIZONTAL
-    0x253c: 0x0087,	#  FORMS LIGHT VERTICAL AND HORIZONTAL
-    0x2592: 0x0084,	#  MEDIUM SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-    0xfe7d: 0x00f0,	#  ARABIC SHADDA MEDIAL FORM
-    0xfe80: 0x00c1,	#  ARABIC LETTER HAMZA ISOLATED FORM
-    0xfe81: 0x00c2,	#  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    0xfe82: 0x00a2,	#  ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-    0xfe83: 0x00c3,	#  ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-    0xfe84: 0x00a5,	#  ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-    0xfe85: 0x00c4,	#  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    0xfe8b: 0x00c6,	#  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    0xfe8d: 0x00c7,	#  ARABIC LETTER ALEF ISOLATED FORM
-    0xfe8e: 0x00a8,	#  ARABIC LETTER ALEF FINAL FORM
-    0xfe8f: 0x00a9,	#  ARABIC LETTER BEH ISOLATED FORM
-    0xfe91: 0x00c8,	#  ARABIC LETTER BEH INITIAL FORM
-    0xfe93: 0x00c9,	#  ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    0xfe95: 0x00aa,	#  ARABIC LETTER TEH ISOLATED FORM
-    0xfe97: 0x00ca,	#  ARABIC LETTER TEH INITIAL FORM
-    0xfe99: 0x00ab,	#  ARABIC LETTER THEH ISOLATED FORM
-    0xfe9b: 0x00cb,	#  ARABIC LETTER THEH INITIAL FORM
-    0xfe9d: 0x00ad,	#  ARABIC LETTER JEEM ISOLATED FORM
-    0xfe9f: 0x00cc,	#  ARABIC LETTER JEEM INITIAL FORM
-    0xfea1: 0x00ae,	#  ARABIC LETTER HAH ISOLATED FORM
-    0xfea3: 0x00cd,	#  ARABIC LETTER HAH INITIAL FORM
-    0xfea5: 0x00af,	#  ARABIC LETTER KHAH ISOLATED FORM
-    0xfea7: 0x00ce,	#  ARABIC LETTER KHAH INITIAL FORM
-    0xfea9: 0x00cf,	#  ARABIC LETTER DAL ISOLATED FORM
-    0xfeab: 0x00d0,	#  ARABIC LETTER THAL ISOLATED FORM
-    0xfead: 0x00d1,	#  ARABIC LETTER REH ISOLATED FORM
-    0xfeaf: 0x00d2,	#  ARABIC LETTER ZAIN ISOLATED FORM
-    0xfeb1: 0x00bc,	#  ARABIC LETTER SEEN ISOLATED FORM
-    0xfeb3: 0x00d3,	#  ARABIC LETTER SEEN INITIAL FORM
-    0xfeb5: 0x00bd,	#  ARABIC LETTER SHEEN ISOLATED FORM
-    0xfeb7: 0x00d4,	#  ARABIC LETTER SHEEN INITIAL FORM
-    0xfeb9: 0x00be,	#  ARABIC LETTER SAD ISOLATED FORM
-    0xfebb: 0x00d5,	#  ARABIC LETTER SAD INITIAL FORM
-    0xfebd: 0x00eb,	#  ARABIC LETTER DAD ISOLATED FORM
-    0xfebf: 0x00d6,	#  ARABIC LETTER DAD INITIAL FORM
-    0xfec1: 0x00d7,	#  ARABIC LETTER TAH ISOLATED FORM
-    0xfec5: 0x00d8,	#  ARABIC LETTER ZAH ISOLATED FORM
-    0xfec9: 0x00df,	#  ARABIC LETTER AIN ISOLATED FORM
-    0xfeca: 0x00c5,	#  ARABIC LETTER AIN FINAL FORM
-    0xfecb: 0x00d9,	#  ARABIC LETTER AIN INITIAL FORM
-    0xfecc: 0x00ec,	#  ARABIC LETTER AIN MEDIAL FORM
-    0xfecd: 0x00ee,	#  ARABIC LETTER GHAIN ISOLATED FORM
-    0xfece: 0x00ed,	#  ARABIC LETTER GHAIN FINAL FORM
-    0xfecf: 0x00da,	#  ARABIC LETTER GHAIN INITIAL FORM
-    0xfed0: 0x00f7,	#  ARABIC LETTER GHAIN MEDIAL FORM
-    0xfed1: 0x00ba,	#  ARABIC LETTER FEH ISOLATED FORM
-    0xfed3: 0x00e1,	#  ARABIC LETTER FEH INITIAL FORM
-    0xfed5: 0x00f8,	#  ARABIC LETTER QAF ISOLATED FORM
-    0xfed7: 0x00e2,	#  ARABIC LETTER QAF INITIAL FORM
-    0xfed9: 0x00fc,	#  ARABIC LETTER KAF ISOLATED FORM
-    0xfedb: 0x00e3,	#  ARABIC LETTER KAF INITIAL FORM
-    0xfedd: 0x00fb,	#  ARABIC LETTER LAM ISOLATED FORM
-    0xfedf: 0x00e4,	#  ARABIC LETTER LAM INITIAL FORM
-    0xfee1: 0x00ef,	#  ARABIC LETTER MEEM ISOLATED FORM
-    0xfee3: 0x00e5,	#  ARABIC LETTER MEEM INITIAL FORM
-    0xfee5: 0x00f2,	#  ARABIC LETTER NOON ISOLATED FORM
-    0xfee7: 0x00e6,	#  ARABIC LETTER NOON INITIAL FORM
-    0xfee9: 0x00f3,	#  ARABIC LETTER HEH ISOLATED FORM
-    0xfeeb: 0x00e7,	#  ARABIC LETTER HEH INITIAL FORM
-    0xfeec: 0x00f4,	#  ARABIC LETTER HEH MEDIAL FORM
-    0xfeed: 0x00e8,	#  ARABIC LETTER WAW ISOLATED FORM
-    0xfeef: 0x00e9,	#  ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-    0xfef0: 0x00f5,	#  ARABIC LETTER ALEF MAKSURA FINAL FORM
-    0xfef1: 0x00fd,	#  ARABIC LETTER YEH ISOLATED FORM
-    0xfef2: 0x00f6,	#  ARABIC LETTER YEH FINAL FORM
-    0xfef3: 0x00ea,	#  ARABIC LETTER YEH INITIAL FORM
-    0xfef5: 0x00f9,	#  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-    0xfef6: 0x00fa,	#  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-    0xfef7: 0x0099,	#  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-    0xfef8: 0x009a,	#  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-    0xfefb: 0x009d,	#  ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-    0xfefc: 0x009e,	#  ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00a0,     #  NON-BREAKING SPACE
+    0x00a2: 0x00c0,     #  CENT SIGN
+    0x00a3: 0x00a3,     #  POUND SIGN
+    0x00a4: 0x00a4,     #  CURRENCY SIGN
+    0x00a6: 0x00db,     #  BROKEN VERTICAL BAR
+    0x00ab: 0x0097,     #  LEFT POINTING GUILLEMET
+    0x00ac: 0x00dc,     #  NOT SIGN
+    0x00ad: 0x00a1,     #  SOFT HYPHEN
+    0x00b0: 0x0080,     #  DEGREE SIGN
+    0x00b1: 0x0093,     #  PLUS-OR-MINUS SIGN
+    0x00b7: 0x0081,     #  MIDDLE DOT
+    0x00bb: 0x0098,     #  RIGHT POINTING GUILLEMET
+    0x00bc: 0x0095,     #  FRACTION 1/4
+    0x00bd: 0x0094,     #  FRACTION 1/2
+    0x00d7: 0x00de,     #  MULTIPLICATION SIGN
+    0x00f7: 0x00dd,     #  DIVISION SIGN
+    0x03b2: 0x0090,     #  GREEK SMALL BETA
+    0x03c6: 0x0092,     #  GREEK SMALL PHI
+    0x060c: 0x00ac,     #  ARABIC COMMA
+    0x061b: 0x00bb,     #  ARABIC SEMICOLON
+    0x061f: 0x00bf,     #  ARABIC QUESTION MARK
+    0x0640: 0x00e0,     #  ARABIC TATWEEL
+    0x0651: 0x00f1,     #  ARABIC SHADDAH
+    0x0660: 0x00b0,     #  ARABIC-INDIC DIGIT ZERO
+    0x0661: 0x00b1,     #  ARABIC-INDIC DIGIT ONE
+    0x0662: 0x00b2,     #  ARABIC-INDIC DIGIT TWO
+    0x0663: 0x00b3,     #  ARABIC-INDIC DIGIT THREE
+    0x0664: 0x00b4,     #  ARABIC-INDIC DIGIT FOUR
+    0x0665: 0x00b5,     #  ARABIC-INDIC DIGIT FIVE
+    0x0666: 0x00b6,     #  ARABIC-INDIC DIGIT SIX
+    0x0667: 0x00b7,     #  ARABIC-INDIC DIGIT SEVEN
+    0x0668: 0x00b8,     #  ARABIC-INDIC DIGIT EIGHT
+    0x0669: 0x00b9,     #  ARABIC-INDIC DIGIT NINE
+    0x066a: 0x0025,     #  ARABIC PERCENT SIGN
+    0x2219: 0x0082,     #  BULLET OPERATOR
+    0x221a: 0x0083,     #  SQUARE ROOT
+    0x221e: 0x0091,     #  INFINITY
+    0x2248: 0x0096,     #  ALMOST EQUAL TO
+    0x2500: 0x0085,     #  FORMS LIGHT HORIZONTAL
+    0x2502: 0x0086,     #  FORMS LIGHT VERTICAL
+    0x250c: 0x008d,     #  FORMS LIGHT DOWN AND RIGHT
+    0x2510: 0x008c,     #  FORMS LIGHT DOWN AND LEFT
+    0x2514: 0x008e,     #  FORMS LIGHT UP AND RIGHT
+    0x2518: 0x008f,     #  FORMS LIGHT UP AND LEFT
+    0x251c: 0x008a,     #  FORMS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x0088,     #  FORMS LIGHT VERTICAL AND LEFT
+    0x252c: 0x0089,     #  FORMS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x008b,     #  FORMS LIGHT UP AND HORIZONTAL
+    0x253c: 0x0087,     #  FORMS LIGHT VERTICAL AND HORIZONTAL
+    0x2592: 0x0084,     #  MEDIUM SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+    0xfe7d: 0x00f0,     #  ARABIC SHADDA MEDIAL FORM
+    0xfe80: 0x00c1,     #  ARABIC LETTER HAMZA ISOLATED FORM
+    0xfe81: 0x00c2,     #  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+    0xfe82: 0x00a2,     #  ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+    0xfe83: 0x00c3,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+    0xfe84: 0x00a5,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+    0xfe85: 0x00c4,     #  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+    0xfe8b: 0x00c6,     #  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+    0xfe8d: 0x00c7,     #  ARABIC LETTER ALEF ISOLATED FORM
+    0xfe8e: 0x00a8,     #  ARABIC LETTER ALEF FINAL FORM
+    0xfe8f: 0x00a9,     #  ARABIC LETTER BEH ISOLATED FORM
+    0xfe91: 0x00c8,     #  ARABIC LETTER BEH INITIAL FORM
+    0xfe93: 0x00c9,     #  ARABIC LETTER TEH MARBUTA ISOLATED FORM
+    0xfe95: 0x00aa,     #  ARABIC LETTER TEH ISOLATED FORM
+    0xfe97: 0x00ca,     #  ARABIC LETTER TEH INITIAL FORM
+    0xfe99: 0x00ab,     #  ARABIC LETTER THEH ISOLATED FORM
+    0xfe9b: 0x00cb,     #  ARABIC LETTER THEH INITIAL FORM
+    0xfe9d: 0x00ad,     #  ARABIC LETTER JEEM ISOLATED FORM
+    0xfe9f: 0x00cc,     #  ARABIC LETTER JEEM INITIAL FORM
+    0xfea1: 0x00ae,     #  ARABIC LETTER HAH ISOLATED FORM
+    0xfea3: 0x00cd,     #  ARABIC LETTER HAH INITIAL FORM
+    0xfea5: 0x00af,     #  ARABIC LETTER KHAH ISOLATED FORM
+    0xfea7: 0x00ce,     #  ARABIC LETTER KHAH INITIAL FORM
+    0xfea9: 0x00cf,     #  ARABIC LETTER DAL ISOLATED FORM
+    0xfeab: 0x00d0,     #  ARABIC LETTER THAL ISOLATED FORM
+    0xfead: 0x00d1,     #  ARABIC LETTER REH ISOLATED FORM
+    0xfeaf: 0x00d2,     #  ARABIC LETTER ZAIN ISOLATED FORM
+    0xfeb1: 0x00bc,     #  ARABIC LETTER SEEN ISOLATED FORM
+    0xfeb3: 0x00d3,     #  ARABIC LETTER SEEN INITIAL FORM
+    0xfeb5: 0x00bd,     #  ARABIC LETTER SHEEN ISOLATED FORM
+    0xfeb7: 0x00d4,     #  ARABIC LETTER SHEEN INITIAL FORM
+    0xfeb9: 0x00be,     #  ARABIC LETTER SAD ISOLATED FORM
+    0xfebb: 0x00d5,     #  ARABIC LETTER SAD INITIAL FORM
+    0xfebd: 0x00eb,     #  ARABIC LETTER DAD ISOLATED FORM
+    0xfebf: 0x00d6,     #  ARABIC LETTER DAD INITIAL FORM
+    0xfec1: 0x00d7,     #  ARABIC LETTER TAH ISOLATED FORM
+    0xfec5: 0x00d8,     #  ARABIC LETTER ZAH ISOLATED FORM
+    0xfec9: 0x00df,     #  ARABIC LETTER AIN ISOLATED FORM
+    0xfeca: 0x00c5,     #  ARABIC LETTER AIN FINAL FORM
+    0xfecb: 0x00d9,     #  ARABIC LETTER AIN INITIAL FORM
+    0xfecc: 0x00ec,     #  ARABIC LETTER AIN MEDIAL FORM
+    0xfecd: 0x00ee,     #  ARABIC LETTER GHAIN ISOLATED FORM
+    0xfece: 0x00ed,     #  ARABIC LETTER GHAIN FINAL FORM
+    0xfecf: 0x00da,     #  ARABIC LETTER GHAIN INITIAL FORM
+    0xfed0: 0x00f7,     #  ARABIC LETTER GHAIN MEDIAL FORM
+    0xfed1: 0x00ba,     #  ARABIC LETTER FEH ISOLATED FORM
+    0xfed3: 0x00e1,     #  ARABIC LETTER FEH INITIAL FORM
+    0xfed5: 0x00f8,     #  ARABIC LETTER QAF ISOLATED FORM
+    0xfed7: 0x00e2,     #  ARABIC LETTER QAF INITIAL FORM
+    0xfed9: 0x00fc,     #  ARABIC LETTER KAF ISOLATED FORM
+    0xfedb: 0x00e3,     #  ARABIC LETTER KAF INITIAL FORM
+    0xfedd: 0x00fb,     #  ARABIC LETTER LAM ISOLATED FORM
+    0xfedf: 0x00e4,     #  ARABIC LETTER LAM INITIAL FORM
+    0xfee1: 0x00ef,     #  ARABIC LETTER MEEM ISOLATED FORM
+    0xfee3: 0x00e5,     #  ARABIC LETTER MEEM INITIAL FORM
+    0xfee5: 0x00f2,     #  ARABIC LETTER NOON ISOLATED FORM
+    0xfee7: 0x00e6,     #  ARABIC LETTER NOON INITIAL FORM
+    0xfee9: 0x00f3,     #  ARABIC LETTER HEH ISOLATED FORM
+    0xfeeb: 0x00e7,     #  ARABIC LETTER HEH INITIAL FORM
+    0xfeec: 0x00f4,     #  ARABIC LETTER HEH MEDIAL FORM
+    0xfeed: 0x00e8,     #  ARABIC LETTER WAW ISOLATED FORM
+    0xfeef: 0x00e9,     #  ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+    0xfef0: 0x00f5,     #  ARABIC LETTER ALEF MAKSURA FINAL FORM
+    0xfef1: 0x00fd,     #  ARABIC LETTER YEH ISOLATED FORM
+    0xfef2: 0x00f6,     #  ARABIC LETTER YEH FINAL FORM
+    0xfef3: 0x00ea,     #  ARABIC LETTER YEH INITIAL FORM
+    0xfef5: 0x00f9,     #  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+    0xfef6: 0x00fa,     #  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+    0xfef7: 0x0099,     #  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+    0xfef8: 0x009a,     #  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+    0xfefb: 0x009d,     #  ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+    0xfefc: 0x009e,     #  ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+}

Modified: python/trunk/Lib/encodings/cp865.py
==============================================================================
--- python/trunk/Lib/encodings/cp865.py	(original)
+++ python/trunk/Lib/encodings/cp865.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x00c7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x00ec,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x008e: 0x00c4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,	#  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,	#  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00f2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00fb,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00ff,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0099: 0x00d6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x00d8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x20a7,	#  PESETA SIGN
-    0x009f: 0x0192,	#  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,	#  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,	#  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,	#  INVERTED QUESTION MARK
-    0x00a9: 0x2310,	#  REVERSED NOT SIGN
-    0x00aa: 0x00ac,	#  NOT SIGN
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,	#  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,	#  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00a4,	#  CURRENCY SIGN
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x258c,	#  LEFT HALF BLOCK
-    0x00de: 0x2590,	#  RIGHT HALF BLOCK
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x03b1,	#  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,	#  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,	#  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,	#  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,	#  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,	#  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,	#  MICRO SIGN
-    0x00e7: 0x03c4,	#  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,	#  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,	#  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,	#  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,	#  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,	#  INFINITY
-    0x00ed: 0x03c6,	#  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,	#  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,	#  INTERSECTION
-    0x00f0: 0x2261,	#  IDENTICAL TO
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x2265,	#  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,	#  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,	#  TOP HALF INTEGRAL
-    0x00f5: 0x2321,	#  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,	#  DIVISION SIGN
-    0x00f7: 0x2248,	#  ALMOST EQUAL TO
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x2219,	#  BULLET OPERATOR
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x221a,	#  SQUARE ROOT
-    0x00fc: 0x207f,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,	#  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x008d: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
+    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
+    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
+    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x0098: 0x00ff,     #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x009e: 0x20a7,     #  PESETA SIGN
+    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
+    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
+    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
+    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
+    0x00a9: 0x2310,     #  REVERSED NOT SIGN
+    0x00aa: 0x00ac,     #  NOT SIGN
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
+    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00a4,     #  CURRENCY SIGN
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x258c,     #  LEFT HALF BLOCK
+    0x00de: 0x2590,     #  RIGHT HALF BLOCK
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
+    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
+    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
+    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
+    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
+    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
+    0x00e6: 0x00b5,     #  MICRO SIGN
+    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
+    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
+    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
+    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
+    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
+    0x00ec: 0x221e,     #  INFINITY
+    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
+    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
+    0x00ef: 0x2229,     #  INTERSECTION
+    0x00f0: 0x2261,     #  IDENTICAL TO
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
+    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
+    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
+    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
+    0x00f6: 0x00f7,     #  DIVISION SIGN
+    0x00f7: 0x2248,     #  ALMOST EQUAL TO
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x2219,     #  BULLET OPERATOR
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x221a,     #  SQUARE ROOT
+    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\xc7'	#  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'	#  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'	#  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'	#  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'	#  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'	#  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'	#  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'	#  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'	#  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'	#  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xec'	#  0x008d -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xc4'	#  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'	#  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'	#  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'	#  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'	#  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'	#  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xfb'	#  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'	#  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xff'	#  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xd6'	#  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'	#  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\xd8'	#  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u20a7'	#  0x009e -> PESETA SIGN
-    u'\u0192'	#  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'	#  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'	#  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'	#  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'	#  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'	#  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'	#  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'	#  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'	#  0x00a8 -> INVERTED QUESTION MARK
-    u'\u2310'	#  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'	#  0x00aa -> NOT SIGN
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'	#  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'	#  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xa4'	#  0x00af -> CURRENCY SIGN
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'	#  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'	#  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'	#  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'	#  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'	#  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'	#  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'	#  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'	#  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'	#  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'	#  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'	#  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'	#  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'	#  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'	#  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'	#  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'	#  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'	#  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'	#  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'	#  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'	#  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'	#  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'	#  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'	#  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'	#  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'	#  0x00e6 -> MICRO SIGN
-    u'\u03c4'	#  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'	#  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'	#  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'	#  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'	#  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'	#  0x00ec -> INFINITY
-    u'\u03c6'	#  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'	#  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'	#  0x00ef -> INTERSECTION
-    u'\u2261'	#  0x00f0 -> IDENTICAL TO
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'	#  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'	#  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'	#  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'	#  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'	#  0x00f6 -> DIVISION SIGN
-    u'\u2248'	#  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\u2219'	#  0x00f9 -> BULLET OPERATOR
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\u221a'	#  0x00fb -> SQUARE ROOT
-    u'\u207f'	#  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'	#  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xec'     #  0x008d -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
+    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
+    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xff'     #  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u20a7'   #  0x009e -> PESETA SIGN
+    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
+    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
+    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
+    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
+    u'\xac'     #  0x00aa -> NOT SIGN
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
+    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xa4'     #  0x00af -> CURRENCY SIGN
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
+    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
+    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
+    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
+    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
+    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
+    u'\xb5'     #  0x00e6 -> MICRO SIGN
+    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
+    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
+    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
+    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
+    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
+    u'\u221e'   #  0x00ec -> INFINITY
+    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
+    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
+    u'\u2229'   #  0x00ef -> INTERSECTION
+    u'\u2261'   #  0x00f0 -> IDENTICAL TO
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
+    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
+    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
+    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
+    u'\xf7'     #  0x00f6 -> DIVISION SIGN
+    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\u221a'   #  0x00fb -> SQUARE ROOT
+    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
+    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a1: 0x00ad,	#  INVERTED EXCLAMATION MARK
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00a4: 0x00af,	#  CURRENCY SIGN
-    0x00aa: 0x00a6,	#  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,	#  NOT SIGN
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,	#  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,	#  MICRO SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x00ba: 0x00a7,	#  MASCULINE ORDINAL INDICATOR
-    0x00bc: 0x00ac,	#  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,	#  INVERTED QUESTION MARK
-    0x00c4: 0x008e,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,	#  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0090,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d1: 0x00a5,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d6: 0x0099,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0x009d,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00dc: 0x009a,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,	#  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x0084,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,	#  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x008d,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x00a4,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x0094,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,	#  DIVISION SIGN
-    0x00f8: 0x009b,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x0097,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0x0098,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0192: 0x009f,	#  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,	#  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,	#  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,	#  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,	#  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,	#  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,	#  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,	#  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,	#  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,	#  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,	#  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,	#  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,	#  GREEK SMALL LETTER PHI
-    0x207f: 0x00fc,	#  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,	#  PESETA SIGN
-    0x2219: 0x00f9,	#  BULLET OPERATOR
-    0x221a: 0x00fb,	#  SQUARE ROOT
-    0x221e: 0x00ec,	#  INFINITY
-    0x2229: 0x00ef,	#  INTERSECTION
-    0x2248: 0x00f7,	#  ALMOST EQUAL TO
-    0x2261: 0x00f0,	#  IDENTICAL TO
-    0x2264: 0x00f3,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,	#  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,	#  REVERSED NOT SIGN
-    0x2320: 0x00f4,	#  TOP HALF INTEGRAL
-    0x2321: 0x00f5,	#  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x258c: 0x00dd,	#  LEFT HALF BLOCK
-    0x2590: 0x00de,	#  RIGHT HALF BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00a4: 0x00af,     #  CURRENCY SIGN
+    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x00aa,     #  NOT SIGN
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
+    0x00b5: 0x00e6,     #  MICRO SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
+    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
+    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
+    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
+    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
+    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ec: 0x008d,     #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
+    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00f7: 0x00f6,     #  DIVISION SIGN
+    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
+    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00ff: 0x0098,     #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
+    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
+    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
+    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
+    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
+    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
+    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
+    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
+    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
+    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
+    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
+    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
+    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
+    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
+    0x20a7: 0x009e,     #  PESETA SIGN
+    0x2219: 0x00f9,     #  BULLET OPERATOR
+    0x221a: 0x00fb,     #  SQUARE ROOT
+    0x221e: 0x00ec,     #  INFINITY
+    0x2229: 0x00ef,     #  INTERSECTION
+    0x2248: 0x00f7,     #  ALMOST EQUAL TO
+    0x2261: 0x00f0,     #  IDENTICAL TO
+    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
+    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
+    0x2310: 0x00a9,     #  REVERSED NOT SIGN
+    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
+    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x258c: 0x00dd,     #  LEFT HALF BLOCK
+    0x2590: 0x00de,     #  RIGHT HALF BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp866.py
==============================================================================
--- python/trunk/Lib/encodings/cp866.py	(original)
+++ python/trunk/Lib/encodings/cp866.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x0410,	#  CYRILLIC CAPITAL LETTER A
-    0x0081: 0x0411,	#  CYRILLIC CAPITAL LETTER BE
-    0x0082: 0x0412,	#  CYRILLIC CAPITAL LETTER VE
-    0x0083: 0x0413,	#  CYRILLIC CAPITAL LETTER GHE
-    0x0084: 0x0414,	#  CYRILLIC CAPITAL LETTER DE
-    0x0085: 0x0415,	#  CYRILLIC CAPITAL LETTER IE
-    0x0086: 0x0416,	#  CYRILLIC CAPITAL LETTER ZHE
-    0x0087: 0x0417,	#  CYRILLIC CAPITAL LETTER ZE
-    0x0088: 0x0418,	#  CYRILLIC CAPITAL LETTER I
-    0x0089: 0x0419,	#  CYRILLIC CAPITAL LETTER SHORT I
-    0x008a: 0x041a,	#  CYRILLIC CAPITAL LETTER KA
-    0x008b: 0x041b,	#  CYRILLIC CAPITAL LETTER EL
-    0x008c: 0x041c,	#  CYRILLIC CAPITAL LETTER EM
-    0x008d: 0x041d,	#  CYRILLIC CAPITAL LETTER EN
-    0x008e: 0x041e,	#  CYRILLIC CAPITAL LETTER O
-    0x008f: 0x041f,	#  CYRILLIC CAPITAL LETTER PE
-    0x0090: 0x0420,	#  CYRILLIC CAPITAL LETTER ER
-    0x0091: 0x0421,	#  CYRILLIC CAPITAL LETTER ES
-    0x0092: 0x0422,	#  CYRILLIC CAPITAL LETTER TE
-    0x0093: 0x0423,	#  CYRILLIC CAPITAL LETTER U
-    0x0094: 0x0424,	#  CYRILLIC CAPITAL LETTER EF
-    0x0095: 0x0425,	#  CYRILLIC CAPITAL LETTER HA
-    0x0096: 0x0426,	#  CYRILLIC CAPITAL LETTER TSE
-    0x0097: 0x0427,	#  CYRILLIC CAPITAL LETTER CHE
-    0x0098: 0x0428,	#  CYRILLIC CAPITAL LETTER SHA
-    0x0099: 0x0429,	#  CYRILLIC CAPITAL LETTER SHCHA
-    0x009a: 0x042a,	#  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x009b: 0x042b,	#  CYRILLIC CAPITAL LETTER YERU
-    0x009c: 0x042c,	#  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x009d: 0x042d,	#  CYRILLIC CAPITAL LETTER E
-    0x009e: 0x042e,	#  CYRILLIC CAPITAL LETTER YU
-    0x009f: 0x042f,	#  CYRILLIC CAPITAL LETTER YA
-    0x00a0: 0x0430,	#  CYRILLIC SMALL LETTER A
-    0x00a1: 0x0431,	#  CYRILLIC SMALL LETTER BE
-    0x00a2: 0x0432,	#  CYRILLIC SMALL LETTER VE
-    0x00a3: 0x0433,	#  CYRILLIC SMALL LETTER GHE
-    0x00a4: 0x0434,	#  CYRILLIC SMALL LETTER DE
-    0x00a5: 0x0435,	#  CYRILLIC SMALL LETTER IE
-    0x00a6: 0x0436,	#  CYRILLIC SMALL LETTER ZHE
-    0x00a7: 0x0437,	#  CYRILLIC SMALL LETTER ZE
-    0x00a8: 0x0438,	#  CYRILLIC SMALL LETTER I
-    0x00a9: 0x0439,	#  CYRILLIC SMALL LETTER SHORT I
-    0x00aa: 0x043a,	#  CYRILLIC SMALL LETTER KA
-    0x00ab: 0x043b,	#  CYRILLIC SMALL LETTER EL
-    0x00ac: 0x043c,	#  CYRILLIC SMALL LETTER EM
-    0x00ad: 0x043d,	#  CYRILLIC SMALL LETTER EN
-    0x00ae: 0x043e,	#  CYRILLIC SMALL LETTER O
-    0x00af: 0x043f,	#  CYRILLIC SMALL LETTER PE
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x258c,	#  LEFT HALF BLOCK
-    0x00de: 0x2590,	#  RIGHT HALF BLOCK
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x0440,	#  CYRILLIC SMALL LETTER ER
-    0x00e1: 0x0441,	#  CYRILLIC SMALL LETTER ES
-    0x00e2: 0x0442,	#  CYRILLIC SMALL LETTER TE
-    0x00e3: 0x0443,	#  CYRILLIC SMALL LETTER U
-    0x00e4: 0x0444,	#  CYRILLIC SMALL LETTER EF
-    0x00e5: 0x0445,	#  CYRILLIC SMALL LETTER HA
-    0x00e6: 0x0446,	#  CYRILLIC SMALL LETTER TSE
-    0x00e7: 0x0447,	#  CYRILLIC SMALL LETTER CHE
-    0x00e8: 0x0448,	#  CYRILLIC SMALL LETTER SHA
-    0x00e9: 0x0449,	#  CYRILLIC SMALL LETTER SHCHA
-    0x00ea: 0x044a,	#  CYRILLIC SMALL LETTER HARD SIGN
-    0x00eb: 0x044b,	#  CYRILLIC SMALL LETTER YERU
-    0x00ec: 0x044c,	#  CYRILLIC SMALL LETTER SOFT SIGN
-    0x00ed: 0x044d,	#  CYRILLIC SMALL LETTER E
-    0x00ee: 0x044e,	#  CYRILLIC SMALL LETTER YU
-    0x00ef: 0x044f,	#  CYRILLIC SMALL LETTER YA
-    0x00f0: 0x0401,	#  CYRILLIC CAPITAL LETTER IO
-    0x00f1: 0x0451,	#  CYRILLIC SMALL LETTER IO
-    0x00f2: 0x0404,	#  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x00f3: 0x0454,	#  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x00f4: 0x0407,	#  CYRILLIC CAPITAL LETTER YI
-    0x00f5: 0x0457,	#  CYRILLIC SMALL LETTER YI
-    0x00f6: 0x040e,	#  CYRILLIC CAPITAL LETTER SHORT U
-    0x00f7: 0x045e,	#  CYRILLIC SMALL LETTER SHORT U
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x2219,	#  BULLET OPERATOR
-    0x00fa: 0x00b7,	#  MIDDLE DOT
-    0x00fb: 0x221a,	#  SQUARE ROOT
-    0x00fc: 0x2116,	#  NUMERO SIGN
-    0x00fd: 0x00a4,	#  CURRENCY SIGN
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: 0x0410,     #  CYRILLIC CAPITAL LETTER A
+    0x0081: 0x0411,     #  CYRILLIC CAPITAL LETTER BE
+    0x0082: 0x0412,     #  CYRILLIC CAPITAL LETTER VE
+    0x0083: 0x0413,     #  CYRILLIC CAPITAL LETTER GHE
+    0x0084: 0x0414,     #  CYRILLIC CAPITAL LETTER DE
+    0x0085: 0x0415,     #  CYRILLIC CAPITAL LETTER IE
+    0x0086: 0x0416,     #  CYRILLIC CAPITAL LETTER ZHE
+    0x0087: 0x0417,     #  CYRILLIC CAPITAL LETTER ZE
+    0x0088: 0x0418,     #  CYRILLIC CAPITAL LETTER I
+    0x0089: 0x0419,     #  CYRILLIC CAPITAL LETTER SHORT I
+    0x008a: 0x041a,     #  CYRILLIC CAPITAL LETTER KA
+    0x008b: 0x041b,     #  CYRILLIC CAPITAL LETTER EL
+    0x008c: 0x041c,     #  CYRILLIC CAPITAL LETTER EM
+    0x008d: 0x041d,     #  CYRILLIC CAPITAL LETTER EN
+    0x008e: 0x041e,     #  CYRILLIC CAPITAL LETTER O
+    0x008f: 0x041f,     #  CYRILLIC CAPITAL LETTER PE
+    0x0090: 0x0420,     #  CYRILLIC CAPITAL LETTER ER
+    0x0091: 0x0421,     #  CYRILLIC CAPITAL LETTER ES
+    0x0092: 0x0422,     #  CYRILLIC CAPITAL LETTER TE
+    0x0093: 0x0423,     #  CYRILLIC CAPITAL LETTER U
+    0x0094: 0x0424,     #  CYRILLIC CAPITAL LETTER EF
+    0x0095: 0x0425,     #  CYRILLIC CAPITAL LETTER HA
+    0x0096: 0x0426,     #  CYRILLIC CAPITAL LETTER TSE
+    0x0097: 0x0427,     #  CYRILLIC CAPITAL LETTER CHE
+    0x0098: 0x0428,     #  CYRILLIC CAPITAL LETTER SHA
+    0x0099: 0x0429,     #  CYRILLIC CAPITAL LETTER SHCHA
+    0x009a: 0x042a,     #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x009b: 0x042b,     #  CYRILLIC CAPITAL LETTER YERU
+    0x009c: 0x042c,     #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x009d: 0x042d,     #  CYRILLIC CAPITAL LETTER E
+    0x009e: 0x042e,     #  CYRILLIC CAPITAL LETTER YU
+    0x009f: 0x042f,     #  CYRILLIC CAPITAL LETTER YA
+    0x00a0: 0x0430,     #  CYRILLIC SMALL LETTER A
+    0x00a1: 0x0431,     #  CYRILLIC SMALL LETTER BE
+    0x00a2: 0x0432,     #  CYRILLIC SMALL LETTER VE
+    0x00a3: 0x0433,     #  CYRILLIC SMALL LETTER GHE
+    0x00a4: 0x0434,     #  CYRILLIC SMALL LETTER DE
+    0x00a5: 0x0435,     #  CYRILLIC SMALL LETTER IE
+    0x00a6: 0x0436,     #  CYRILLIC SMALL LETTER ZHE
+    0x00a7: 0x0437,     #  CYRILLIC SMALL LETTER ZE
+    0x00a8: 0x0438,     #  CYRILLIC SMALL LETTER I
+    0x00a9: 0x0439,     #  CYRILLIC SMALL LETTER SHORT I
+    0x00aa: 0x043a,     #  CYRILLIC SMALL LETTER KA
+    0x00ab: 0x043b,     #  CYRILLIC SMALL LETTER EL
+    0x00ac: 0x043c,     #  CYRILLIC SMALL LETTER EM
+    0x00ad: 0x043d,     #  CYRILLIC SMALL LETTER EN
+    0x00ae: 0x043e,     #  CYRILLIC SMALL LETTER O
+    0x00af: 0x043f,     #  CYRILLIC SMALL LETTER PE
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x258c,     #  LEFT HALF BLOCK
+    0x00de: 0x2590,     #  RIGHT HALF BLOCK
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x0440,     #  CYRILLIC SMALL LETTER ER
+    0x00e1: 0x0441,     #  CYRILLIC SMALL LETTER ES
+    0x00e2: 0x0442,     #  CYRILLIC SMALL LETTER TE
+    0x00e3: 0x0443,     #  CYRILLIC SMALL LETTER U
+    0x00e4: 0x0444,     #  CYRILLIC SMALL LETTER EF
+    0x00e5: 0x0445,     #  CYRILLIC SMALL LETTER HA
+    0x00e6: 0x0446,     #  CYRILLIC SMALL LETTER TSE
+    0x00e7: 0x0447,     #  CYRILLIC SMALL LETTER CHE
+    0x00e8: 0x0448,     #  CYRILLIC SMALL LETTER SHA
+    0x00e9: 0x0449,     #  CYRILLIC SMALL LETTER SHCHA
+    0x00ea: 0x044a,     #  CYRILLIC SMALL LETTER HARD SIGN
+    0x00eb: 0x044b,     #  CYRILLIC SMALL LETTER YERU
+    0x00ec: 0x044c,     #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x00ed: 0x044d,     #  CYRILLIC SMALL LETTER E
+    0x00ee: 0x044e,     #  CYRILLIC SMALL LETTER YU
+    0x00ef: 0x044f,     #  CYRILLIC SMALL LETTER YA
+    0x00f0: 0x0401,     #  CYRILLIC CAPITAL LETTER IO
+    0x00f1: 0x0451,     #  CYRILLIC SMALL LETTER IO
+    0x00f2: 0x0404,     #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x00f3: 0x0454,     #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x00f4: 0x0407,     #  CYRILLIC CAPITAL LETTER YI
+    0x00f5: 0x0457,     #  CYRILLIC SMALL LETTER YI
+    0x00f6: 0x040e,     #  CYRILLIC CAPITAL LETTER SHORT U
+    0x00f7: 0x045e,     #  CYRILLIC SMALL LETTER SHORT U
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x2219,     #  BULLET OPERATOR
+    0x00fa: 0x00b7,     #  MIDDLE DOT
+    0x00fb: 0x221a,     #  SQUARE ROOT
+    0x00fc: 0x2116,     #  NUMERO SIGN
+    0x00fd: 0x00a4,     #  CURRENCY SIGN
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\u0410'	#  0x0080 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'	#  0x0081 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'	#  0x0082 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'	#  0x0083 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'	#  0x0084 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'	#  0x0085 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'	#  0x0086 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'	#  0x0087 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'	#  0x0088 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'	#  0x0089 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'	#  0x008a -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'	#  0x008b -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'	#  0x008c -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'	#  0x008d -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'	#  0x008e -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'	#  0x008f -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'	#  0x0090 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'	#  0x0091 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'	#  0x0092 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'	#  0x0093 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'	#  0x0094 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'	#  0x0095 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'	#  0x0096 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'	#  0x0097 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'	#  0x0098 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'	#  0x0099 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'	#  0x009a -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'	#  0x009b -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'	#  0x009c -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'	#  0x009d -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'	#  0x009e -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'	#  0x009f -> CYRILLIC CAPITAL LETTER YA
-    u'\u0430'	#  0x00a0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'	#  0x00a1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'	#  0x00a2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'	#  0x00a3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'	#  0x00a4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'	#  0x00a5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'	#  0x00a6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'	#  0x00a7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'	#  0x00a8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'	#  0x00a9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'	#  0x00aa -> CYRILLIC SMALL LETTER KA
-    u'\u043b'	#  0x00ab -> CYRILLIC SMALL LETTER EL
-    u'\u043c'	#  0x00ac -> CYRILLIC SMALL LETTER EM
-    u'\u043d'	#  0x00ad -> CYRILLIC SMALL LETTER EN
-    u'\u043e'	#  0x00ae -> CYRILLIC SMALL LETTER O
-    u'\u043f'	#  0x00af -> CYRILLIC SMALL LETTER PE
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'	#  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'	#  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'	#  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'	#  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'	#  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'	#  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'	#  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'	#  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'	#  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'	#  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'	#  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'	#  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'	#  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'	#  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'	#  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'	#  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'	#  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'	#  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u0440'	#  0x00e0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'	#  0x00e1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'	#  0x00e2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'	#  0x00e3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'	#  0x00e4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'	#  0x00e5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'	#  0x00e6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'	#  0x00e7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'	#  0x00e8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'	#  0x00e9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'	#  0x00ea -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'	#  0x00eb -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'	#  0x00ec -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'	#  0x00ed -> CYRILLIC SMALL LETTER E
-    u'\u044e'	#  0x00ee -> CYRILLIC SMALL LETTER YU
-    u'\u044f'	#  0x00ef -> CYRILLIC SMALL LETTER YA
-    u'\u0401'	#  0x00f0 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0451'	#  0x00f1 -> CYRILLIC SMALL LETTER IO
-    u'\u0404'	#  0x00f2 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0454'	#  0x00f3 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0407'	#  0x00f4 -> CYRILLIC CAPITAL LETTER YI
-    u'\u0457'	#  0x00f5 -> CYRILLIC SMALL LETTER YI
-    u'\u040e'	#  0x00f6 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045e'	#  0x00f7 -> CYRILLIC SMALL LETTER SHORT U
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\u2219'	#  0x00f9 -> BULLET OPERATOR
-    u'\xb7'	#  0x00fa -> MIDDLE DOT
-    u'\u221a'	#  0x00fb -> SQUARE ROOT
-    u'\u2116'	#  0x00fc -> NUMERO SIGN
-    u'\xa4'	#  0x00fd -> CURRENCY SIGN
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\u0410'   #  0x0080 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'   #  0x0081 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0412'   #  0x0082 -> CYRILLIC CAPITAL LETTER VE
+    u'\u0413'   #  0x0083 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0414'   #  0x0084 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'   #  0x0085 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0416'   #  0x0086 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0417'   #  0x0087 -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0418'   #  0x0088 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'   #  0x0089 -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'   #  0x008a -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'   #  0x008b -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'   #  0x008c -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'   #  0x008d -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'   #  0x008e -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'   #  0x008f -> CYRILLIC CAPITAL LETTER PE
+    u'\u0420'   #  0x0090 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'   #  0x0091 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'   #  0x0092 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'   #  0x0093 -> CYRILLIC CAPITAL LETTER U
+    u'\u0424'   #  0x0094 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0425'   #  0x0095 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0426'   #  0x0096 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0427'   #  0x0097 -> CYRILLIC CAPITAL LETTER CHE
+    u'\u0428'   #  0x0098 -> CYRILLIC CAPITAL LETTER SHA
+    u'\u0429'   #  0x0099 -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u042a'   #  0x009a -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\u042b'   #  0x009b -> CYRILLIC CAPITAL LETTER YERU
+    u'\u042c'   #  0x009c -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042d'   #  0x009d -> CYRILLIC CAPITAL LETTER E
+    u'\u042e'   #  0x009e -> CYRILLIC CAPITAL LETTER YU
+    u'\u042f'   #  0x009f -> CYRILLIC CAPITAL LETTER YA
+    u'\u0430'   #  0x00a0 -> CYRILLIC SMALL LETTER A
+    u'\u0431'   #  0x00a1 -> CYRILLIC SMALL LETTER BE
+    u'\u0432'   #  0x00a2 -> CYRILLIC SMALL LETTER VE
+    u'\u0433'   #  0x00a3 -> CYRILLIC SMALL LETTER GHE
+    u'\u0434'   #  0x00a4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'   #  0x00a5 -> CYRILLIC SMALL LETTER IE
+    u'\u0436'   #  0x00a6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0437'   #  0x00a7 -> CYRILLIC SMALL LETTER ZE
+    u'\u0438'   #  0x00a8 -> CYRILLIC SMALL LETTER I
+    u'\u0439'   #  0x00a9 -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'   #  0x00aa -> CYRILLIC SMALL LETTER KA
+    u'\u043b'   #  0x00ab -> CYRILLIC SMALL LETTER EL
+    u'\u043c'   #  0x00ac -> CYRILLIC SMALL LETTER EM
+    u'\u043d'   #  0x00ad -> CYRILLIC SMALL LETTER EN
+    u'\u043e'   #  0x00ae -> CYRILLIC SMALL LETTER O
+    u'\u043f'   #  0x00af -> CYRILLIC SMALL LETTER PE
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
+    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u0440'   #  0x00e0 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'   #  0x00e1 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'   #  0x00e2 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'   #  0x00e3 -> CYRILLIC SMALL LETTER U
+    u'\u0444'   #  0x00e4 -> CYRILLIC SMALL LETTER EF
+    u'\u0445'   #  0x00e5 -> CYRILLIC SMALL LETTER HA
+    u'\u0446'   #  0x00e6 -> CYRILLIC SMALL LETTER TSE
+    u'\u0447'   #  0x00e7 -> CYRILLIC SMALL LETTER CHE
+    u'\u0448'   #  0x00e8 -> CYRILLIC SMALL LETTER SHA
+    u'\u0449'   #  0x00e9 -> CYRILLIC SMALL LETTER SHCHA
+    u'\u044a'   #  0x00ea -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u044b'   #  0x00eb -> CYRILLIC SMALL LETTER YERU
+    u'\u044c'   #  0x00ec -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044d'   #  0x00ed -> CYRILLIC SMALL LETTER E
+    u'\u044e'   #  0x00ee -> CYRILLIC SMALL LETTER YU
+    u'\u044f'   #  0x00ef -> CYRILLIC SMALL LETTER YA
+    u'\u0401'   #  0x00f0 -> CYRILLIC CAPITAL LETTER IO
+    u'\u0451'   #  0x00f1 -> CYRILLIC SMALL LETTER IO
+    u'\u0404'   #  0x00f2 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\u0454'   #  0x00f3 -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\u0407'   #  0x00f4 -> CYRILLIC CAPITAL LETTER YI
+    u'\u0457'   #  0x00f5 -> CYRILLIC SMALL LETTER YI
+    u'\u040e'   #  0x00f6 -> CYRILLIC CAPITAL LETTER SHORT U
+    u'\u045e'   #  0x00f7 -> CYRILLIC SMALL LETTER SHORT U
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
+    u'\xb7'     #  0x00fa -> MIDDLE DOT
+    u'\u221a'   #  0x00fb -> SQUARE ROOT
+    u'\u2116'   #  0x00fc -> NUMERO SIGN
+    u'\xa4'     #  0x00fd -> CURRENCY SIGN
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a4: 0x00fd,	#  CURRENCY SIGN
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b7: 0x00fa,	#  MIDDLE DOT
-    0x0401: 0x00f0,	#  CYRILLIC CAPITAL LETTER IO
-    0x0404: 0x00f2,	#  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0407: 0x00f4,	#  CYRILLIC CAPITAL LETTER YI
-    0x040e: 0x00f6,	#  CYRILLIC CAPITAL LETTER SHORT U
-    0x0410: 0x0080,	#  CYRILLIC CAPITAL LETTER A
-    0x0411: 0x0081,	#  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0x0082,	#  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0x0083,	#  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0x0084,	#  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0x0085,	#  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0x0086,	#  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0x0087,	#  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0x0088,	#  CYRILLIC CAPITAL LETTER I
-    0x0419: 0x0089,	#  CYRILLIC CAPITAL LETTER SHORT I
-    0x041a: 0x008a,	#  CYRILLIC CAPITAL LETTER KA
-    0x041b: 0x008b,	#  CYRILLIC CAPITAL LETTER EL
-    0x041c: 0x008c,	#  CYRILLIC CAPITAL LETTER EM
-    0x041d: 0x008d,	#  CYRILLIC CAPITAL LETTER EN
-    0x041e: 0x008e,	#  CYRILLIC CAPITAL LETTER O
-    0x041f: 0x008f,	#  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0x0090,	#  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0x0091,	#  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0x0092,	#  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0x0093,	#  CYRILLIC CAPITAL LETTER U
-    0x0424: 0x0094,	#  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0x0095,	#  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0x0096,	#  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0x0097,	#  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0x0098,	#  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0x0099,	#  CYRILLIC CAPITAL LETTER SHCHA
-    0x042a: 0x009a,	#  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042b: 0x009b,	#  CYRILLIC CAPITAL LETTER YERU
-    0x042c: 0x009c,	#  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042d: 0x009d,	#  CYRILLIC CAPITAL LETTER E
-    0x042e: 0x009e,	#  CYRILLIC CAPITAL LETTER YU
-    0x042f: 0x009f,	#  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0x00a0,	#  CYRILLIC SMALL LETTER A
-    0x0431: 0x00a1,	#  CYRILLIC SMALL LETTER BE
-    0x0432: 0x00a2,	#  CYRILLIC SMALL LETTER VE
-    0x0433: 0x00a3,	#  CYRILLIC SMALL LETTER GHE
-    0x0434: 0x00a4,	#  CYRILLIC SMALL LETTER DE
-    0x0435: 0x00a5,	#  CYRILLIC SMALL LETTER IE
-    0x0436: 0x00a6,	#  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0x00a7,	#  CYRILLIC SMALL LETTER ZE
-    0x0438: 0x00a8,	#  CYRILLIC SMALL LETTER I
-    0x0439: 0x00a9,	#  CYRILLIC SMALL LETTER SHORT I
-    0x043a: 0x00aa,	#  CYRILLIC SMALL LETTER KA
-    0x043b: 0x00ab,	#  CYRILLIC SMALL LETTER EL
-    0x043c: 0x00ac,	#  CYRILLIC SMALL LETTER EM
-    0x043d: 0x00ad,	#  CYRILLIC SMALL LETTER EN
-    0x043e: 0x00ae,	#  CYRILLIC SMALL LETTER O
-    0x043f: 0x00af,	#  CYRILLIC SMALL LETTER PE
-    0x0440: 0x00e0,	#  CYRILLIC SMALL LETTER ER
-    0x0441: 0x00e1,	#  CYRILLIC SMALL LETTER ES
-    0x0442: 0x00e2,	#  CYRILLIC SMALL LETTER TE
-    0x0443: 0x00e3,	#  CYRILLIC SMALL LETTER U
-    0x0444: 0x00e4,	#  CYRILLIC SMALL LETTER EF
-    0x0445: 0x00e5,	#  CYRILLIC SMALL LETTER HA
-    0x0446: 0x00e6,	#  CYRILLIC SMALL LETTER TSE
-    0x0447: 0x00e7,	#  CYRILLIC SMALL LETTER CHE
-    0x0448: 0x00e8,	#  CYRILLIC SMALL LETTER SHA
-    0x0449: 0x00e9,	#  CYRILLIC SMALL LETTER SHCHA
-    0x044a: 0x00ea,	#  CYRILLIC SMALL LETTER HARD SIGN
-    0x044b: 0x00eb,	#  CYRILLIC SMALL LETTER YERU
-    0x044c: 0x00ec,	#  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044d: 0x00ed,	#  CYRILLIC SMALL LETTER E
-    0x044e: 0x00ee,	#  CYRILLIC SMALL LETTER YU
-    0x044f: 0x00ef,	#  CYRILLIC SMALL LETTER YA
-    0x0451: 0x00f1,	#  CYRILLIC SMALL LETTER IO
-    0x0454: 0x00f3,	#  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0457: 0x00f5,	#  CYRILLIC SMALL LETTER YI
-    0x045e: 0x00f7,	#  CYRILLIC SMALL LETTER SHORT U
-    0x2116: 0x00fc,	#  NUMERO SIGN
-    0x2219: 0x00f9,	#  BULLET OPERATOR
-    0x221a: 0x00fb,	#  SQUARE ROOT
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x258c: 0x00dd,	#  LEFT HALF BLOCK
-    0x2590: 0x00de,	#  RIGHT HALF BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a4: 0x00fd,     #  CURRENCY SIGN
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b7: 0x00fa,     #  MIDDLE DOT
+    0x0401: 0x00f0,     #  CYRILLIC CAPITAL LETTER IO
+    0x0404: 0x00f2,     #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0407: 0x00f4,     #  CYRILLIC CAPITAL LETTER YI
+    0x040e: 0x00f6,     #  CYRILLIC CAPITAL LETTER SHORT U
+    0x0410: 0x0080,     #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0x0081,     #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0x0082,     #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0x0083,     #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0x0084,     #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0x0085,     #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0x0086,     #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0x0087,     #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0x0088,     #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0x0089,     #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041a: 0x008a,     #  CYRILLIC CAPITAL LETTER KA
+    0x041b: 0x008b,     #  CYRILLIC CAPITAL LETTER EL
+    0x041c: 0x008c,     #  CYRILLIC CAPITAL LETTER EM
+    0x041d: 0x008d,     #  CYRILLIC CAPITAL LETTER EN
+    0x041e: 0x008e,     #  CYRILLIC CAPITAL LETTER O
+    0x041f: 0x008f,     #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0x0090,     #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0x0091,     #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0x0092,     #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0x0093,     #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0x0094,     #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0x0095,     #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0x0096,     #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0x0097,     #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0x0098,     #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0x0099,     #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042a: 0x009a,     #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042b: 0x009b,     #  CYRILLIC CAPITAL LETTER YERU
+    0x042c: 0x009c,     #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042d: 0x009d,     #  CYRILLIC CAPITAL LETTER E
+    0x042e: 0x009e,     #  CYRILLIC CAPITAL LETTER YU
+    0x042f: 0x009f,     #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0x00a0,     #  CYRILLIC SMALL LETTER A
+    0x0431: 0x00a1,     #  CYRILLIC SMALL LETTER BE
+    0x0432: 0x00a2,     #  CYRILLIC SMALL LETTER VE
+    0x0433: 0x00a3,     #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0x00a4,     #  CYRILLIC SMALL LETTER DE
+    0x0435: 0x00a5,     #  CYRILLIC SMALL LETTER IE
+    0x0436: 0x00a6,     #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0x00a7,     #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0x00a8,     #  CYRILLIC SMALL LETTER I
+    0x0439: 0x00a9,     #  CYRILLIC SMALL LETTER SHORT I
+    0x043a: 0x00aa,     #  CYRILLIC SMALL LETTER KA
+    0x043b: 0x00ab,     #  CYRILLIC SMALL LETTER EL
+    0x043c: 0x00ac,     #  CYRILLIC SMALL LETTER EM
+    0x043d: 0x00ad,     #  CYRILLIC SMALL LETTER EN
+    0x043e: 0x00ae,     #  CYRILLIC SMALL LETTER O
+    0x043f: 0x00af,     #  CYRILLIC SMALL LETTER PE
+    0x0440: 0x00e0,     #  CYRILLIC SMALL LETTER ER
+    0x0441: 0x00e1,     #  CYRILLIC SMALL LETTER ES
+    0x0442: 0x00e2,     #  CYRILLIC SMALL LETTER TE
+    0x0443: 0x00e3,     #  CYRILLIC SMALL LETTER U
+    0x0444: 0x00e4,     #  CYRILLIC SMALL LETTER EF
+    0x0445: 0x00e5,     #  CYRILLIC SMALL LETTER HA
+    0x0446: 0x00e6,     #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0x00e7,     #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0x00e8,     #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0x00e9,     #  CYRILLIC SMALL LETTER SHCHA
+    0x044a: 0x00ea,     #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044b: 0x00eb,     #  CYRILLIC SMALL LETTER YERU
+    0x044c: 0x00ec,     #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044d: 0x00ed,     #  CYRILLIC SMALL LETTER E
+    0x044e: 0x00ee,     #  CYRILLIC SMALL LETTER YU
+    0x044f: 0x00ef,     #  CYRILLIC SMALL LETTER YA
+    0x0451: 0x00f1,     #  CYRILLIC SMALL LETTER IO
+    0x0454: 0x00f3,     #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0457: 0x00f5,     #  CYRILLIC SMALL LETTER YI
+    0x045e: 0x00f7,     #  CYRILLIC SMALL LETTER SHORT U
+    0x2116: 0x00fc,     #  NUMERO SIGN
+    0x2219: 0x00f9,     #  BULLET OPERATOR
+    0x221a: 0x00fb,     #  SQUARE ROOT
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x258c: 0x00dd,     #  LEFT HALF BLOCK
+    0x2590: 0x00de,     #  RIGHT HALF BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp869.py
==============================================================================
--- python/trunk/Lib/encodings/cp869.py	(original)
+++ python/trunk/Lib/encodings/cp869.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,645 +32,645 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: None,	#  UNDEFINED
-    0x0081: None,	#  UNDEFINED
-    0x0082: None,	#  UNDEFINED
-    0x0083: None,	#  UNDEFINED
-    0x0084: None,	#  UNDEFINED
-    0x0085: None,	#  UNDEFINED
-    0x0086: 0x0386,	#  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0087: None,	#  UNDEFINED
-    0x0088: 0x00b7,	#  MIDDLE DOT
-    0x0089: 0x00ac,	#  NOT SIGN
-    0x008a: 0x00a6,	#  BROKEN BAR
-    0x008b: 0x2018,	#  LEFT SINGLE QUOTATION MARK
-    0x008c: 0x2019,	#  RIGHT SINGLE QUOTATION MARK
-    0x008d: 0x0388,	#  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x008e: 0x2015,	#  HORIZONTAL BAR
-    0x008f: 0x0389,	#  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x0090: 0x038a,	#  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x0091: 0x03aa,	#  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x0092: 0x038c,	#  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x0093: None,	#  UNDEFINED
-    0x0094: None,	#  UNDEFINED
-    0x0095: 0x038e,	#  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x0096: 0x03ab,	#  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x0097: 0x00a9,	#  COPYRIGHT SIGN
-    0x0098: 0x038f,	#  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0099: 0x00b2,	#  SUPERSCRIPT TWO
-    0x009a: 0x00b3,	#  SUPERSCRIPT THREE
-    0x009b: 0x03ac,	#  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x009c: 0x00a3,	#  POUND SIGN
-    0x009d: 0x03ad,	#  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x009e: 0x03ae,	#  GREEK SMALL LETTER ETA WITH TONOS
-    0x009f: 0x03af,	#  GREEK SMALL LETTER IOTA WITH TONOS
-    0x00a0: 0x03ca,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x00a1: 0x0390,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x00a2: 0x03cc,	#  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x00a3: 0x03cd,	#  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x00a4: 0x0391,	#  GREEK CAPITAL LETTER ALPHA
-    0x00a5: 0x0392,	#  GREEK CAPITAL LETTER BETA
-    0x00a6: 0x0393,	#  GREEK CAPITAL LETTER GAMMA
-    0x00a7: 0x0394,	#  GREEK CAPITAL LETTER DELTA
-    0x00a8: 0x0395,	#  GREEK CAPITAL LETTER EPSILON
-    0x00a9: 0x0396,	#  GREEK CAPITAL LETTER ZETA
-    0x00aa: 0x0397,	#  GREEK CAPITAL LETTER ETA
-    0x00ab: 0x00bd,	#  VULGAR FRACTION ONE HALF
-    0x00ac: 0x0398,	#  GREEK CAPITAL LETTER THETA
-    0x00ad: 0x0399,	#  GREEK CAPITAL LETTER IOTA
-    0x00ae: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,	#  LIGHT SHADE
-    0x00b1: 0x2592,	#  MEDIUM SHADE
-    0x00b2: 0x2593,	#  DARK SHADE
-    0x00b3: 0x2502,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x039a,	#  GREEK CAPITAL LETTER KAPPA
-    0x00b6: 0x039b,	#  GREEK CAPITAL LETTER LAMDA
-    0x00b7: 0x039c,	#  GREEK CAPITAL LETTER MU
-    0x00b8: 0x039d,	#  GREEK CAPITAL LETTER NU
-    0x00b9: 0x2563,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x039e,	#  GREEK CAPITAL LETTER XI
-    0x00be: 0x039f,	#  GREEK CAPITAL LETTER OMICRON
-    0x00bf: 0x2510,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x03a0,	#  GREEK CAPITAL LETTER PI
-    0x00c7: 0x03a1,	#  GREEK CAPITAL LETTER RHO
-    0x00c8: 0x255a,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x03a3,	#  GREEK CAPITAL LETTER SIGMA
-    0x00d0: 0x03a4,	#  GREEK CAPITAL LETTER TAU
-    0x00d1: 0x03a5,	#  GREEK CAPITAL LETTER UPSILON
-    0x00d2: 0x03a6,	#  GREEK CAPITAL LETTER PHI
-    0x00d3: 0x03a7,	#  GREEK CAPITAL LETTER CHI
-    0x00d4: 0x03a8,	#  GREEK CAPITAL LETTER PSI
-    0x00d5: 0x03a9,	#  GREEK CAPITAL LETTER OMEGA
-    0x00d6: 0x03b1,	#  GREEK SMALL LETTER ALPHA
-    0x00d7: 0x03b2,	#  GREEK SMALL LETTER BETA
-    0x00d8: 0x03b3,	#  GREEK SMALL LETTER GAMMA
-    0x00d9: 0x2518,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,	#  FULL BLOCK
-    0x00dc: 0x2584,	#  LOWER HALF BLOCK
-    0x00dd: 0x03b4,	#  GREEK SMALL LETTER DELTA
-    0x00de: 0x03b5,	#  GREEK SMALL LETTER EPSILON
-    0x00df: 0x2580,	#  UPPER HALF BLOCK
-    0x00e0: 0x03b6,	#  GREEK SMALL LETTER ZETA
-    0x00e1: 0x03b7,	#  GREEK SMALL LETTER ETA
-    0x00e2: 0x03b8,	#  GREEK SMALL LETTER THETA
-    0x00e3: 0x03b9,	#  GREEK SMALL LETTER IOTA
-    0x00e4: 0x03ba,	#  GREEK SMALL LETTER KAPPA
-    0x00e5: 0x03bb,	#  GREEK SMALL LETTER LAMDA
-    0x00e6: 0x03bc,	#  GREEK SMALL LETTER MU
-    0x00e7: 0x03bd,	#  GREEK SMALL LETTER NU
-    0x00e8: 0x03be,	#  GREEK SMALL LETTER XI
-    0x00e9: 0x03bf,	#  GREEK SMALL LETTER OMICRON
-    0x00ea: 0x03c0,	#  GREEK SMALL LETTER PI
-    0x00eb: 0x03c1,	#  GREEK SMALL LETTER RHO
-    0x00ec: 0x03c3,	#  GREEK SMALL LETTER SIGMA
-    0x00ed: 0x03c2,	#  GREEK SMALL LETTER FINAL SIGMA
-    0x00ee: 0x03c4,	#  GREEK SMALL LETTER TAU
-    0x00ef: 0x0384,	#  GREEK TONOS
-    0x00f0: 0x00ad,	#  SOFT HYPHEN
-    0x00f1: 0x00b1,	#  PLUS-MINUS SIGN
-    0x00f2: 0x03c5,	#  GREEK SMALL LETTER UPSILON
-    0x00f3: 0x03c6,	#  GREEK SMALL LETTER PHI
-    0x00f4: 0x03c7,	#  GREEK SMALL LETTER CHI
-    0x00f5: 0x00a7,	#  SECTION SIGN
-    0x00f6: 0x03c8,	#  GREEK SMALL LETTER PSI
-    0x00f7: 0x0385,	#  GREEK DIALYTIKA TONOS
-    0x00f8: 0x00b0,	#  DEGREE SIGN
-    0x00f9: 0x00a8,	#  DIAERESIS
-    0x00fa: 0x03c9,	#  GREEK SMALL LETTER OMEGA
-    0x00fb: 0x03cb,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x00fc: 0x03b0,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x00fd: 0x03ce,	#  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x00fe: 0x25a0,	#  BLACK SQUARE
-    0x00ff: 0x00a0,	#  NO-BREAK SPACE
+    0x0080: None,       #  UNDEFINED
+    0x0081: None,       #  UNDEFINED
+    0x0082: None,       #  UNDEFINED
+    0x0083: None,       #  UNDEFINED
+    0x0084: None,       #  UNDEFINED
+    0x0085: None,       #  UNDEFINED
+    0x0086: 0x0386,     #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0087: None,       #  UNDEFINED
+    0x0088: 0x00b7,     #  MIDDLE DOT
+    0x0089: 0x00ac,     #  NOT SIGN
+    0x008a: 0x00a6,     #  BROKEN BAR
+    0x008b: 0x2018,     #  LEFT SINGLE QUOTATION MARK
+    0x008c: 0x2019,     #  RIGHT SINGLE QUOTATION MARK
+    0x008d: 0x0388,     #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x008e: 0x2015,     #  HORIZONTAL BAR
+    0x008f: 0x0389,     #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x0090: 0x038a,     #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x0091: 0x03aa,     #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x0092: 0x038c,     #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x0093: None,       #  UNDEFINED
+    0x0094: None,       #  UNDEFINED
+    0x0095: 0x038e,     #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x0096: 0x03ab,     #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x0097: 0x00a9,     #  COPYRIGHT SIGN
+    0x0098: 0x038f,     #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0099: 0x00b2,     #  SUPERSCRIPT TWO
+    0x009a: 0x00b3,     #  SUPERSCRIPT THREE
+    0x009b: 0x03ac,     #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x009c: 0x00a3,     #  POUND SIGN
+    0x009d: 0x03ad,     #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x009e: 0x03ae,     #  GREEK SMALL LETTER ETA WITH TONOS
+    0x009f: 0x03af,     #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x00a0: 0x03ca,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x00a1: 0x0390,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x00a2: 0x03cc,     #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x00a3: 0x03cd,     #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x00a4: 0x0391,     #  GREEK CAPITAL LETTER ALPHA
+    0x00a5: 0x0392,     #  GREEK CAPITAL LETTER BETA
+    0x00a6: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
+    0x00a7: 0x0394,     #  GREEK CAPITAL LETTER DELTA
+    0x00a8: 0x0395,     #  GREEK CAPITAL LETTER EPSILON
+    0x00a9: 0x0396,     #  GREEK CAPITAL LETTER ZETA
+    0x00aa: 0x0397,     #  GREEK CAPITAL LETTER ETA
+    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
+    0x00ac: 0x0398,     #  GREEK CAPITAL LETTER THETA
+    0x00ad: 0x0399,     #  GREEK CAPITAL LETTER IOTA
+    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00b0: 0x2591,     #  LIGHT SHADE
+    0x00b1: 0x2592,     #  MEDIUM SHADE
+    0x00b2: 0x2593,     #  DARK SHADE
+    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x00b5: 0x039a,     #  GREEK CAPITAL LETTER KAPPA
+    0x00b6: 0x039b,     #  GREEK CAPITAL LETTER LAMDA
+    0x00b7: 0x039c,     #  GREEK CAPITAL LETTER MU
+    0x00b8: 0x039d,     #  GREEK CAPITAL LETTER NU
+    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x00bd: 0x039e,     #  GREEK CAPITAL LETTER XI
+    0x00be: 0x039f,     #  GREEK CAPITAL LETTER OMICRON
+    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x00c6: 0x03a0,     #  GREEK CAPITAL LETTER PI
+    0x00c7: 0x03a1,     #  GREEK CAPITAL LETTER RHO
+    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x00cf: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
+    0x00d0: 0x03a4,     #  GREEK CAPITAL LETTER TAU
+    0x00d1: 0x03a5,     #  GREEK CAPITAL LETTER UPSILON
+    0x00d2: 0x03a6,     #  GREEK CAPITAL LETTER PHI
+    0x00d3: 0x03a7,     #  GREEK CAPITAL LETTER CHI
+    0x00d4: 0x03a8,     #  GREEK CAPITAL LETTER PSI
+    0x00d5: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
+    0x00d6: 0x03b1,     #  GREEK SMALL LETTER ALPHA
+    0x00d7: 0x03b2,     #  GREEK SMALL LETTER BETA
+    0x00d8: 0x03b3,     #  GREEK SMALL LETTER GAMMA
+    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x00db: 0x2588,     #  FULL BLOCK
+    0x00dc: 0x2584,     #  LOWER HALF BLOCK
+    0x00dd: 0x03b4,     #  GREEK SMALL LETTER DELTA
+    0x00de: 0x03b5,     #  GREEK SMALL LETTER EPSILON
+    0x00df: 0x2580,     #  UPPER HALF BLOCK
+    0x00e0: 0x03b6,     #  GREEK SMALL LETTER ZETA
+    0x00e1: 0x03b7,     #  GREEK SMALL LETTER ETA
+    0x00e2: 0x03b8,     #  GREEK SMALL LETTER THETA
+    0x00e3: 0x03b9,     #  GREEK SMALL LETTER IOTA
+    0x00e4: 0x03ba,     #  GREEK SMALL LETTER KAPPA
+    0x00e5: 0x03bb,     #  GREEK SMALL LETTER LAMDA
+    0x00e6: 0x03bc,     #  GREEK SMALL LETTER MU
+    0x00e7: 0x03bd,     #  GREEK SMALL LETTER NU
+    0x00e8: 0x03be,     #  GREEK SMALL LETTER XI
+    0x00e9: 0x03bf,     #  GREEK SMALL LETTER OMICRON
+    0x00ea: 0x03c0,     #  GREEK SMALL LETTER PI
+    0x00eb: 0x03c1,     #  GREEK SMALL LETTER RHO
+    0x00ec: 0x03c3,     #  GREEK SMALL LETTER SIGMA
+    0x00ed: 0x03c2,     #  GREEK SMALL LETTER FINAL SIGMA
+    0x00ee: 0x03c4,     #  GREEK SMALL LETTER TAU
+    0x00ef: 0x0384,     #  GREEK TONOS
+    0x00f0: 0x00ad,     #  SOFT HYPHEN
+    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
+    0x00f2: 0x03c5,     #  GREEK SMALL LETTER UPSILON
+    0x00f3: 0x03c6,     #  GREEK SMALL LETTER PHI
+    0x00f4: 0x03c7,     #  GREEK SMALL LETTER CHI
+    0x00f5: 0x00a7,     #  SECTION SIGN
+    0x00f6: 0x03c8,     #  GREEK SMALL LETTER PSI
+    0x00f7: 0x0385,     #  GREEK DIALYTIKA TONOS
+    0x00f8: 0x00b0,     #  DEGREE SIGN
+    0x00f9: 0x00a8,     #  DIAERESIS
+    0x00fa: 0x03c9,     #  GREEK SMALL LETTER OMEGA
+    0x00fb: 0x03cb,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x00fc: 0x03b0,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x00fd: 0x03ce,     #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x00fe: 0x25a0,     #  BLACK SQUARE
+    0x00ff: 0x00a0,     #  NO-BREAK SPACE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> NULL
-    u'\x01'	#  0x0001 -> START OF HEADING
-    u'\x02'	#  0x0002 -> START OF TEXT
-    u'\x03'	#  0x0003 -> END OF TEXT
-    u'\x04'	#  0x0004 -> END OF TRANSMISSION
-    u'\x05'	#  0x0005 -> ENQUIRY
-    u'\x06'	#  0x0006 -> ACKNOWLEDGE
-    u'\x07'	#  0x0007 -> BELL
-    u'\x08'	#  0x0008 -> BACKSPACE
-    u'\t'	#  0x0009 -> HORIZONTAL TABULATION
-    u'\n'	#  0x000a -> LINE FEED
-    u'\x0b'	#  0x000b -> VERTICAL TABULATION
-    u'\x0c'	#  0x000c -> FORM FEED
-    u'\r'	#  0x000d -> CARRIAGE RETURN
-    u'\x0e'	#  0x000e -> SHIFT OUT
-    u'\x0f'	#  0x000f -> SHIFT IN
-    u'\x10'	#  0x0010 -> DATA LINK ESCAPE
-    u'\x11'	#  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x0018 -> CANCEL
-    u'\x19'	#  0x0019 -> END OF MEDIUM
-    u'\x1a'	#  0x001a -> SUBSTITUTE
-    u'\x1b'	#  0x001b -> ESCAPE
-    u'\x1c'	#  0x001c -> FILE SEPARATOR
-    u'\x1d'	#  0x001d -> GROUP SEPARATOR
-    u'\x1e'	#  0x001e -> RECORD SEPARATOR
-    u'\x1f'	#  0x001f -> UNIT SEPARATOR
-    u' '	#  0x0020 -> SPACE
-    u'!'	#  0x0021 -> EXCLAMATION MARK
-    u'"'	#  0x0022 -> QUOTATION MARK
-    u'#'	#  0x0023 -> NUMBER SIGN
-    u'$'	#  0x0024 -> DOLLAR SIGN
-    u'%'	#  0x0025 -> PERCENT SIGN
-    u'&'	#  0x0026 -> AMPERSAND
-    u"'"	#  0x0027 -> APOSTROPHE
-    u'('	#  0x0028 -> LEFT PARENTHESIS
-    u')'	#  0x0029 -> RIGHT PARENTHESIS
-    u'*'	#  0x002a -> ASTERISK
-    u'+'	#  0x002b -> PLUS SIGN
-    u','	#  0x002c -> COMMA
-    u'-'	#  0x002d -> HYPHEN-MINUS
-    u'.'	#  0x002e -> FULL STOP
-    u'/'	#  0x002f -> SOLIDUS
-    u'0'	#  0x0030 -> DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE
-    u':'	#  0x003a -> COLON
-    u';'	#  0x003b -> SEMICOLON
-    u'<'	#  0x003c -> LESS-THAN SIGN
-    u'='	#  0x003d -> EQUALS SIGN
-    u'>'	#  0x003e -> GREATER-THAN SIGN
-    u'?'	#  0x003f -> QUESTION MARK
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET
-    u'\\'	#  0x005c -> REVERSE SOLIDUS
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT
-    u'_'	#  0x005f -> LOW LINE
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET
-    u'|'	#  0x007c -> VERTICAL LINE
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> DELETE
-    u'\ufffe'	#  0x0080 -> UNDEFINED
-    u'\ufffe'	#  0x0081 -> UNDEFINED
-    u'\ufffe'	#  0x0082 -> UNDEFINED
-    u'\ufffe'	#  0x0083 -> UNDEFINED
-    u'\ufffe'	#  0x0084 -> UNDEFINED
-    u'\ufffe'	#  0x0085 -> UNDEFINED
-    u'\u0386'	#  0x0086 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\ufffe'	#  0x0087 -> UNDEFINED
-    u'\xb7'	#  0x0088 -> MIDDLE DOT
-    u'\xac'	#  0x0089 -> NOT SIGN
-    u'\xa6'	#  0x008a -> BROKEN BAR
-    u'\u2018'	#  0x008b -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x008c -> RIGHT SINGLE QUOTATION MARK
-    u'\u0388'	#  0x008d -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u2015'	#  0x008e -> HORIZONTAL BAR
-    u'\u0389'	#  0x008f -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'	#  0x0090 -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\u03aa'	#  0x0091 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u038c'	#  0x0092 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\ufffe'	#  0x0093 -> UNDEFINED
-    u'\ufffe'	#  0x0094 -> UNDEFINED
-    u'\u038e'	#  0x0095 -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u03ab'	#  0x0096 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\xa9'	#  0x0097 -> COPYRIGHT SIGN
-    u'\u038f'	#  0x0098 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\xb2'	#  0x0099 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0x009a -> SUPERSCRIPT THREE
-    u'\u03ac'	#  0x009b -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\xa3'	#  0x009c -> POUND SIGN
-    u'\u03ad'	#  0x009d -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'	#  0x009e -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'	#  0x009f -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03ca'	#  0x00a0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u0390'	#  0x00a1 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u03cc'	#  0x00a2 -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'	#  0x00a3 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u0391'	#  0x00a4 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'	#  0x00a5 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'	#  0x00a6 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'	#  0x00a7 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'	#  0x00a8 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'	#  0x00a9 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'	#  0x00aa -> GREEK CAPITAL LETTER ETA
-    u'\xbd'	#  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\u0398'	#  0x00ac -> GREEK CAPITAL LETTER THETA
-    u'\u0399'	#  0x00ad -> GREEK CAPITAL LETTER IOTA
-    u'\xab'	#  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'	#  0x00b0 -> LIGHT SHADE
-    u'\u2592'	#  0x00b1 -> MEDIUM SHADE
-    u'\u2593'	#  0x00b2 -> DARK SHADE
-    u'\u2502'	#  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'	#  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u039a'	#  0x00b5 -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'	#  0x00b6 -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'	#  0x00b7 -> GREEK CAPITAL LETTER MU
-    u'\u039d'	#  0x00b8 -> GREEK CAPITAL LETTER NU
-    u'\u2563'	#  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'	#  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'	#  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'	#  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u039e'	#  0x00bd -> GREEK CAPITAL LETTER XI
-    u'\u039f'	#  0x00be -> GREEK CAPITAL LETTER OMICRON
-    u'\u2510'	#  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'	#  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'	#  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'	#  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'	#  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'	#  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u03a0'	#  0x00c6 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'	#  0x00c7 -> GREEK CAPITAL LETTER RHO
-    u'\u255a'	#  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'	#  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'	#  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'	#  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'	#  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'	#  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'	#  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u03a3'	#  0x00cf -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'	#  0x00d0 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'	#  0x00d1 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'	#  0x00d2 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'	#  0x00d3 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'	#  0x00d4 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'	#  0x00d5 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b1'	#  0x00d6 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'	#  0x00d7 -> GREEK SMALL LETTER BETA
-    u'\u03b3'	#  0x00d8 -> GREEK SMALL LETTER GAMMA
-    u'\u2518'	#  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'	#  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'	#  0x00db -> FULL BLOCK
-    u'\u2584'	#  0x00dc -> LOWER HALF BLOCK
-    u'\u03b4'	#  0x00dd -> GREEK SMALL LETTER DELTA
-    u'\u03b5'	#  0x00de -> GREEK SMALL LETTER EPSILON
-    u'\u2580'	#  0x00df -> UPPER HALF BLOCK
-    u'\u03b6'	#  0x00e0 -> GREEK SMALL LETTER ZETA
-    u'\u03b7'	#  0x00e1 -> GREEK SMALL LETTER ETA
-    u'\u03b8'	#  0x00e2 -> GREEK SMALL LETTER THETA
-    u'\u03b9'	#  0x00e3 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'	#  0x00e4 -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'	#  0x00e5 -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'	#  0x00e6 -> GREEK SMALL LETTER MU
-    u'\u03bd'	#  0x00e7 -> GREEK SMALL LETTER NU
-    u'\u03be'	#  0x00e8 -> GREEK SMALL LETTER XI
-    u'\u03bf'	#  0x00e9 -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'	#  0x00ea -> GREEK SMALL LETTER PI
-    u'\u03c1'	#  0x00eb -> GREEK SMALL LETTER RHO
-    u'\u03c3'	#  0x00ec -> GREEK SMALL LETTER SIGMA
-    u'\u03c2'	#  0x00ed -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c4'	#  0x00ee -> GREEK SMALL LETTER TAU
-    u'\u0384'	#  0x00ef -> GREEK TONOS
-    u'\xad'	#  0x00f0 -> SOFT HYPHEN
-    u'\xb1'	#  0x00f1 -> PLUS-MINUS SIGN
-    u'\u03c5'	#  0x00f2 -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'	#  0x00f3 -> GREEK SMALL LETTER PHI
-    u'\u03c7'	#  0x00f4 -> GREEK SMALL LETTER CHI
-    u'\xa7'	#  0x00f5 -> SECTION SIGN
-    u'\u03c8'	#  0x00f6 -> GREEK SMALL LETTER PSI
-    u'\u0385'	#  0x00f7 -> GREEK DIALYTIKA TONOS
-    u'\xb0'	#  0x00f8 -> DEGREE SIGN
-    u'\xa8'	#  0x00f9 -> DIAERESIS
-    u'\u03c9'	#  0x00fa -> GREEK SMALL LETTER OMEGA
-    u'\u03cb'	#  0x00fb -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03b0'	#  0x00fc -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u03ce'	#  0x00fd -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u25a0'	#  0x00fe -> BLACK SQUARE
-    u'\xa0'	#  0x00ff -> NO-BREAK SPACE
+    u'\x00'     #  0x0000 -> NULL
+    u'\x01'     #  0x0001 -> START OF HEADING
+    u'\x02'     #  0x0002 -> START OF TEXT
+    u'\x03'     #  0x0003 -> END OF TEXT
+    u'\x04'     #  0x0004 -> END OF TRANSMISSION
+    u'\x05'     #  0x0005 -> ENQUIRY
+    u'\x06'     #  0x0006 -> ACKNOWLEDGE
+    u'\x07'     #  0x0007 -> BELL
+    u'\x08'     #  0x0008 -> BACKSPACE
+    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
+    u'\n'       #  0x000a -> LINE FEED
+    u'\x0b'     #  0x000b -> VERTICAL TABULATION
+    u'\x0c'     #  0x000c -> FORM FEED
+    u'\r'       #  0x000d -> CARRIAGE RETURN
+    u'\x0e'     #  0x000e -> SHIFT OUT
+    u'\x0f'     #  0x000f -> SHIFT IN
+    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
+    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x0018 -> CANCEL
+    u'\x19'     #  0x0019 -> END OF MEDIUM
+    u'\x1a'     #  0x001a -> SUBSTITUTE
+    u'\x1b'     #  0x001b -> ESCAPE
+    u'\x1c'     #  0x001c -> FILE SEPARATOR
+    u'\x1d'     #  0x001d -> GROUP SEPARATOR
+    u'\x1e'     #  0x001e -> RECORD SEPARATOR
+    u'\x1f'     #  0x001f -> UNIT SEPARATOR
+    u' '        #  0x0020 -> SPACE
+    u'!'        #  0x0021 -> EXCLAMATION MARK
+    u'"'        #  0x0022 -> QUOTATION MARK
+    u'#'        #  0x0023 -> NUMBER SIGN
+    u'$'        #  0x0024 -> DOLLAR SIGN
+    u'%'        #  0x0025 -> PERCENT SIGN
+    u'&'        #  0x0026 -> AMPERSAND
+    u"'"        #  0x0027 -> APOSTROPHE
+    u'('        #  0x0028 -> LEFT PARENTHESIS
+    u')'        #  0x0029 -> RIGHT PARENTHESIS
+    u'*'        #  0x002a -> ASTERISK
+    u'+'        #  0x002b -> PLUS SIGN
+    u','        #  0x002c -> COMMA
+    u'-'        #  0x002d -> HYPHEN-MINUS
+    u'.'        #  0x002e -> FULL STOP
+    u'/'        #  0x002f -> SOLIDUS
+    u'0'        #  0x0030 -> DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE
+    u':'        #  0x003a -> COLON
+    u';'        #  0x003b -> SEMICOLON
+    u'<'        #  0x003c -> LESS-THAN SIGN
+    u'='        #  0x003d -> EQUALS SIGN
+    u'>'        #  0x003e -> GREATER-THAN SIGN
+    u'?'        #  0x003f -> QUESTION MARK
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET
+    u'\\'       #  0x005c -> REVERSE SOLIDUS
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
+    u'_'        #  0x005f -> LOW LINE
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET
+    u'|'        #  0x007c -> VERTICAL LINE
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> DELETE
+    u'\ufffe'   #  0x0080 -> UNDEFINED
+    u'\ufffe'   #  0x0081 -> UNDEFINED
+    u'\ufffe'   #  0x0082 -> UNDEFINED
+    u'\ufffe'   #  0x0083 -> UNDEFINED
+    u'\ufffe'   #  0x0084 -> UNDEFINED
+    u'\ufffe'   #  0x0085 -> UNDEFINED
+    u'\u0386'   #  0x0086 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
+    u'\ufffe'   #  0x0087 -> UNDEFINED
+    u'\xb7'     #  0x0088 -> MIDDLE DOT
+    u'\xac'     #  0x0089 -> NOT SIGN
+    u'\xa6'     #  0x008a -> BROKEN BAR
+    u'\u2018'   #  0x008b -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x008c -> RIGHT SINGLE QUOTATION MARK
+    u'\u0388'   #  0x008d -> GREEK CAPITAL LETTER EPSILON WITH TONOS
+    u'\u2015'   #  0x008e -> HORIZONTAL BAR
+    u'\u0389'   #  0x008f -> GREEK CAPITAL LETTER ETA WITH TONOS
+    u'\u038a'   #  0x0090 -> GREEK CAPITAL LETTER IOTA WITH TONOS
+    u'\u03aa'   #  0x0091 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    u'\u038c'   #  0x0092 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
+    u'\ufffe'   #  0x0093 -> UNDEFINED
+    u'\ufffe'   #  0x0094 -> UNDEFINED
+    u'\u038e'   #  0x0095 -> GREEK CAPITAL LETTER UPSILON WITH TONOS
+    u'\u03ab'   #  0x0096 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    u'\xa9'     #  0x0097 -> COPYRIGHT SIGN
+    u'\u038f'   #  0x0098 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
+    u'\xb2'     #  0x0099 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0x009a -> SUPERSCRIPT THREE
+    u'\u03ac'   #  0x009b -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\xa3'     #  0x009c -> POUND SIGN
+    u'\u03ad'   #  0x009d -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'   #  0x009e -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03af'   #  0x009f -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03ca'   #  0x00a0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u0390'   #  0x00a1 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    u'\u03cc'   #  0x00a2 -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u03cd'   #  0x00a3 -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u0391'   #  0x00a4 -> GREEK CAPITAL LETTER ALPHA
+    u'\u0392'   #  0x00a5 -> GREEK CAPITAL LETTER BETA
+    u'\u0393'   #  0x00a6 -> GREEK CAPITAL LETTER GAMMA
+    u'\u0394'   #  0x00a7 -> GREEK CAPITAL LETTER DELTA
+    u'\u0395'   #  0x00a8 -> GREEK CAPITAL LETTER EPSILON
+    u'\u0396'   #  0x00a9 -> GREEK CAPITAL LETTER ZETA
+    u'\u0397'   #  0x00aa -> GREEK CAPITAL LETTER ETA
+    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
+    u'\u0398'   #  0x00ac -> GREEK CAPITAL LETTER THETA
+    u'\u0399'   #  0x00ad -> GREEK CAPITAL LETTER IOTA
+    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2591'   #  0x00b0 -> LIGHT SHADE
+    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
+    u'\u2593'   #  0x00b2 -> DARK SHADE
+    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u039a'   #  0x00b5 -> GREEK CAPITAL LETTER KAPPA
+    u'\u039b'   #  0x00b6 -> GREEK CAPITAL LETTER LAMDA
+    u'\u039c'   #  0x00b7 -> GREEK CAPITAL LETTER MU
+    u'\u039d'   #  0x00b8 -> GREEK CAPITAL LETTER NU
+    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u039e'   #  0x00bd -> GREEK CAPITAL LETTER XI
+    u'\u039f'   #  0x00be -> GREEK CAPITAL LETTER OMICRON
+    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u03a0'   #  0x00c6 -> GREEK CAPITAL LETTER PI
+    u'\u03a1'   #  0x00c7 -> GREEK CAPITAL LETTER RHO
+    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\u03a3'   #  0x00cf -> GREEK CAPITAL LETTER SIGMA
+    u'\u03a4'   #  0x00d0 -> GREEK CAPITAL LETTER TAU
+    u'\u03a5'   #  0x00d1 -> GREEK CAPITAL LETTER UPSILON
+    u'\u03a6'   #  0x00d2 -> GREEK CAPITAL LETTER PHI
+    u'\u03a7'   #  0x00d3 -> GREEK CAPITAL LETTER CHI
+    u'\u03a8'   #  0x00d4 -> GREEK CAPITAL LETTER PSI
+    u'\u03a9'   #  0x00d5 -> GREEK CAPITAL LETTER OMEGA
+    u'\u03b1'   #  0x00d6 -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'   #  0x00d7 -> GREEK SMALL LETTER BETA
+    u'\u03b3'   #  0x00d8 -> GREEK SMALL LETTER GAMMA
+    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2588'   #  0x00db -> FULL BLOCK
+    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
+    u'\u03b4'   #  0x00dd -> GREEK SMALL LETTER DELTA
+    u'\u03b5'   #  0x00de -> GREEK SMALL LETTER EPSILON
+    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
+    u'\u03b6'   #  0x00e0 -> GREEK SMALL LETTER ZETA
+    u'\u03b7'   #  0x00e1 -> GREEK SMALL LETTER ETA
+    u'\u03b8'   #  0x00e2 -> GREEK SMALL LETTER THETA
+    u'\u03b9'   #  0x00e3 -> GREEK SMALL LETTER IOTA
+    u'\u03ba'   #  0x00e4 -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'   #  0x00e5 -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'   #  0x00e6 -> GREEK SMALL LETTER MU
+    u'\u03bd'   #  0x00e7 -> GREEK SMALL LETTER NU
+    u'\u03be'   #  0x00e8 -> GREEK SMALL LETTER XI
+    u'\u03bf'   #  0x00e9 -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'   #  0x00ea -> GREEK SMALL LETTER PI
+    u'\u03c1'   #  0x00eb -> GREEK SMALL LETTER RHO
+    u'\u03c3'   #  0x00ec -> GREEK SMALL LETTER SIGMA
+    u'\u03c2'   #  0x00ed -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c4'   #  0x00ee -> GREEK SMALL LETTER TAU
+    u'\u0384'   #  0x00ef -> GREEK TONOS
+    u'\xad'     #  0x00f0 -> SOFT HYPHEN
+    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
+    u'\u03c5'   #  0x00f2 -> GREEK SMALL LETTER UPSILON
+    u'\u03c6'   #  0x00f3 -> GREEK SMALL LETTER PHI
+    u'\u03c7'   #  0x00f4 -> GREEK SMALL LETTER CHI
+    u'\xa7'     #  0x00f5 -> SECTION SIGN
+    u'\u03c8'   #  0x00f6 -> GREEK SMALL LETTER PSI
+    u'\u0385'   #  0x00f7 -> GREEK DIALYTIKA TONOS
+    u'\xb0'     #  0x00f8 -> DEGREE SIGN
+    u'\xa8'     #  0x00f9 -> DIAERESIS
+    u'\u03c9'   #  0x00fa -> GREEK SMALL LETTER OMEGA
+    u'\u03cb'   #  0x00fb -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u03b0'   #  0x00fc -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    u'\u03ce'   #  0x00fd -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\u25a0'   #  0x00fe -> BLACK SQUARE
+    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  NULL
-    0x0001: 0x0001,	#  START OF HEADING
-    0x0002: 0x0002,	#  START OF TEXT
-    0x0003: 0x0003,	#  END OF TEXT
-    0x0004: 0x0004,	#  END OF TRANSMISSION
-    0x0005: 0x0005,	#  ENQUIRY
-    0x0006: 0x0006,	#  ACKNOWLEDGE
-    0x0007: 0x0007,	#  BELL
-    0x0008: 0x0008,	#  BACKSPACE
-    0x0009: 0x0009,	#  HORIZONTAL TABULATION
-    0x000a: 0x000a,	#  LINE FEED
-    0x000b: 0x000b,	#  VERTICAL TABULATION
-    0x000c: 0x000c,	#  FORM FEED
-    0x000d: 0x000d,	#  CARRIAGE RETURN
-    0x000e: 0x000e,	#  SHIFT OUT
-    0x000f: 0x000f,	#  SHIFT IN
-    0x0010: 0x0010,	#  DATA LINK ESCAPE
-    0x0011: 0x0011,	#  DEVICE CONTROL ONE
-    0x0012: 0x0012,	#  DEVICE CONTROL TWO
-    0x0013: 0x0013,	#  DEVICE CONTROL THREE
-    0x0014: 0x0014,	#  DEVICE CONTROL FOUR
-    0x0015: 0x0015,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,	#  SYNCHRONOUS IDLE
-    0x0017: 0x0017,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,	#  CANCEL
-    0x0019: 0x0019,	#  END OF MEDIUM
-    0x001a: 0x001a,	#  SUBSTITUTE
-    0x001b: 0x001b,	#  ESCAPE
-    0x001c: 0x001c,	#  FILE SEPARATOR
-    0x001d: 0x001d,	#  GROUP SEPARATOR
-    0x001e: 0x001e,	#  RECORD SEPARATOR
-    0x001f: 0x001f,	#  UNIT SEPARATOR
-    0x0020: 0x0020,	#  SPACE
-    0x0021: 0x0021,	#  EXCLAMATION MARK
-    0x0022: 0x0022,	#  QUOTATION MARK
-    0x0023: 0x0023,	#  NUMBER SIGN
-    0x0024: 0x0024,	#  DOLLAR SIGN
-    0x0025: 0x0025,	#  PERCENT SIGN
-    0x0026: 0x0026,	#  AMPERSAND
-    0x0027: 0x0027,	#  APOSTROPHE
-    0x0028: 0x0028,	#  LEFT PARENTHESIS
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS
-    0x002a: 0x002a,	#  ASTERISK
-    0x002b: 0x002b,	#  PLUS SIGN
-    0x002c: 0x002c,	#  COMMA
-    0x002d: 0x002d,	#  HYPHEN-MINUS
-    0x002e: 0x002e,	#  FULL STOP
-    0x002f: 0x002f,	#  SOLIDUS
-    0x0030: 0x0030,	#  DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE
-    0x003a: 0x003a,	#  COLON
-    0x003b: 0x003b,	#  SEMICOLON
-    0x003c: 0x003c,	#  LESS-THAN SIGN
-    0x003d: 0x003d,	#  EQUALS SIGN
-    0x003e: 0x003e,	#  GREATER-THAN SIGN
-    0x003f: 0x003f,	#  QUESTION MARK
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET
-    0x005c: 0x005c,	#  REVERSE SOLIDUS
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,	#  LOW LINE
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET
-    0x007c: 0x007c,	#  VERTICAL LINE
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  DELETE
-    0x00a0: 0x00ff,	#  NO-BREAK SPACE
-    0x00a3: 0x009c,	#  POUND SIGN
-    0x00a6: 0x008a,	#  BROKEN BAR
-    0x00a7: 0x00f5,	#  SECTION SIGN
-    0x00a8: 0x00f9,	#  DIAERESIS
-    0x00a9: 0x0097,	#  COPYRIGHT SIGN
-    0x00ab: 0x00ae,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x0089,	#  NOT SIGN
-    0x00ad: 0x00f0,	#  SOFT HYPHEN
-    0x00b0: 0x00f8,	#  DEGREE SIGN
-    0x00b1: 0x00f1,	#  PLUS-MINUS SIGN
-    0x00b2: 0x0099,	#  SUPERSCRIPT TWO
-    0x00b3: 0x009a,	#  SUPERSCRIPT THREE
-    0x00b7: 0x0088,	#  MIDDLE DOT
-    0x00bb: 0x00af,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bd: 0x00ab,	#  VULGAR FRACTION ONE HALF
-    0x0384: 0x00ef,	#  GREEK TONOS
-    0x0385: 0x00f7,	#  GREEK DIALYTIKA TONOS
-    0x0386: 0x0086,	#  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0x008d,	#  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0x008f,	#  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038a: 0x0090,	#  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038c: 0x0092,	#  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038e: 0x0095,	#  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038f: 0x0098,	#  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0x00a1,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x0391: 0x00a4,	#  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0x00a5,	#  GREEK CAPITAL LETTER BETA
-    0x0393: 0x00a6,	#  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0x00a7,	#  GREEK CAPITAL LETTER DELTA
-    0x0395: 0x00a8,	#  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0x00a9,	#  GREEK CAPITAL LETTER ZETA
-    0x0397: 0x00aa,	#  GREEK CAPITAL LETTER ETA
-    0x0398: 0x00ac,	#  GREEK CAPITAL LETTER THETA
-    0x0399: 0x00ad,	#  GREEK CAPITAL LETTER IOTA
-    0x039a: 0x00b5,	#  GREEK CAPITAL LETTER KAPPA
-    0x039b: 0x00b6,	#  GREEK CAPITAL LETTER LAMDA
-    0x039c: 0x00b7,	#  GREEK CAPITAL LETTER MU
-    0x039d: 0x00b8,	#  GREEK CAPITAL LETTER NU
-    0x039e: 0x00bd,	#  GREEK CAPITAL LETTER XI
-    0x039f: 0x00be,	#  GREEK CAPITAL LETTER OMICRON
-    0x03a0: 0x00c6,	#  GREEK CAPITAL LETTER PI
-    0x03a1: 0x00c7,	#  GREEK CAPITAL LETTER RHO
-    0x03a3: 0x00cf,	#  GREEK CAPITAL LETTER SIGMA
-    0x03a4: 0x00d0,	#  GREEK CAPITAL LETTER TAU
-    0x03a5: 0x00d1,	#  GREEK CAPITAL LETTER UPSILON
-    0x03a6: 0x00d2,	#  GREEK CAPITAL LETTER PHI
-    0x03a7: 0x00d3,	#  GREEK CAPITAL LETTER CHI
-    0x03a8: 0x00d4,	#  GREEK CAPITAL LETTER PSI
-    0x03a9: 0x00d5,	#  GREEK CAPITAL LETTER OMEGA
-    0x03aa: 0x0091,	#  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03ab: 0x0096,	#  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03ac: 0x009b,	#  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03ad: 0x009d,	#  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03ae: 0x009e,	#  GREEK SMALL LETTER ETA WITH TONOS
-    0x03af: 0x009f,	#  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03b0: 0x00fc,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03b1: 0x00d6,	#  GREEK SMALL LETTER ALPHA
-    0x03b2: 0x00d7,	#  GREEK SMALL LETTER BETA
-    0x03b3: 0x00d8,	#  GREEK SMALL LETTER GAMMA
-    0x03b4: 0x00dd,	#  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00de,	#  GREEK SMALL LETTER EPSILON
-    0x03b6: 0x00e0,	#  GREEK SMALL LETTER ZETA
-    0x03b7: 0x00e1,	#  GREEK SMALL LETTER ETA
-    0x03b8: 0x00e2,	#  GREEK SMALL LETTER THETA
-    0x03b9: 0x00e3,	#  GREEK SMALL LETTER IOTA
-    0x03ba: 0x00e4,	#  GREEK SMALL LETTER KAPPA
-    0x03bb: 0x00e5,	#  GREEK SMALL LETTER LAMDA
-    0x03bc: 0x00e6,	#  GREEK SMALL LETTER MU
-    0x03bd: 0x00e7,	#  GREEK SMALL LETTER NU
-    0x03be: 0x00e8,	#  GREEK SMALL LETTER XI
-    0x03bf: 0x00e9,	#  GREEK SMALL LETTER OMICRON
-    0x03c0: 0x00ea,	#  GREEK SMALL LETTER PI
-    0x03c1: 0x00eb,	#  GREEK SMALL LETTER RHO
-    0x03c2: 0x00ed,	#  GREEK SMALL LETTER FINAL SIGMA
-    0x03c3: 0x00ec,	#  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00ee,	#  GREEK SMALL LETTER TAU
-    0x03c5: 0x00f2,	#  GREEK SMALL LETTER UPSILON
-    0x03c6: 0x00f3,	#  GREEK SMALL LETTER PHI
-    0x03c7: 0x00f4,	#  GREEK SMALL LETTER CHI
-    0x03c8: 0x00f6,	#  GREEK SMALL LETTER PSI
-    0x03c9: 0x00fa,	#  GREEK SMALL LETTER OMEGA
-    0x03ca: 0x00a0,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03cb: 0x00fb,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03cc: 0x00a2,	#  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03cd: 0x00a3,	#  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03ce: 0x00fd,	#  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x2015: 0x008e,	#  HORIZONTAL BAR
-    0x2018: 0x008b,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x008c,	#  RIGHT SINGLE QUOTATION MARK
-    0x2500: 0x00c4,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,	#  UPPER HALF BLOCK
-    0x2584: 0x00dc,	#  LOWER HALF BLOCK
-    0x2588: 0x00db,	#  FULL BLOCK
-    0x2591: 0x00b0,	#  LIGHT SHADE
-    0x2592: 0x00b1,	#  MEDIUM SHADE
-    0x2593: 0x00b2,	#  DARK SHADE
-    0x25a0: 0x00fe,	#  BLACK SQUARE
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  NULL
+    0x0001: 0x0001,     #  START OF HEADING
+    0x0002: 0x0002,     #  START OF TEXT
+    0x0003: 0x0003,     #  END OF TEXT
+    0x0004: 0x0004,     #  END OF TRANSMISSION
+    0x0005: 0x0005,     #  ENQUIRY
+    0x0006: 0x0006,     #  ACKNOWLEDGE
+    0x0007: 0x0007,     #  BELL
+    0x0008: 0x0008,     #  BACKSPACE
+    0x0009: 0x0009,     #  HORIZONTAL TABULATION
+    0x000a: 0x000a,     #  LINE FEED
+    0x000b: 0x000b,     #  VERTICAL TABULATION
+    0x000c: 0x000c,     #  FORM FEED
+    0x000d: 0x000d,     #  CARRIAGE RETURN
+    0x000e: 0x000e,     #  SHIFT OUT
+    0x000f: 0x000f,     #  SHIFT IN
+    0x0010: 0x0010,     #  DATA LINK ESCAPE
+    0x0011: 0x0011,     #  DEVICE CONTROL ONE
+    0x0012: 0x0012,     #  DEVICE CONTROL TWO
+    0x0013: 0x0013,     #  DEVICE CONTROL THREE
+    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
+    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
+    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
+    0x0018: 0x0018,     #  CANCEL
+    0x0019: 0x0019,     #  END OF MEDIUM
+    0x001a: 0x001a,     #  SUBSTITUTE
+    0x001b: 0x001b,     #  ESCAPE
+    0x001c: 0x001c,     #  FILE SEPARATOR
+    0x001d: 0x001d,     #  GROUP SEPARATOR
+    0x001e: 0x001e,     #  RECORD SEPARATOR
+    0x001f: 0x001f,     #  UNIT SEPARATOR
+    0x0020: 0x0020,     #  SPACE
+    0x0021: 0x0021,     #  EXCLAMATION MARK
+    0x0022: 0x0022,     #  QUOTATION MARK
+    0x0023: 0x0023,     #  NUMBER SIGN
+    0x0024: 0x0024,     #  DOLLAR SIGN
+    0x0025: 0x0025,     #  PERCENT SIGN
+    0x0026: 0x0026,     #  AMPERSAND
+    0x0027: 0x0027,     #  APOSTROPHE
+    0x0028: 0x0028,     #  LEFT PARENTHESIS
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS
+    0x002a: 0x002a,     #  ASTERISK
+    0x002b: 0x002b,     #  PLUS SIGN
+    0x002c: 0x002c,     #  COMMA
+    0x002d: 0x002d,     #  HYPHEN-MINUS
+    0x002e: 0x002e,     #  FULL STOP
+    0x002f: 0x002f,     #  SOLIDUS
+    0x0030: 0x0030,     #  DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE
+    0x003a: 0x003a,     #  COLON
+    0x003b: 0x003b,     #  SEMICOLON
+    0x003c: 0x003c,     #  LESS-THAN SIGN
+    0x003d: 0x003d,     #  EQUALS SIGN
+    0x003e: 0x003e,     #  GREATER-THAN SIGN
+    0x003f: 0x003f,     #  QUESTION MARK
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
+    0x005c: 0x005c,     #  REVERSE SOLIDUS
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
+    0x005f: 0x005f,     #  LOW LINE
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET
+    0x007c: 0x007c,     #  VERTICAL LINE
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  DELETE
+    0x00a0: 0x00ff,     #  NO-BREAK SPACE
+    0x00a3: 0x009c,     #  POUND SIGN
+    0x00a6: 0x008a,     #  BROKEN BAR
+    0x00a7: 0x00f5,     #  SECTION SIGN
+    0x00a8: 0x00f9,     #  DIAERESIS
+    0x00a9: 0x0097,     #  COPYRIGHT SIGN
+    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00ac: 0x0089,     #  NOT SIGN
+    0x00ad: 0x00f0,     #  SOFT HYPHEN
+    0x00b0: 0x00f8,     #  DEGREE SIGN
+    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
+    0x00b2: 0x0099,     #  SUPERSCRIPT TWO
+    0x00b3: 0x009a,     #  SUPERSCRIPT THREE
+    0x00b7: 0x0088,     #  MIDDLE DOT
+    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
+    0x0384: 0x00ef,     #  GREEK TONOS
+    0x0385: 0x00f7,     #  GREEK DIALYTIKA TONOS
+    0x0386: 0x0086,     #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0388: 0x008d,     #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x0389: 0x008f,     #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x038a: 0x0090,     #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038c: 0x0092,     #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038e: 0x0095,     #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038f: 0x0098,     #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0390: 0x00a1,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x0391: 0x00a4,     #  GREEK CAPITAL LETTER ALPHA
+    0x0392: 0x00a5,     #  GREEK CAPITAL LETTER BETA
+    0x0393: 0x00a6,     #  GREEK CAPITAL LETTER GAMMA
+    0x0394: 0x00a7,     #  GREEK CAPITAL LETTER DELTA
+    0x0395: 0x00a8,     #  GREEK CAPITAL LETTER EPSILON
+    0x0396: 0x00a9,     #  GREEK CAPITAL LETTER ZETA
+    0x0397: 0x00aa,     #  GREEK CAPITAL LETTER ETA
+    0x0398: 0x00ac,     #  GREEK CAPITAL LETTER THETA
+    0x0399: 0x00ad,     #  GREEK CAPITAL LETTER IOTA
+    0x039a: 0x00b5,     #  GREEK CAPITAL LETTER KAPPA
+    0x039b: 0x00b6,     #  GREEK CAPITAL LETTER LAMDA
+    0x039c: 0x00b7,     #  GREEK CAPITAL LETTER MU
+    0x039d: 0x00b8,     #  GREEK CAPITAL LETTER NU
+    0x039e: 0x00bd,     #  GREEK CAPITAL LETTER XI
+    0x039f: 0x00be,     #  GREEK CAPITAL LETTER OMICRON
+    0x03a0: 0x00c6,     #  GREEK CAPITAL LETTER PI
+    0x03a1: 0x00c7,     #  GREEK CAPITAL LETTER RHO
+    0x03a3: 0x00cf,     #  GREEK CAPITAL LETTER SIGMA
+    0x03a4: 0x00d0,     #  GREEK CAPITAL LETTER TAU
+    0x03a5: 0x00d1,     #  GREEK CAPITAL LETTER UPSILON
+    0x03a6: 0x00d2,     #  GREEK CAPITAL LETTER PHI
+    0x03a7: 0x00d3,     #  GREEK CAPITAL LETTER CHI
+    0x03a8: 0x00d4,     #  GREEK CAPITAL LETTER PSI
+    0x03a9: 0x00d5,     #  GREEK CAPITAL LETTER OMEGA
+    0x03aa: 0x0091,     #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03ab: 0x0096,     #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03ac: 0x009b,     #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03ad: 0x009d,     #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03ae: 0x009e,     #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03af: 0x009f,     #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03b0: 0x00fc,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x03b1: 0x00d6,     #  GREEK SMALL LETTER ALPHA
+    0x03b2: 0x00d7,     #  GREEK SMALL LETTER BETA
+    0x03b3: 0x00d8,     #  GREEK SMALL LETTER GAMMA
+    0x03b4: 0x00dd,     #  GREEK SMALL LETTER DELTA
+    0x03b5: 0x00de,     #  GREEK SMALL LETTER EPSILON
+    0x03b6: 0x00e0,     #  GREEK SMALL LETTER ZETA
+    0x03b7: 0x00e1,     #  GREEK SMALL LETTER ETA
+    0x03b8: 0x00e2,     #  GREEK SMALL LETTER THETA
+    0x03b9: 0x00e3,     #  GREEK SMALL LETTER IOTA
+    0x03ba: 0x00e4,     #  GREEK SMALL LETTER KAPPA
+    0x03bb: 0x00e5,     #  GREEK SMALL LETTER LAMDA
+    0x03bc: 0x00e6,     #  GREEK SMALL LETTER MU
+    0x03bd: 0x00e7,     #  GREEK SMALL LETTER NU
+    0x03be: 0x00e8,     #  GREEK SMALL LETTER XI
+    0x03bf: 0x00e9,     #  GREEK SMALL LETTER OMICRON
+    0x03c0: 0x00ea,     #  GREEK SMALL LETTER PI
+    0x03c1: 0x00eb,     #  GREEK SMALL LETTER RHO
+    0x03c2: 0x00ed,     #  GREEK SMALL LETTER FINAL SIGMA
+    0x03c3: 0x00ec,     #  GREEK SMALL LETTER SIGMA
+    0x03c4: 0x00ee,     #  GREEK SMALL LETTER TAU
+    0x03c5: 0x00f2,     #  GREEK SMALL LETTER UPSILON
+    0x03c6: 0x00f3,     #  GREEK SMALL LETTER PHI
+    0x03c7: 0x00f4,     #  GREEK SMALL LETTER CHI
+    0x03c8: 0x00f6,     #  GREEK SMALL LETTER PSI
+    0x03c9: 0x00fa,     #  GREEK SMALL LETTER OMEGA
+    0x03ca: 0x00a0,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03cb: 0x00fb,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03cc: 0x00a2,     #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03cd: 0x00a3,     #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03ce: 0x00fd,     #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x2015: 0x008e,     #  HORIZONTAL BAR
+    0x2018: 0x008b,     #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x008c,     #  RIGHT SINGLE QUOTATION MARK
+    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
+    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x00df,     #  UPPER HALF BLOCK
+    0x2584: 0x00dc,     #  LOWER HALF BLOCK
+    0x2588: 0x00db,     #  FULL BLOCK
+    0x2591: 0x00b0,     #  LIGHT SHADE
+    0x2592: 0x00b1,     #  MEDIUM SHADE
+    0x2593: 0x00b2,     #  DARK SHADE
+    0x25a0: 0x00fe,     #  BLACK SQUARE
+}

Modified: python/trunk/Lib/encodings/cp874.py
==============================================================================
--- python/trunk/Lib/encodings/cp874.py	(original)
+++ python/trunk/Lib/encodings/cp874.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,491 +32,490 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u20ac'	#  0x80 -> EURO SIGN
-    u'\ufffe'	#  0x81 -> UNDEFINED
-    u'\ufffe'	#  0x82 -> UNDEFINED
-    u'\ufffe'	#  0x83 -> UNDEFINED
-    u'\ufffe'	#  0x84 -> UNDEFINED
-    u'\u2026'	#  0x85 -> HORIZONTAL ELLIPSIS
-    u'\ufffe'	#  0x86 -> UNDEFINED
-    u'\ufffe'	#  0x87 -> UNDEFINED
-    u'\ufffe'	#  0x88 -> UNDEFINED
-    u'\ufffe'	#  0x89 -> UNDEFINED
-    u'\ufffe'	#  0x8A -> UNDEFINED
-    u'\ufffe'	#  0x8B -> UNDEFINED
-    u'\ufffe'	#  0x8C -> UNDEFINED
-    u'\ufffe'	#  0x8D -> UNDEFINED
-    u'\ufffe'	#  0x8E -> UNDEFINED
-    u'\ufffe'	#  0x8F -> UNDEFINED
-    u'\ufffe'	#  0x90 -> UNDEFINED
-    u'\u2018'	#  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'	#  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'	#  0x95 -> BULLET
-    u'\u2013'	#  0x96 -> EN DASH
-    u'\u2014'	#  0x97 -> EM DASH
-    u'\ufffe'	#  0x98 -> UNDEFINED
-    u'\ufffe'	#  0x99 -> UNDEFINED
-    u'\ufffe'	#  0x9A -> UNDEFINED
-    u'\ufffe'	#  0x9B -> UNDEFINED
-    u'\ufffe'	#  0x9C -> UNDEFINED
-    u'\ufffe'	#  0x9D -> UNDEFINED
-    u'\ufffe'	#  0x9E -> UNDEFINED
-    u'\ufffe'	#  0x9F -> UNDEFINED
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u0e01'	#  0xA1 -> THAI CHARACTER KO KAI
-    u'\u0e02'	#  0xA2 -> THAI CHARACTER KHO KHAI
-    u'\u0e03'	#  0xA3 -> THAI CHARACTER KHO KHUAT
-    u'\u0e04'	#  0xA4 -> THAI CHARACTER KHO KHWAI
-    u'\u0e05'	#  0xA5 -> THAI CHARACTER KHO KHON
-    u'\u0e06'	#  0xA6 -> THAI CHARACTER KHO RAKHANG
-    u'\u0e07'	#  0xA7 -> THAI CHARACTER NGO NGU
-    u'\u0e08'	#  0xA8 -> THAI CHARACTER CHO CHAN
-    u'\u0e09'	#  0xA9 -> THAI CHARACTER CHO CHING
-    u'\u0e0a'	#  0xAA -> THAI CHARACTER CHO CHANG
-    u'\u0e0b'	#  0xAB -> THAI CHARACTER SO SO
-    u'\u0e0c'	#  0xAC -> THAI CHARACTER CHO CHOE
-    u'\u0e0d'	#  0xAD -> THAI CHARACTER YO YING
-    u'\u0e0e'	#  0xAE -> THAI CHARACTER DO CHADA
-    u'\u0e0f'	#  0xAF -> THAI CHARACTER TO PATAK
-    u'\u0e10'	#  0xB0 -> THAI CHARACTER THO THAN
-    u'\u0e11'	#  0xB1 -> THAI CHARACTER THO NANGMONTHO
-    u'\u0e12'	#  0xB2 -> THAI CHARACTER THO PHUTHAO
-    u'\u0e13'	#  0xB3 -> THAI CHARACTER NO NEN
-    u'\u0e14'	#  0xB4 -> THAI CHARACTER DO DEK
-    u'\u0e15'	#  0xB5 -> THAI CHARACTER TO TAO
-    u'\u0e16'	#  0xB6 -> THAI CHARACTER THO THUNG
-    u'\u0e17'	#  0xB7 -> THAI CHARACTER THO THAHAN
-    u'\u0e18'	#  0xB8 -> THAI CHARACTER THO THONG
-    u'\u0e19'	#  0xB9 -> THAI CHARACTER NO NU
-    u'\u0e1a'	#  0xBA -> THAI CHARACTER BO BAIMAI
-    u'\u0e1b'	#  0xBB -> THAI CHARACTER PO PLA
-    u'\u0e1c'	#  0xBC -> THAI CHARACTER PHO PHUNG
-    u'\u0e1d'	#  0xBD -> THAI CHARACTER FO FA
-    u'\u0e1e'	#  0xBE -> THAI CHARACTER PHO PHAN
-    u'\u0e1f'	#  0xBF -> THAI CHARACTER FO FAN
-    u'\u0e20'	#  0xC0 -> THAI CHARACTER PHO SAMPHAO
-    u'\u0e21'	#  0xC1 -> THAI CHARACTER MO MA
-    u'\u0e22'	#  0xC2 -> THAI CHARACTER YO YAK
-    u'\u0e23'	#  0xC3 -> THAI CHARACTER RO RUA
-    u'\u0e24'	#  0xC4 -> THAI CHARACTER RU
-    u'\u0e25'	#  0xC5 -> THAI CHARACTER LO LING
-    u'\u0e26'	#  0xC6 -> THAI CHARACTER LU
-    u'\u0e27'	#  0xC7 -> THAI CHARACTER WO WAEN
-    u'\u0e28'	#  0xC8 -> THAI CHARACTER SO SALA
-    u'\u0e29'	#  0xC9 -> THAI CHARACTER SO RUSI
-    u'\u0e2a'	#  0xCA -> THAI CHARACTER SO SUA
-    u'\u0e2b'	#  0xCB -> THAI CHARACTER HO HIP
-    u'\u0e2c'	#  0xCC -> THAI CHARACTER LO CHULA
-    u'\u0e2d'	#  0xCD -> THAI CHARACTER O ANG
-    u'\u0e2e'	#  0xCE -> THAI CHARACTER HO NOKHUK
-    u'\u0e2f'	#  0xCF -> THAI CHARACTER PAIYANNOI
-    u'\u0e30'	#  0xD0 -> THAI CHARACTER SARA A
-    u'\u0e31'	#  0xD1 -> THAI CHARACTER MAI HAN-AKAT
-    u'\u0e32'	#  0xD2 -> THAI CHARACTER SARA AA
-    u'\u0e33'	#  0xD3 -> THAI CHARACTER SARA AM
-    u'\u0e34'	#  0xD4 -> THAI CHARACTER SARA I
-    u'\u0e35'	#  0xD5 -> THAI CHARACTER SARA II
-    u'\u0e36'	#  0xD6 -> THAI CHARACTER SARA UE
-    u'\u0e37'	#  0xD7 -> THAI CHARACTER SARA UEE
-    u'\u0e38'	#  0xD8 -> THAI CHARACTER SARA U
-    u'\u0e39'	#  0xD9 -> THAI CHARACTER SARA UU
-    u'\u0e3a'	#  0xDA -> THAI CHARACTER PHINTHU
-    u'\ufffe'	#  0xDB -> UNDEFINED
-    u'\ufffe'	#  0xDC -> UNDEFINED
-    u'\ufffe'	#  0xDD -> UNDEFINED
-    u'\ufffe'	#  0xDE -> UNDEFINED
-    u'\u0e3f'	#  0xDF -> THAI CURRENCY SYMBOL BAHT
-    u'\u0e40'	#  0xE0 -> THAI CHARACTER SARA E
-    u'\u0e41'	#  0xE1 -> THAI CHARACTER SARA AE
-    u'\u0e42'	#  0xE2 -> THAI CHARACTER SARA O
-    u'\u0e43'	#  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
-    u'\u0e44'	#  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
-    u'\u0e45'	#  0xE5 -> THAI CHARACTER LAKKHANGYAO
-    u'\u0e46'	#  0xE6 -> THAI CHARACTER MAIYAMOK
-    u'\u0e47'	#  0xE7 -> THAI CHARACTER MAITAIKHU
-    u'\u0e48'	#  0xE8 -> THAI CHARACTER MAI EK
-    u'\u0e49'	#  0xE9 -> THAI CHARACTER MAI THO
-    u'\u0e4a'	#  0xEA -> THAI CHARACTER MAI TRI
-    u'\u0e4b'	#  0xEB -> THAI CHARACTER MAI CHATTAWA
-    u'\u0e4c'	#  0xEC -> THAI CHARACTER THANTHAKHAT
-    u'\u0e4d'	#  0xED -> THAI CHARACTER NIKHAHIT
-    u'\u0e4e'	#  0xEE -> THAI CHARACTER YAMAKKAN
-    u'\u0e4f'	#  0xEF -> THAI CHARACTER FONGMAN
-    u'\u0e50'	#  0xF0 -> THAI DIGIT ZERO
-    u'\u0e51'	#  0xF1 -> THAI DIGIT ONE
-    u'\u0e52'	#  0xF2 -> THAI DIGIT TWO
-    u'\u0e53'	#  0xF3 -> THAI DIGIT THREE
-    u'\u0e54'	#  0xF4 -> THAI DIGIT FOUR
-    u'\u0e55'	#  0xF5 -> THAI DIGIT FIVE
-    u'\u0e56'	#  0xF6 -> THAI DIGIT SIX
-    u'\u0e57'	#  0xF7 -> THAI DIGIT SEVEN
-    u'\u0e58'	#  0xF8 -> THAI DIGIT EIGHT
-    u'\u0e59'	#  0xF9 -> THAI DIGIT NINE
-    u'\u0e5a'	#  0xFA -> THAI CHARACTER ANGKHANKHU
-    u'\u0e5b'	#  0xFB -> THAI CHARACTER KHOMUT
-    u'\ufffe'	#  0xFC -> UNDEFINED
-    u'\ufffe'	#  0xFD -> UNDEFINED
-    u'\ufffe'	#  0xFE -> UNDEFINED
-    u'\ufffe'	#  0xFF -> UNDEFINED
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u20ac'   #  0x80 -> EURO SIGN
+    u'\ufffe'   #  0x81 -> UNDEFINED
+    u'\ufffe'   #  0x82 -> UNDEFINED
+    u'\ufffe'   #  0x83 -> UNDEFINED
+    u'\ufffe'   #  0x84 -> UNDEFINED
+    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
+    u'\ufffe'   #  0x86 -> UNDEFINED
+    u'\ufffe'   #  0x87 -> UNDEFINED
+    u'\ufffe'   #  0x88 -> UNDEFINED
+    u'\ufffe'   #  0x89 -> UNDEFINED
+    u'\ufffe'   #  0x8A -> UNDEFINED
+    u'\ufffe'   #  0x8B -> UNDEFINED
+    u'\ufffe'   #  0x8C -> UNDEFINED
+    u'\ufffe'   #  0x8D -> UNDEFINED
+    u'\ufffe'   #  0x8E -> UNDEFINED
+    u'\ufffe'   #  0x8F -> UNDEFINED
+    u'\ufffe'   #  0x90 -> UNDEFINED
+    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
+    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2022'   #  0x95 -> BULLET
+    u'\u2013'   #  0x96 -> EN DASH
+    u'\u2014'   #  0x97 -> EM DASH
+    u'\ufffe'   #  0x98 -> UNDEFINED
+    u'\ufffe'   #  0x99 -> UNDEFINED
+    u'\ufffe'   #  0x9A -> UNDEFINED
+    u'\ufffe'   #  0x9B -> UNDEFINED
+    u'\ufffe'   #  0x9C -> UNDEFINED
+    u'\ufffe'   #  0x9D -> UNDEFINED
+    u'\ufffe'   #  0x9E -> UNDEFINED
+    u'\ufffe'   #  0x9F -> UNDEFINED
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u0e01'   #  0xA1 -> THAI CHARACTER KO KAI
+    u'\u0e02'   #  0xA2 -> THAI CHARACTER KHO KHAI
+    u'\u0e03'   #  0xA3 -> THAI CHARACTER KHO KHUAT
+    u'\u0e04'   #  0xA4 -> THAI CHARACTER KHO KHWAI
+    u'\u0e05'   #  0xA5 -> THAI CHARACTER KHO KHON
+    u'\u0e06'   #  0xA6 -> THAI CHARACTER KHO RAKHANG
+    u'\u0e07'   #  0xA7 -> THAI CHARACTER NGO NGU
+    u'\u0e08'   #  0xA8 -> THAI CHARACTER CHO CHAN
+    u'\u0e09'   #  0xA9 -> THAI CHARACTER CHO CHING
+    u'\u0e0a'   #  0xAA -> THAI CHARACTER CHO CHANG
+    u'\u0e0b'   #  0xAB -> THAI CHARACTER SO SO
+    u'\u0e0c'   #  0xAC -> THAI CHARACTER CHO CHOE
+    u'\u0e0d'   #  0xAD -> THAI CHARACTER YO YING
+    u'\u0e0e'   #  0xAE -> THAI CHARACTER DO CHADA
+    u'\u0e0f'   #  0xAF -> THAI CHARACTER TO PATAK
+    u'\u0e10'   #  0xB0 -> THAI CHARACTER THO THAN
+    u'\u0e11'   #  0xB1 -> THAI CHARACTER THO NANGMONTHO
+    u'\u0e12'   #  0xB2 -> THAI CHARACTER THO PHUTHAO
+    u'\u0e13'   #  0xB3 -> THAI CHARACTER NO NEN
+    u'\u0e14'   #  0xB4 -> THAI CHARACTER DO DEK
+    u'\u0e15'   #  0xB5 -> THAI CHARACTER TO TAO
+    u'\u0e16'   #  0xB6 -> THAI CHARACTER THO THUNG
+    u'\u0e17'   #  0xB7 -> THAI CHARACTER THO THAHAN
+    u'\u0e18'   #  0xB8 -> THAI CHARACTER THO THONG
+    u'\u0e19'   #  0xB9 -> THAI CHARACTER NO NU
+    u'\u0e1a'   #  0xBA -> THAI CHARACTER BO BAIMAI
+    u'\u0e1b'   #  0xBB -> THAI CHARACTER PO PLA
+    u'\u0e1c'   #  0xBC -> THAI CHARACTER PHO PHUNG
+    u'\u0e1d'   #  0xBD -> THAI CHARACTER FO FA
+    u'\u0e1e'   #  0xBE -> THAI CHARACTER PHO PHAN
+    u'\u0e1f'   #  0xBF -> THAI CHARACTER FO FAN
+    u'\u0e20'   #  0xC0 -> THAI CHARACTER PHO SAMPHAO
+    u'\u0e21'   #  0xC1 -> THAI CHARACTER MO MA
+    u'\u0e22'   #  0xC2 -> THAI CHARACTER YO YAK
+    u'\u0e23'   #  0xC3 -> THAI CHARACTER RO RUA
+    u'\u0e24'   #  0xC4 -> THAI CHARACTER RU
+    u'\u0e25'   #  0xC5 -> THAI CHARACTER LO LING
+    u'\u0e26'   #  0xC6 -> THAI CHARACTER LU
+    u'\u0e27'   #  0xC7 -> THAI CHARACTER WO WAEN
+    u'\u0e28'   #  0xC8 -> THAI CHARACTER SO SALA
+    u'\u0e29'   #  0xC9 -> THAI CHARACTER SO RUSI
+    u'\u0e2a'   #  0xCA -> THAI CHARACTER SO SUA
+    u'\u0e2b'   #  0xCB -> THAI CHARACTER HO HIP
+    u'\u0e2c'   #  0xCC -> THAI CHARACTER LO CHULA
+    u'\u0e2d'   #  0xCD -> THAI CHARACTER O ANG
+    u'\u0e2e'   #  0xCE -> THAI CHARACTER HO NOKHUK
+    u'\u0e2f'   #  0xCF -> THAI CHARACTER PAIYANNOI
+    u'\u0e30'   #  0xD0 -> THAI CHARACTER SARA A
+    u'\u0e31'   #  0xD1 -> THAI CHARACTER MAI HAN-AKAT
+    u'\u0e32'   #  0xD2 -> THAI CHARACTER SARA AA
+    u'\u0e33'   #  0xD3 -> THAI CHARACTER SARA AM
+    u'\u0e34'   #  0xD4 -> THAI CHARACTER SARA I
+    u'\u0e35'   #  0xD5 -> THAI CHARACTER SARA II
+    u'\u0e36'   #  0xD6 -> THAI CHARACTER SARA UE
+    u'\u0e37'   #  0xD7 -> THAI CHARACTER SARA UEE
+    u'\u0e38'   #  0xD8 -> THAI CHARACTER SARA U
+    u'\u0e39'   #  0xD9 -> THAI CHARACTER SARA UU
+    u'\u0e3a'   #  0xDA -> THAI CHARACTER PHINTHU
+    u'\ufffe'   #  0xDB -> UNDEFINED
+    u'\ufffe'   #  0xDC -> UNDEFINED
+    u'\ufffe'   #  0xDD -> UNDEFINED
+    u'\ufffe'   #  0xDE -> UNDEFINED
+    u'\u0e3f'   #  0xDF -> THAI CURRENCY SYMBOL BAHT
+    u'\u0e40'   #  0xE0 -> THAI CHARACTER SARA E
+    u'\u0e41'   #  0xE1 -> THAI CHARACTER SARA AE
+    u'\u0e42'   #  0xE2 -> THAI CHARACTER SARA O
+    u'\u0e43'   #  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
+    u'\u0e44'   #  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
+    u'\u0e45'   #  0xE5 -> THAI CHARACTER LAKKHANGYAO
+    u'\u0e46'   #  0xE6 -> THAI CHARACTER MAIYAMOK
+    u'\u0e47'   #  0xE7 -> THAI CHARACTER MAITAIKHU
+    u'\u0e48'   #  0xE8 -> THAI CHARACTER MAI EK
+    u'\u0e49'   #  0xE9 -> THAI CHARACTER MAI THO
+    u'\u0e4a'   #  0xEA -> THAI CHARACTER MAI TRI
+    u'\u0e4b'   #  0xEB -> THAI CHARACTER MAI CHATTAWA
+    u'\u0e4c'   #  0xEC -> THAI CHARACTER THANTHAKHAT
+    u'\u0e4d'   #  0xED -> THAI CHARACTER NIKHAHIT
+    u'\u0e4e'   #  0xEE -> THAI CHARACTER YAMAKKAN
+    u'\u0e4f'   #  0xEF -> THAI CHARACTER FONGMAN
+    u'\u0e50'   #  0xF0 -> THAI DIGIT ZERO
+    u'\u0e51'   #  0xF1 -> THAI DIGIT ONE
+    u'\u0e52'   #  0xF2 -> THAI DIGIT TWO
+    u'\u0e53'   #  0xF3 -> THAI DIGIT THREE
+    u'\u0e54'   #  0xF4 -> THAI DIGIT FOUR
+    u'\u0e55'   #  0xF5 -> THAI DIGIT FIVE
+    u'\u0e56'   #  0xF6 -> THAI DIGIT SIX
+    u'\u0e57'   #  0xF7 -> THAI DIGIT SEVEN
+    u'\u0e58'   #  0xF8 -> THAI DIGIT EIGHT
+    u'\u0e59'   #  0xF9 -> THAI DIGIT NINE
+    u'\u0e5a'   #  0xFA -> THAI CHARACTER ANGKHANKHU
+    u'\u0e5b'   #  0xFB -> THAI CHARACTER KHOMUT
+    u'\ufffe'   #  0xFC -> UNDEFINED
+    u'\ufffe'   #  0xFD -> UNDEFINED
+    u'\ufffe'   #  0xFE -> UNDEFINED
+    u'\ufffe'   #  0xFF -> UNDEFINED
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x0E01: 0xA1,	#  THAI CHARACTER KO KAI
-    0x0E02: 0xA2,	#  THAI CHARACTER KHO KHAI
-    0x0E03: 0xA3,	#  THAI CHARACTER KHO KHUAT
-    0x0E04: 0xA4,	#  THAI CHARACTER KHO KHWAI
-    0x0E05: 0xA5,	#  THAI CHARACTER KHO KHON
-    0x0E06: 0xA6,	#  THAI CHARACTER KHO RAKHANG
-    0x0E07: 0xA7,	#  THAI CHARACTER NGO NGU
-    0x0E08: 0xA8,	#  THAI CHARACTER CHO CHAN
-    0x0E09: 0xA9,	#  THAI CHARACTER CHO CHING
-    0x0E0A: 0xAA,	#  THAI CHARACTER CHO CHANG
-    0x0E0B: 0xAB,	#  THAI CHARACTER SO SO
-    0x0E0C: 0xAC,	#  THAI CHARACTER CHO CHOE
-    0x0E0D: 0xAD,	#  THAI CHARACTER YO YING
-    0x0E0E: 0xAE,	#  THAI CHARACTER DO CHADA
-    0x0E0F: 0xAF,	#  THAI CHARACTER TO PATAK
-    0x0E10: 0xB0,	#  THAI CHARACTER THO THAN
-    0x0E11: 0xB1,	#  THAI CHARACTER THO NANGMONTHO
-    0x0E12: 0xB2,	#  THAI CHARACTER THO PHUTHAO
-    0x0E13: 0xB3,	#  THAI CHARACTER NO NEN
-    0x0E14: 0xB4,	#  THAI CHARACTER DO DEK
-    0x0E15: 0xB5,	#  THAI CHARACTER TO TAO
-    0x0E16: 0xB6,	#  THAI CHARACTER THO THUNG
-    0x0E17: 0xB7,	#  THAI CHARACTER THO THAHAN
-    0x0E18: 0xB8,	#  THAI CHARACTER THO THONG
-    0x0E19: 0xB9,	#  THAI CHARACTER NO NU
-    0x0E1A: 0xBA,	#  THAI CHARACTER BO BAIMAI
-    0x0E1B: 0xBB,	#  THAI CHARACTER PO PLA
-    0x0E1C: 0xBC,	#  THAI CHARACTER PHO PHUNG
-    0x0E1D: 0xBD,	#  THAI CHARACTER FO FA
-    0x0E1E: 0xBE,	#  THAI CHARACTER PHO PHAN
-    0x0E1F: 0xBF,	#  THAI CHARACTER FO FAN
-    0x0E20: 0xC0,	#  THAI CHARACTER PHO SAMPHAO
-    0x0E21: 0xC1,	#  THAI CHARACTER MO MA
-    0x0E22: 0xC2,	#  THAI CHARACTER YO YAK
-    0x0E23: 0xC3,	#  THAI CHARACTER RO RUA
-    0x0E24: 0xC4,	#  THAI CHARACTER RU
-    0x0E25: 0xC5,	#  THAI CHARACTER LO LING
-    0x0E26: 0xC6,	#  THAI CHARACTER LU
-    0x0E27: 0xC7,	#  THAI CHARACTER WO WAEN
-    0x0E28: 0xC8,	#  THAI CHARACTER SO SALA
-    0x0E29: 0xC9,	#  THAI CHARACTER SO RUSI
-    0x0E2A: 0xCA,	#  THAI CHARACTER SO SUA
-    0x0E2B: 0xCB,	#  THAI CHARACTER HO HIP
-    0x0E2C: 0xCC,	#  THAI CHARACTER LO CHULA
-    0x0E2D: 0xCD,	#  THAI CHARACTER O ANG
-    0x0E2E: 0xCE,	#  THAI CHARACTER HO NOKHUK
-    0x0E2F: 0xCF,	#  THAI CHARACTER PAIYANNOI
-    0x0E30: 0xD0,	#  THAI CHARACTER SARA A
-    0x0E31: 0xD1,	#  THAI CHARACTER MAI HAN-AKAT
-    0x0E32: 0xD2,	#  THAI CHARACTER SARA AA
-    0x0E33: 0xD3,	#  THAI CHARACTER SARA AM
-    0x0E34: 0xD4,	#  THAI CHARACTER SARA I
-    0x0E35: 0xD5,	#  THAI CHARACTER SARA II
-    0x0E36: 0xD6,	#  THAI CHARACTER SARA UE
-    0x0E37: 0xD7,	#  THAI CHARACTER SARA UEE
-    0x0E38: 0xD8,	#  THAI CHARACTER SARA U
-    0x0E39: 0xD9,	#  THAI CHARACTER SARA UU
-    0x0E3A: 0xDA,	#  THAI CHARACTER PHINTHU
-    0x0E3F: 0xDF,	#  THAI CURRENCY SYMBOL BAHT
-    0x0E40: 0xE0,	#  THAI CHARACTER SARA E
-    0x0E41: 0xE1,	#  THAI CHARACTER SARA AE
-    0x0E42: 0xE2,	#  THAI CHARACTER SARA O
-    0x0E43: 0xE3,	#  THAI CHARACTER SARA AI MAIMUAN
-    0x0E44: 0xE4,	#  THAI CHARACTER SARA AI MAIMALAI
-    0x0E45: 0xE5,	#  THAI CHARACTER LAKKHANGYAO
-    0x0E46: 0xE6,	#  THAI CHARACTER MAIYAMOK
-    0x0E47: 0xE7,	#  THAI CHARACTER MAITAIKHU
-    0x0E48: 0xE8,	#  THAI CHARACTER MAI EK
-    0x0E49: 0xE9,	#  THAI CHARACTER MAI THO
-    0x0E4A: 0xEA,	#  THAI CHARACTER MAI TRI
-    0x0E4B: 0xEB,	#  THAI CHARACTER MAI CHATTAWA
-    0x0E4C: 0xEC,	#  THAI CHARACTER THANTHAKHAT
-    0x0E4D: 0xED,	#  THAI CHARACTER NIKHAHIT
-    0x0E4E: 0xEE,	#  THAI CHARACTER YAMAKKAN
-    0x0E4F: 0xEF,	#  THAI CHARACTER FONGMAN
-    0x0E50: 0xF0,	#  THAI DIGIT ZERO
-    0x0E51: 0xF1,	#  THAI DIGIT ONE
-    0x0E52: 0xF2,	#  THAI DIGIT TWO
-    0x0E53: 0xF3,	#  THAI DIGIT THREE
-    0x0E54: 0xF4,	#  THAI DIGIT FOUR
-    0x0E55: 0xF5,	#  THAI DIGIT FIVE
-    0x0E56: 0xF6,	#  THAI DIGIT SIX
-    0x0E57: 0xF7,	#  THAI DIGIT SEVEN
-    0x0E58: 0xF8,	#  THAI DIGIT EIGHT
-    0x0E59: 0xF9,	#  THAI DIGIT NINE
-    0x0E5A: 0xFA,	#  THAI CHARACTER ANGKHANKHU
-    0x0E5B: 0xFB,	#  THAI CHARACTER KHOMUT
-    0x2013: 0x96,	#  EN DASH
-    0x2014: 0x97,	#  EM DASH
-    0x2018: 0x91,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x92,	#  RIGHT SINGLE QUOTATION MARK
-    0x201C: 0x93,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0x94,	#  RIGHT DOUBLE QUOTATION MARK
-    0x2022: 0x95,	#  BULLET
-    0x2026: 0x85,	#  HORIZONTAL ELLIPSIS
-    0x20AC: 0x80,	#  EURO SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x0E01: 0xA1,       #  THAI CHARACTER KO KAI
+    0x0E02: 0xA2,       #  THAI CHARACTER KHO KHAI
+    0x0E03: 0xA3,       #  THAI CHARACTER KHO KHUAT
+    0x0E04: 0xA4,       #  THAI CHARACTER KHO KHWAI
+    0x0E05: 0xA5,       #  THAI CHARACTER KHO KHON
+    0x0E06: 0xA6,       #  THAI CHARACTER KHO RAKHANG
+    0x0E07: 0xA7,       #  THAI CHARACTER NGO NGU
+    0x0E08: 0xA8,       #  THAI CHARACTER CHO CHAN
+    0x0E09: 0xA9,       #  THAI CHARACTER CHO CHING
+    0x0E0A: 0xAA,       #  THAI CHARACTER CHO CHANG
+    0x0E0B: 0xAB,       #  THAI CHARACTER SO SO
+    0x0E0C: 0xAC,       #  THAI CHARACTER CHO CHOE
+    0x0E0D: 0xAD,       #  THAI CHARACTER YO YING
+    0x0E0E: 0xAE,       #  THAI CHARACTER DO CHADA
+    0x0E0F: 0xAF,       #  THAI CHARACTER TO PATAK
+    0x0E10: 0xB0,       #  THAI CHARACTER THO THAN
+    0x0E11: 0xB1,       #  THAI CHARACTER THO NANGMONTHO
+    0x0E12: 0xB2,       #  THAI CHARACTER THO PHUTHAO
+    0x0E13: 0xB3,       #  THAI CHARACTER NO NEN
+    0x0E14: 0xB4,       #  THAI CHARACTER DO DEK
+    0x0E15: 0xB5,       #  THAI CHARACTER TO TAO
+    0x0E16: 0xB6,       #  THAI CHARACTER THO THUNG
+    0x0E17: 0xB7,       #  THAI CHARACTER THO THAHAN
+    0x0E18: 0xB8,       #  THAI CHARACTER THO THONG
+    0x0E19: 0xB9,       #  THAI CHARACTER NO NU
+    0x0E1A: 0xBA,       #  THAI CHARACTER BO BAIMAI
+    0x0E1B: 0xBB,       #  THAI CHARACTER PO PLA
+    0x0E1C: 0xBC,       #  THAI CHARACTER PHO PHUNG
+    0x0E1D: 0xBD,       #  THAI CHARACTER FO FA
+    0x0E1E: 0xBE,       #  THAI CHARACTER PHO PHAN
+    0x0E1F: 0xBF,       #  THAI CHARACTER FO FAN
+    0x0E20: 0xC0,       #  THAI CHARACTER PHO SAMPHAO
+    0x0E21: 0xC1,       #  THAI CHARACTER MO MA
+    0x0E22: 0xC2,       #  THAI CHARACTER YO YAK
+    0x0E23: 0xC3,       #  THAI CHARACTER RO RUA
+    0x0E24: 0xC4,       #  THAI CHARACTER RU
+    0x0E25: 0xC5,       #  THAI CHARACTER LO LING
+    0x0E26: 0xC6,       #  THAI CHARACTER LU
+    0x0E27: 0xC7,       #  THAI CHARACTER WO WAEN
+    0x0E28: 0xC8,       #  THAI CHARACTER SO SALA
+    0x0E29: 0xC9,       #  THAI CHARACTER SO RUSI
+    0x0E2A: 0xCA,       #  THAI CHARACTER SO SUA
+    0x0E2B: 0xCB,       #  THAI CHARACTER HO HIP
+    0x0E2C: 0xCC,       #  THAI CHARACTER LO CHULA
+    0x0E2D: 0xCD,       #  THAI CHARACTER O ANG
+    0x0E2E: 0xCE,       #  THAI CHARACTER HO NOKHUK
+    0x0E2F: 0xCF,       #  THAI CHARACTER PAIYANNOI
+    0x0E30: 0xD0,       #  THAI CHARACTER SARA A
+    0x0E31: 0xD1,       #  THAI CHARACTER MAI HAN-AKAT
+    0x0E32: 0xD2,       #  THAI CHARACTER SARA AA
+    0x0E33: 0xD3,       #  THAI CHARACTER SARA AM
+    0x0E34: 0xD4,       #  THAI CHARACTER SARA I
+    0x0E35: 0xD5,       #  THAI CHARACTER SARA II
+    0x0E36: 0xD6,       #  THAI CHARACTER SARA UE
+    0x0E37: 0xD7,       #  THAI CHARACTER SARA UEE
+    0x0E38: 0xD8,       #  THAI CHARACTER SARA U
+    0x0E39: 0xD9,       #  THAI CHARACTER SARA UU
+    0x0E3A: 0xDA,       #  THAI CHARACTER PHINTHU
+    0x0E3F: 0xDF,       #  THAI CURRENCY SYMBOL BAHT
+    0x0E40: 0xE0,       #  THAI CHARACTER SARA E
+    0x0E41: 0xE1,       #  THAI CHARACTER SARA AE
+    0x0E42: 0xE2,       #  THAI CHARACTER SARA O
+    0x0E43: 0xE3,       #  THAI CHARACTER SARA AI MAIMUAN
+    0x0E44: 0xE4,       #  THAI CHARACTER SARA AI MAIMALAI
+    0x0E45: 0xE5,       #  THAI CHARACTER LAKKHANGYAO
+    0x0E46: 0xE6,       #  THAI CHARACTER MAIYAMOK
+    0x0E47: 0xE7,       #  THAI CHARACTER MAITAIKHU
+    0x0E48: 0xE8,       #  THAI CHARACTER MAI EK
+    0x0E49: 0xE9,       #  THAI CHARACTER MAI THO
+    0x0E4A: 0xEA,       #  THAI CHARACTER MAI TRI
+    0x0E4B: 0xEB,       #  THAI CHARACTER MAI CHATTAWA
+    0x0E4C: 0xEC,       #  THAI CHARACTER THANTHAKHAT
+    0x0E4D: 0xED,       #  THAI CHARACTER NIKHAHIT
+    0x0E4E: 0xEE,       #  THAI CHARACTER YAMAKKAN
+    0x0E4F: 0xEF,       #  THAI CHARACTER FONGMAN
+    0x0E50: 0xF0,       #  THAI DIGIT ZERO
+    0x0E51: 0xF1,       #  THAI DIGIT ONE
+    0x0E52: 0xF2,       #  THAI DIGIT TWO
+    0x0E53: 0xF3,       #  THAI DIGIT THREE
+    0x0E54: 0xF4,       #  THAI DIGIT FOUR
+    0x0E55: 0xF5,       #  THAI DIGIT FIVE
+    0x0E56: 0xF6,       #  THAI DIGIT SIX
+    0x0E57: 0xF7,       #  THAI DIGIT SEVEN
+    0x0E58: 0xF8,       #  THAI DIGIT EIGHT
+    0x0E59: 0xF9,       #  THAI DIGIT NINE
+    0x0E5A: 0xFA,       #  THAI CHARACTER ANGKHANKHU
+    0x0E5B: 0xFB,       #  THAI CHARACTER KHOMUT
+    0x2013: 0x96,       #  EN DASH
+    0x2014: 0x97,       #  EM DASH
+    0x2018: 0x91,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0x92,       #  RIGHT SINGLE QUOTATION MARK
+    0x201C: 0x93,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0x94,       #  RIGHT DOUBLE QUOTATION MARK
+    0x2022: 0x95,       #  BULLET
+    0x2026: 0x85,       #  HORIZONTAL ELLIPSIS
+    0x20AC: 0x80,       #  EURO SIGN
 }
-

Modified: python/trunk/Lib/encodings/cp875.py
==============================================================================
--- python/trunk/Lib/encodings/cp875.py	(original)
+++ python/trunk/Lib/encodings/cp875.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,516 +32,515 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x9c'	#  0x04 -> CONTROL
-    u'\t'	#  0x05 -> HORIZONTAL TABULATION
-    u'\x86'	#  0x06 -> CONTROL
-    u'\x7f'	#  0x07 -> DELETE
-    u'\x97'	#  0x08 -> CONTROL
-    u'\x8d'	#  0x09 -> CONTROL
-    u'\x8e'	#  0x0A -> CONTROL
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'	#  0x14 -> CONTROL
-    u'\x85'	#  0x15 -> CONTROL
-    u'\x08'	#  0x16 -> BACKSPACE
-    u'\x87'	#  0x17 -> CONTROL
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x92'	#  0x1A -> CONTROL
-    u'\x8f'	#  0x1B -> CONTROL
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u'\x80'	#  0x20 -> CONTROL
-    u'\x81'	#  0x21 -> CONTROL
-    u'\x82'	#  0x22 -> CONTROL
-    u'\x83'	#  0x23 -> CONTROL
-    u'\x84'	#  0x24 -> CONTROL
-    u'\n'	#  0x25 -> LINE FEED
-    u'\x17'	#  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'	#  0x27 -> ESCAPE
-    u'\x88'	#  0x28 -> CONTROL
-    u'\x89'	#  0x29 -> CONTROL
-    u'\x8a'	#  0x2A -> CONTROL
-    u'\x8b'	#  0x2B -> CONTROL
-    u'\x8c'	#  0x2C -> CONTROL
-    u'\x05'	#  0x2D -> ENQUIRY
-    u'\x06'	#  0x2E -> ACKNOWLEDGE
-    u'\x07'	#  0x2F -> BELL
-    u'\x90'	#  0x30 -> CONTROL
-    u'\x91'	#  0x31 -> CONTROL
-    u'\x16'	#  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'	#  0x33 -> CONTROL
-    u'\x94'	#  0x34 -> CONTROL
-    u'\x95'	#  0x35 -> CONTROL
-    u'\x96'	#  0x36 -> CONTROL
-    u'\x04'	#  0x37 -> END OF TRANSMISSION
-    u'\x98'	#  0x38 -> CONTROL
-    u'\x99'	#  0x39 -> CONTROL
-    u'\x9a'	#  0x3A -> CONTROL
-    u'\x9b'	#  0x3B -> CONTROL
-    u'\x14'	#  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'	#  0x3E -> CONTROL
-    u'\x1a'	#  0x3F -> SUBSTITUTE
-    u' '	#  0x40 -> SPACE
-    u'\u0391'	#  0x41 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'	#  0x42 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'	#  0x43 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'	#  0x44 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'	#  0x45 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'	#  0x46 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'	#  0x47 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'	#  0x48 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'	#  0x49 -> GREEK CAPITAL LETTER IOTA
-    u'['	#  0x4A -> LEFT SQUARE BRACKET
-    u'.'	#  0x4B -> FULL STOP
-    u'<'	#  0x4C -> LESS-THAN SIGN
-    u'('	#  0x4D -> LEFT PARENTHESIS
-    u'+'	#  0x4E -> PLUS SIGN
-    u'!'	#  0x4F -> EXCLAMATION MARK
-    u'&'	#  0x50 -> AMPERSAND
-    u'\u039a'	#  0x51 -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'	#  0x52 -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'	#  0x53 -> GREEK CAPITAL LETTER MU
-    u'\u039d'	#  0x54 -> GREEK CAPITAL LETTER NU
-    u'\u039e'	#  0x55 -> GREEK CAPITAL LETTER XI
-    u'\u039f'	#  0x56 -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'	#  0x57 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'	#  0x58 -> GREEK CAPITAL LETTER RHO
-    u'\u03a3'	#  0x59 -> GREEK CAPITAL LETTER SIGMA
-    u']'	#  0x5A -> RIGHT SQUARE BRACKET
-    u'$'	#  0x5B -> DOLLAR SIGN
-    u'*'	#  0x5C -> ASTERISK
-    u')'	#  0x5D -> RIGHT PARENTHESIS
-    u';'	#  0x5E -> SEMICOLON
-    u'^'	#  0x5F -> CIRCUMFLEX ACCENT
-    u'-'	#  0x60 -> HYPHEN-MINUS
-    u'/'	#  0x61 -> SOLIDUS
-    u'\u03a4'	#  0x62 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'	#  0x63 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'	#  0x64 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'	#  0x65 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'	#  0x66 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'	#  0x67 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03aa'	#  0x68 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'	#  0x69 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'|'	#  0x6A -> VERTICAL LINE
-    u','	#  0x6B -> COMMA
-    u'%'	#  0x6C -> PERCENT SIGN
-    u'_'	#  0x6D -> LOW LINE
-    u'>'	#  0x6E -> GREATER-THAN SIGN
-    u'?'	#  0x6F -> QUESTION MARK
-    u'\xa8'	#  0x70 -> DIAERESIS
-    u'\u0386'	#  0x71 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\u0388'	#  0x72 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'	#  0x73 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\xa0'	#  0x74 -> NO-BREAK SPACE
-    u'\u038a'	#  0x75 -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\u038c'	#  0x76 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\u038e'	#  0x77 -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'	#  0x78 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'`'	#  0x79 -> GRAVE ACCENT
-    u':'	#  0x7A -> COLON
-    u'#'	#  0x7B -> NUMBER SIGN
-    u'@'	#  0x7C -> COMMERCIAL AT
-    u"'"	#  0x7D -> APOSTROPHE
-    u'='	#  0x7E -> EQUALS SIGN
-    u'"'	#  0x7F -> QUOTATION MARK
-    u'\u0385'	#  0x80 -> GREEK DIALYTIKA TONOS
-    u'a'	#  0x81 -> LATIN SMALL LETTER A
-    u'b'	#  0x82 -> LATIN SMALL LETTER B
-    u'c'	#  0x83 -> LATIN SMALL LETTER C
-    u'd'	#  0x84 -> LATIN SMALL LETTER D
-    u'e'	#  0x85 -> LATIN SMALL LETTER E
-    u'f'	#  0x86 -> LATIN SMALL LETTER F
-    u'g'	#  0x87 -> LATIN SMALL LETTER G
-    u'h'	#  0x88 -> LATIN SMALL LETTER H
-    u'i'	#  0x89 -> LATIN SMALL LETTER I
-    u'\u03b1'	#  0x8A -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'	#  0x8B -> GREEK SMALL LETTER BETA
-    u'\u03b3'	#  0x8C -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'	#  0x8D -> GREEK SMALL LETTER DELTA
-    u'\u03b5'	#  0x8E -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'	#  0x8F -> GREEK SMALL LETTER ZETA
-    u'\xb0'	#  0x90 -> DEGREE SIGN
-    u'j'	#  0x91 -> LATIN SMALL LETTER J
-    u'k'	#  0x92 -> LATIN SMALL LETTER K
-    u'l'	#  0x93 -> LATIN SMALL LETTER L
-    u'm'	#  0x94 -> LATIN SMALL LETTER M
-    u'n'	#  0x95 -> LATIN SMALL LETTER N
-    u'o'	#  0x96 -> LATIN SMALL LETTER O
-    u'p'	#  0x97 -> LATIN SMALL LETTER P
-    u'q'	#  0x98 -> LATIN SMALL LETTER Q
-    u'r'	#  0x99 -> LATIN SMALL LETTER R
-    u'\u03b7'	#  0x9A -> GREEK SMALL LETTER ETA
-    u'\u03b8'	#  0x9B -> GREEK SMALL LETTER THETA
-    u'\u03b9'	#  0x9C -> GREEK SMALL LETTER IOTA
-    u'\u03ba'	#  0x9D -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'	#  0x9E -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'	#  0x9F -> GREEK SMALL LETTER MU
-    u'\xb4'	#  0xA0 -> ACUTE ACCENT
-    u'~'	#  0xA1 -> TILDE
-    u's'	#  0xA2 -> LATIN SMALL LETTER S
-    u't'	#  0xA3 -> LATIN SMALL LETTER T
-    u'u'	#  0xA4 -> LATIN SMALL LETTER U
-    u'v'	#  0xA5 -> LATIN SMALL LETTER V
-    u'w'	#  0xA6 -> LATIN SMALL LETTER W
-    u'x'	#  0xA7 -> LATIN SMALL LETTER X
-    u'y'	#  0xA8 -> LATIN SMALL LETTER Y
-    u'z'	#  0xA9 -> LATIN SMALL LETTER Z
-    u'\u03bd'	#  0xAA -> GREEK SMALL LETTER NU
-    u'\u03be'	#  0xAB -> GREEK SMALL LETTER XI
-    u'\u03bf'	#  0xAC -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'	#  0xAD -> GREEK SMALL LETTER PI
-    u'\u03c1'	#  0xAE -> GREEK SMALL LETTER RHO
-    u'\u03c3'	#  0xAF -> GREEK SMALL LETTER SIGMA
-    u'\xa3'	#  0xB0 -> POUND SIGN
-    u'\u03ac'	#  0xB1 -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'	#  0xB2 -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'	#  0xB3 -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03ca'	#  0xB4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03af'	#  0xB5 -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03cc'	#  0xB6 -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'	#  0xB7 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03cb'	#  0xB8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ce'	#  0xB9 -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u03c2'	#  0xBA -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c4'	#  0xBB -> GREEK SMALL LETTER TAU
-    u'\u03c5'	#  0xBC -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'	#  0xBD -> GREEK SMALL LETTER PHI
-    u'\u03c7'	#  0xBE -> GREEK SMALL LETTER CHI
-    u'\u03c8'	#  0xBF -> GREEK SMALL LETTER PSI
-    u'{'	#  0xC0 -> LEFT CURLY BRACKET
-    u'A'	#  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'	#  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'	#  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'	#  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'	#  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'	#  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'	#  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'	#  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'	#  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'	#  0xCA -> SOFT HYPHEN
-    u'\u03c9'	#  0xCB -> GREEK SMALL LETTER OMEGA
-    u'\u0390'	#  0xCC -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u03b0'	#  0xCD -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u2018'	#  0xCE -> LEFT SINGLE QUOTATION MARK
-    u'\u2015'	#  0xCF -> HORIZONTAL BAR
-    u'}'	#  0xD0 -> RIGHT CURLY BRACKET
-    u'J'	#  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'	#  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'	#  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'	#  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'	#  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'	#  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'	#  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb1'	#  0xDA -> PLUS-MINUS SIGN
-    u'\xbd'	#  0xDB -> VULGAR FRACTION ONE HALF
-    u'\x1a'	#  0xDC -> SUBSTITUTE
-    u'\u0387'	#  0xDD -> GREEK ANO TELEIA
-    u'\u2019'	#  0xDE -> RIGHT SINGLE QUOTATION MARK
-    u'\xa6'	#  0xDF -> BROKEN BAR
-    u'\\'	#  0xE0 -> REVERSE SOLIDUS
-    u'\x1a'	#  0xE1 -> SUBSTITUTE
-    u'S'	#  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'	#  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'	#  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'	#  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'	#  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'	#  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'	#  0xEA -> SUPERSCRIPT TWO
-    u'\xa7'	#  0xEB -> SECTION SIGN
-    u'\x1a'	#  0xEC -> SUBSTITUTE
-    u'\x1a'	#  0xED -> SUBSTITUTE
-    u'\xab'	#  0xEE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xEF -> NOT SIGN
-    u'0'	#  0xF0 -> DIGIT ZERO
-    u'1'	#  0xF1 -> DIGIT ONE
-    u'2'	#  0xF2 -> DIGIT TWO
-    u'3'	#  0xF3 -> DIGIT THREE
-    u'4'	#  0xF4 -> DIGIT FOUR
-    u'5'	#  0xF5 -> DIGIT FIVE
-    u'6'	#  0xF6 -> DIGIT SIX
-    u'7'	#  0xF7 -> DIGIT SEVEN
-    u'8'	#  0xF8 -> DIGIT EIGHT
-    u'9'	#  0xF9 -> DIGIT NINE
-    u'\xb3'	#  0xFA -> SUPERSCRIPT THREE
-    u'\xa9'	#  0xFB -> COPYRIGHT SIGN
-    u'\x1a'	#  0xFC -> SUBSTITUTE
-    u'\x1a'	#  0xFD -> SUBSTITUTE
-    u'\xbb'	#  0xFE -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\x9f'	#  0xFF -> CONTROL
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x9c'     #  0x04 -> CONTROL
+    u'\t'       #  0x05 -> HORIZONTAL TABULATION
+    u'\x86'     #  0x06 -> CONTROL
+    u'\x7f'     #  0x07 -> DELETE
+    u'\x97'     #  0x08 -> CONTROL
+    u'\x8d'     #  0x09 -> CONTROL
+    u'\x8e'     #  0x0A -> CONTROL
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x9d'     #  0x14 -> CONTROL
+    u'\x85'     #  0x15 -> CONTROL
+    u'\x08'     #  0x16 -> BACKSPACE
+    u'\x87'     #  0x17 -> CONTROL
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x92'     #  0x1A -> CONTROL
+    u'\x8f'     #  0x1B -> CONTROL
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u'\x80'     #  0x20 -> CONTROL
+    u'\x81'     #  0x21 -> CONTROL
+    u'\x82'     #  0x22 -> CONTROL
+    u'\x83'     #  0x23 -> CONTROL
+    u'\x84'     #  0x24 -> CONTROL
+    u'\n'       #  0x25 -> LINE FEED
+    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
+    u'\x1b'     #  0x27 -> ESCAPE
+    u'\x88'     #  0x28 -> CONTROL
+    u'\x89'     #  0x29 -> CONTROL
+    u'\x8a'     #  0x2A -> CONTROL
+    u'\x8b'     #  0x2B -> CONTROL
+    u'\x8c'     #  0x2C -> CONTROL
+    u'\x05'     #  0x2D -> ENQUIRY
+    u'\x06'     #  0x2E -> ACKNOWLEDGE
+    u'\x07'     #  0x2F -> BELL
+    u'\x90'     #  0x30 -> CONTROL
+    u'\x91'     #  0x31 -> CONTROL
+    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
+    u'\x93'     #  0x33 -> CONTROL
+    u'\x94'     #  0x34 -> CONTROL
+    u'\x95'     #  0x35 -> CONTROL
+    u'\x96'     #  0x36 -> CONTROL
+    u'\x04'     #  0x37 -> END OF TRANSMISSION
+    u'\x98'     #  0x38 -> CONTROL
+    u'\x99'     #  0x39 -> CONTROL
+    u'\x9a'     #  0x3A -> CONTROL
+    u'\x9b'     #  0x3B -> CONTROL
+    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
+    u'\x9e'     #  0x3E -> CONTROL
+    u'\x1a'     #  0x3F -> SUBSTITUTE
+    u' '        #  0x40 -> SPACE
+    u'\u0391'   #  0x41 -> GREEK CAPITAL LETTER ALPHA
+    u'\u0392'   #  0x42 -> GREEK CAPITAL LETTER BETA
+    u'\u0393'   #  0x43 -> GREEK CAPITAL LETTER GAMMA
+    u'\u0394'   #  0x44 -> GREEK CAPITAL LETTER DELTA
+    u'\u0395'   #  0x45 -> GREEK CAPITAL LETTER EPSILON
+    u'\u0396'   #  0x46 -> GREEK CAPITAL LETTER ZETA
+    u'\u0397'   #  0x47 -> GREEK CAPITAL LETTER ETA
+    u'\u0398'   #  0x48 -> GREEK CAPITAL LETTER THETA
+    u'\u0399'   #  0x49 -> GREEK CAPITAL LETTER IOTA
+    u'['        #  0x4A -> LEFT SQUARE BRACKET
+    u'.'        #  0x4B -> FULL STOP
+    u'<'        #  0x4C -> LESS-THAN SIGN
+    u'('        #  0x4D -> LEFT PARENTHESIS
+    u'+'        #  0x4E -> PLUS SIGN
+    u'!'        #  0x4F -> EXCLAMATION MARK
+    u'&'        #  0x50 -> AMPERSAND
+    u'\u039a'   #  0x51 -> GREEK CAPITAL LETTER KAPPA
+    u'\u039b'   #  0x52 -> GREEK CAPITAL LETTER LAMDA
+    u'\u039c'   #  0x53 -> GREEK CAPITAL LETTER MU
+    u'\u039d'   #  0x54 -> GREEK CAPITAL LETTER NU
+    u'\u039e'   #  0x55 -> GREEK CAPITAL LETTER XI
+    u'\u039f'   #  0x56 -> GREEK CAPITAL LETTER OMICRON
+    u'\u03a0'   #  0x57 -> GREEK CAPITAL LETTER PI
+    u'\u03a1'   #  0x58 -> GREEK CAPITAL LETTER RHO
+    u'\u03a3'   #  0x59 -> GREEK CAPITAL LETTER SIGMA
+    u']'        #  0x5A -> RIGHT SQUARE BRACKET
+    u'$'        #  0x5B -> DOLLAR SIGN
+    u'*'        #  0x5C -> ASTERISK
+    u')'        #  0x5D -> RIGHT PARENTHESIS
+    u';'        #  0x5E -> SEMICOLON
+    u'^'        #  0x5F -> CIRCUMFLEX ACCENT
+    u'-'        #  0x60 -> HYPHEN-MINUS
+    u'/'        #  0x61 -> SOLIDUS
+    u'\u03a4'   #  0x62 -> GREEK CAPITAL LETTER TAU
+    u'\u03a5'   #  0x63 -> GREEK CAPITAL LETTER UPSILON
+    u'\u03a6'   #  0x64 -> GREEK CAPITAL LETTER PHI
+    u'\u03a7'   #  0x65 -> GREEK CAPITAL LETTER CHI
+    u'\u03a8'   #  0x66 -> GREEK CAPITAL LETTER PSI
+    u'\u03a9'   #  0x67 -> GREEK CAPITAL LETTER OMEGA
+    u'\u03aa'   #  0x68 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    u'\u03ab'   #  0x69 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    u'|'        #  0x6A -> VERTICAL LINE
+    u','        #  0x6B -> COMMA
+    u'%'        #  0x6C -> PERCENT SIGN
+    u'_'        #  0x6D -> LOW LINE
+    u'>'        #  0x6E -> GREATER-THAN SIGN
+    u'?'        #  0x6F -> QUESTION MARK
+    u'\xa8'     #  0x70 -> DIAERESIS
+    u'\u0386'   #  0x71 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
+    u'\u0388'   #  0x72 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
+    u'\u0389'   #  0x73 -> GREEK CAPITAL LETTER ETA WITH TONOS
+    u'\xa0'     #  0x74 -> NO-BREAK SPACE
+    u'\u038a'   #  0x75 -> GREEK CAPITAL LETTER IOTA WITH TONOS
+    u'\u038c'   #  0x76 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
+    u'\u038e'   #  0x77 -> GREEK CAPITAL LETTER UPSILON WITH TONOS
+    u'\u038f'   #  0x78 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
+    u'`'        #  0x79 -> GRAVE ACCENT
+    u':'        #  0x7A -> COLON
+    u'#'        #  0x7B -> NUMBER SIGN
+    u'@'        #  0x7C -> COMMERCIAL AT
+    u"'"        #  0x7D -> APOSTROPHE
+    u'='        #  0x7E -> EQUALS SIGN
+    u'"'        #  0x7F -> QUOTATION MARK
+    u'\u0385'   #  0x80 -> GREEK DIALYTIKA TONOS
+    u'a'        #  0x81 -> LATIN SMALL LETTER A
+    u'b'        #  0x82 -> LATIN SMALL LETTER B
+    u'c'        #  0x83 -> LATIN SMALL LETTER C
+    u'd'        #  0x84 -> LATIN SMALL LETTER D
+    u'e'        #  0x85 -> LATIN SMALL LETTER E
+    u'f'        #  0x86 -> LATIN SMALL LETTER F
+    u'g'        #  0x87 -> LATIN SMALL LETTER G
+    u'h'        #  0x88 -> LATIN SMALL LETTER H
+    u'i'        #  0x89 -> LATIN SMALL LETTER I
+    u'\u03b1'   #  0x8A -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'   #  0x8B -> GREEK SMALL LETTER BETA
+    u'\u03b3'   #  0x8C -> GREEK SMALL LETTER GAMMA
+    u'\u03b4'   #  0x8D -> GREEK SMALL LETTER DELTA
+    u'\u03b5'   #  0x8E -> GREEK SMALL LETTER EPSILON
+    u'\u03b6'   #  0x8F -> GREEK SMALL LETTER ZETA
+    u'\xb0'     #  0x90 -> DEGREE SIGN
+    u'j'        #  0x91 -> LATIN SMALL LETTER J
+    u'k'        #  0x92 -> LATIN SMALL LETTER K
+    u'l'        #  0x93 -> LATIN SMALL LETTER L
+    u'm'        #  0x94 -> LATIN SMALL LETTER M
+    u'n'        #  0x95 -> LATIN SMALL LETTER N
+    u'o'        #  0x96 -> LATIN SMALL LETTER O
+    u'p'        #  0x97 -> LATIN SMALL LETTER P
+    u'q'        #  0x98 -> LATIN SMALL LETTER Q
+    u'r'        #  0x99 -> LATIN SMALL LETTER R
+    u'\u03b7'   #  0x9A -> GREEK SMALL LETTER ETA
+    u'\u03b8'   #  0x9B -> GREEK SMALL LETTER THETA
+    u'\u03b9'   #  0x9C -> GREEK SMALL LETTER IOTA
+    u'\u03ba'   #  0x9D -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'   #  0x9E -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'   #  0x9F -> GREEK SMALL LETTER MU
+    u'\xb4'     #  0xA0 -> ACUTE ACCENT
+    u'~'        #  0xA1 -> TILDE
+    u's'        #  0xA2 -> LATIN SMALL LETTER S
+    u't'        #  0xA3 -> LATIN SMALL LETTER T
+    u'u'        #  0xA4 -> LATIN SMALL LETTER U
+    u'v'        #  0xA5 -> LATIN SMALL LETTER V
+    u'w'        #  0xA6 -> LATIN SMALL LETTER W
+    u'x'        #  0xA7 -> LATIN SMALL LETTER X
+    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
+    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
+    u'\u03bd'   #  0xAA -> GREEK SMALL LETTER NU
+    u'\u03be'   #  0xAB -> GREEK SMALL LETTER XI
+    u'\u03bf'   #  0xAC -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'   #  0xAD -> GREEK SMALL LETTER PI
+    u'\u03c1'   #  0xAE -> GREEK SMALL LETTER RHO
+    u'\u03c3'   #  0xAF -> GREEK SMALL LETTER SIGMA
+    u'\xa3'     #  0xB0 -> POUND SIGN
+    u'\u03ac'   #  0xB1 -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\u03ad'   #  0xB2 -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'   #  0xB3 -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03ca'   #  0xB4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u03af'   #  0xB5 -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03cc'   #  0xB6 -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u03cd'   #  0xB7 -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u03cb'   #  0xB8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u03ce'   #  0xB9 -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\u03c2'   #  0xBA -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c4'   #  0xBB -> GREEK SMALL LETTER TAU
+    u'\u03c5'   #  0xBC -> GREEK SMALL LETTER UPSILON
+    u'\u03c6'   #  0xBD -> GREEK SMALL LETTER PHI
+    u'\u03c7'   #  0xBE -> GREEK SMALL LETTER CHI
+    u'\u03c8'   #  0xBF -> GREEK SMALL LETTER PSI
+    u'{'        #  0xC0 -> LEFT CURLY BRACKET
+    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
+    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
+    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
+    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
+    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
+    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
+    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
+    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
+    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
+    u'\xad'     #  0xCA -> SOFT HYPHEN
+    u'\u03c9'   #  0xCB -> GREEK SMALL LETTER OMEGA
+    u'\u0390'   #  0xCC -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    u'\u03b0'   #  0xCD -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    u'\u2018'   #  0xCE -> LEFT SINGLE QUOTATION MARK
+    u'\u2015'   #  0xCF -> HORIZONTAL BAR
+    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
+    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
+    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
+    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
+    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
+    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
+    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
+    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
+    u'\xb1'     #  0xDA -> PLUS-MINUS SIGN
+    u'\xbd'     #  0xDB -> VULGAR FRACTION ONE HALF
+    u'\x1a'     #  0xDC -> SUBSTITUTE
+    u'\u0387'   #  0xDD -> GREEK ANO TELEIA
+    u'\u2019'   #  0xDE -> RIGHT SINGLE QUOTATION MARK
+    u'\xa6'     #  0xDF -> BROKEN BAR
+    u'\\'       #  0xE0 -> REVERSE SOLIDUS
+    u'\x1a'     #  0xE1 -> SUBSTITUTE
+    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
+    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
+    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
+    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
+    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
+    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
+    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
+    u'\xa7'     #  0xEB -> SECTION SIGN
+    u'\x1a'     #  0xEC -> SUBSTITUTE
+    u'\x1a'     #  0xED -> SUBSTITUTE
+    u'\xab'     #  0xEE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xEF -> NOT SIGN
+    u'0'        #  0xF0 -> DIGIT ZERO
+    u'1'        #  0xF1 -> DIGIT ONE
+    u'2'        #  0xF2 -> DIGIT TWO
+    u'3'        #  0xF3 -> DIGIT THREE
+    u'4'        #  0xF4 -> DIGIT FOUR
+    u'5'        #  0xF5 -> DIGIT FIVE
+    u'6'        #  0xF6 -> DIGIT SIX
+    u'7'        #  0xF7 -> DIGIT SEVEN
+    u'8'        #  0xF8 -> DIGIT EIGHT
+    u'9'        #  0xF9 -> DIGIT NINE
+    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
+    u'\xa9'     #  0xFB -> COPYRIGHT SIGN
+    u'\x1a'     #  0xFC -> SUBSTITUTE
+    u'\x1a'     #  0xFD -> SUBSTITUTE
+    u'\xbb'     #  0xFE -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\x9f'     #  0xFF -> CONTROL
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x37,	#  END OF TRANSMISSION
-    0x0005: 0x2D,	#  ENQUIRY
-    0x0006: 0x2E,	#  ACKNOWLEDGE
-    0x0007: 0x2F,	#  BELL
-    0x0008: 0x16,	#  BACKSPACE
-    0x0009: 0x05,	#  HORIZONTAL TABULATION
-    0x000A: 0x25,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x3C,	#  DEVICE CONTROL FOUR
-    0x0015: 0x3D,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x32,	#  SYNCHRONOUS IDLE
-    0x0017: 0x26,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: None,	#  SUBSTITUTE
-    0x001B: 0x27,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x40,	#  SPACE
-    0x0021: 0x4F,	#  EXCLAMATION MARK
-    0x0022: 0x7F,	#  QUOTATION MARK
-    0x0023: 0x7B,	#  NUMBER SIGN
-    0x0024: 0x5B,	#  DOLLAR SIGN
-    0x0025: 0x6C,	#  PERCENT SIGN
-    0x0026: 0x50,	#  AMPERSAND
-    0x0027: 0x7D,	#  APOSTROPHE
-    0x0028: 0x4D,	#  LEFT PARENTHESIS
-    0x0029: 0x5D,	#  RIGHT PARENTHESIS
-    0x002A: 0x5C,	#  ASTERISK
-    0x002B: 0x4E,	#  PLUS SIGN
-    0x002C: 0x6B,	#  COMMA
-    0x002D: 0x60,	#  HYPHEN-MINUS
-    0x002E: 0x4B,	#  FULL STOP
-    0x002F: 0x61,	#  SOLIDUS
-    0x0030: 0xF0,	#  DIGIT ZERO
-    0x0031: 0xF1,	#  DIGIT ONE
-    0x0032: 0xF2,	#  DIGIT TWO
-    0x0033: 0xF3,	#  DIGIT THREE
-    0x0034: 0xF4,	#  DIGIT FOUR
-    0x0035: 0xF5,	#  DIGIT FIVE
-    0x0036: 0xF6,	#  DIGIT SIX
-    0x0037: 0xF7,	#  DIGIT SEVEN
-    0x0038: 0xF8,	#  DIGIT EIGHT
-    0x0039: 0xF9,	#  DIGIT NINE
-    0x003A: 0x7A,	#  COLON
-    0x003B: 0x5E,	#  SEMICOLON
-    0x003C: 0x4C,	#  LESS-THAN SIGN
-    0x003D: 0x7E,	#  EQUALS SIGN
-    0x003E: 0x6E,	#  GREATER-THAN SIGN
-    0x003F: 0x6F,	#  QUESTION MARK
-    0x0040: 0x7C,	#  COMMERCIAL AT
-    0x0041: 0xC1,	#  LATIN CAPITAL LETTER A
-    0x0042: 0xC2,	#  LATIN CAPITAL LETTER B
-    0x0043: 0xC3,	#  LATIN CAPITAL LETTER C
-    0x0044: 0xC4,	#  LATIN CAPITAL LETTER D
-    0x0045: 0xC5,	#  LATIN CAPITAL LETTER E
-    0x0046: 0xC6,	#  LATIN CAPITAL LETTER F
-    0x0047: 0xC7,	#  LATIN CAPITAL LETTER G
-    0x0048: 0xC8,	#  LATIN CAPITAL LETTER H
-    0x0049: 0xC9,	#  LATIN CAPITAL LETTER I
-    0x004A: 0xD1,	#  LATIN CAPITAL LETTER J
-    0x004B: 0xD2,	#  LATIN CAPITAL LETTER K
-    0x004C: 0xD3,	#  LATIN CAPITAL LETTER L
-    0x004D: 0xD4,	#  LATIN CAPITAL LETTER M
-    0x004E: 0xD5,	#  LATIN CAPITAL LETTER N
-    0x004F: 0xD6,	#  LATIN CAPITAL LETTER O
-    0x0050: 0xD7,	#  LATIN CAPITAL LETTER P
-    0x0051: 0xD8,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0xD9,	#  LATIN CAPITAL LETTER R
-    0x0053: 0xE2,	#  LATIN CAPITAL LETTER S
-    0x0054: 0xE3,	#  LATIN CAPITAL LETTER T
-    0x0055: 0xE4,	#  LATIN CAPITAL LETTER U
-    0x0056: 0xE5,	#  LATIN CAPITAL LETTER V
-    0x0057: 0xE6,	#  LATIN CAPITAL LETTER W
-    0x0058: 0xE7,	#  LATIN CAPITAL LETTER X
-    0x0059: 0xE8,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0xE9,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x4A,	#  LEFT SQUARE BRACKET
-    0x005C: 0xE0,	#  REVERSE SOLIDUS
-    0x005D: 0x5A,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5F,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x6D,	#  LOW LINE
-    0x0060: 0x79,	#  GRAVE ACCENT
-    0x0061: 0x81,	#  LATIN SMALL LETTER A
-    0x0062: 0x82,	#  LATIN SMALL LETTER B
-    0x0063: 0x83,	#  LATIN SMALL LETTER C
-    0x0064: 0x84,	#  LATIN SMALL LETTER D
-    0x0065: 0x85,	#  LATIN SMALL LETTER E
-    0x0066: 0x86,	#  LATIN SMALL LETTER F
-    0x0067: 0x87,	#  LATIN SMALL LETTER G
-    0x0068: 0x88,	#  LATIN SMALL LETTER H
-    0x0069: 0x89,	#  LATIN SMALL LETTER I
-    0x006A: 0x91,	#  LATIN SMALL LETTER J
-    0x006B: 0x92,	#  LATIN SMALL LETTER K
-    0x006C: 0x93,	#  LATIN SMALL LETTER L
-    0x006D: 0x94,	#  LATIN SMALL LETTER M
-    0x006E: 0x95,	#  LATIN SMALL LETTER N
-    0x006F: 0x96,	#  LATIN SMALL LETTER O
-    0x0070: 0x97,	#  LATIN SMALL LETTER P
-    0x0071: 0x98,	#  LATIN SMALL LETTER Q
-    0x0072: 0x99,	#  LATIN SMALL LETTER R
-    0x0073: 0xA2,	#  LATIN SMALL LETTER S
-    0x0074: 0xA3,	#  LATIN SMALL LETTER T
-    0x0075: 0xA4,	#  LATIN SMALL LETTER U
-    0x0076: 0xA5,	#  LATIN SMALL LETTER V
-    0x0077: 0xA6,	#  LATIN SMALL LETTER W
-    0x0078: 0xA7,	#  LATIN SMALL LETTER X
-    0x0079: 0xA8,	#  LATIN SMALL LETTER Y
-    0x007A: 0xA9,	#  LATIN SMALL LETTER Z
-    0x007B: 0xC0,	#  LEFT CURLY BRACKET
-    0x007C: 0x6A,	#  VERTICAL LINE
-    0x007D: 0xD0,	#  RIGHT CURLY BRACKET
-    0x007E: 0xA1,	#  TILDE
-    0x007F: 0x07,	#  DELETE
-    0x0080: 0x20,	#  CONTROL
-    0x0081: 0x21,	#  CONTROL
-    0x0082: 0x22,	#  CONTROL
-    0x0083: 0x23,	#  CONTROL
-    0x0084: 0x24,	#  CONTROL
-    0x0085: 0x15,	#  CONTROL
-    0x0086: 0x06,	#  CONTROL
-    0x0087: 0x17,	#  CONTROL
-    0x0088: 0x28,	#  CONTROL
-    0x0089: 0x29,	#  CONTROL
-    0x008A: 0x2A,	#  CONTROL
-    0x008B: 0x2B,	#  CONTROL
-    0x008C: 0x2C,	#  CONTROL
-    0x008D: 0x09,	#  CONTROL
-    0x008E: 0x0A,	#  CONTROL
-    0x008F: 0x1B,	#  CONTROL
-    0x0090: 0x30,	#  CONTROL
-    0x0091: 0x31,	#  CONTROL
-    0x0092: 0x1A,	#  CONTROL
-    0x0093: 0x33,	#  CONTROL
-    0x0094: 0x34,	#  CONTROL
-    0x0095: 0x35,	#  CONTROL
-    0x0096: 0x36,	#  CONTROL
-    0x0097: 0x08,	#  CONTROL
-    0x0098: 0x38,	#  CONTROL
-    0x0099: 0x39,	#  CONTROL
-    0x009A: 0x3A,	#  CONTROL
-    0x009B: 0x3B,	#  CONTROL
-    0x009C: 0x04,	#  CONTROL
-    0x009D: 0x14,	#  CONTROL
-    0x009E: 0x3E,	#  CONTROL
-    0x009F: 0xFF,	#  CONTROL
-    0x00A0: 0x74,	#  NO-BREAK SPACE
-    0x00A3: 0xB0,	#  POUND SIGN
-    0x00A6: 0xDF,	#  BROKEN BAR
-    0x00A7: 0xEB,	#  SECTION SIGN
-    0x00A8: 0x70,	#  DIAERESIS
-    0x00A9: 0xFB,	#  COPYRIGHT SIGN
-    0x00AB: 0xEE,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xEF,	#  NOT SIGN
-    0x00AD: 0xCA,	#  SOFT HYPHEN
-    0x00B0: 0x90,	#  DEGREE SIGN
-    0x00B1: 0xDA,	#  PLUS-MINUS SIGN
-    0x00B2: 0xEA,	#  SUPERSCRIPT TWO
-    0x00B3: 0xFA,	#  SUPERSCRIPT THREE
-    0x00B4: 0xA0,	#  ACUTE ACCENT
-    0x00BB: 0xFE,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BD: 0xDB,	#  VULGAR FRACTION ONE HALF
-    0x0385: 0x80,	#  GREEK DIALYTIKA TONOS
-    0x0386: 0x71,	#  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0387: 0xDD,	#  GREEK ANO TELEIA
-    0x0388: 0x72,	#  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0x73,	#  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038A: 0x75,	#  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038C: 0x76,	#  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038E: 0x77,	#  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038F: 0x78,	#  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0xCC,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x0391: 0x41,	#  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0x42,	#  GREEK CAPITAL LETTER BETA
-    0x0393: 0x43,	#  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0x44,	#  GREEK CAPITAL LETTER DELTA
-    0x0395: 0x45,	#  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0x46,	#  GREEK CAPITAL LETTER ZETA
-    0x0397: 0x47,	#  GREEK CAPITAL LETTER ETA
-    0x0398: 0x48,	#  GREEK CAPITAL LETTER THETA
-    0x0399: 0x49,	#  GREEK CAPITAL LETTER IOTA
-    0x039A: 0x51,	#  GREEK CAPITAL LETTER KAPPA
-    0x039B: 0x52,	#  GREEK CAPITAL LETTER LAMDA
-    0x039C: 0x53,	#  GREEK CAPITAL LETTER MU
-    0x039D: 0x54,	#  GREEK CAPITAL LETTER NU
-    0x039E: 0x55,	#  GREEK CAPITAL LETTER XI
-    0x039F: 0x56,	#  GREEK CAPITAL LETTER OMICRON
-    0x03A0: 0x57,	#  GREEK CAPITAL LETTER PI
-    0x03A1: 0x58,	#  GREEK CAPITAL LETTER RHO
-    0x03A3: 0x59,	#  GREEK CAPITAL LETTER SIGMA
-    0x03A4: 0x62,	#  GREEK CAPITAL LETTER TAU
-    0x03A5: 0x63,	#  GREEK CAPITAL LETTER UPSILON
-    0x03A6: 0x64,	#  GREEK CAPITAL LETTER PHI
-    0x03A7: 0x65,	#  GREEK CAPITAL LETTER CHI
-    0x03A8: 0x66,	#  GREEK CAPITAL LETTER PSI
-    0x03A9: 0x67,	#  GREEK CAPITAL LETTER OMEGA
-    0x03AA: 0x68,	#  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03AB: 0x69,	#  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03AC: 0xB1,	#  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03AD: 0xB2,	#  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03AE: 0xB3,	#  GREEK SMALL LETTER ETA WITH TONOS
-    0x03AF: 0xB5,	#  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03B0: 0xCD,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03B1: 0x8A,	#  GREEK SMALL LETTER ALPHA
-    0x03B2: 0x8B,	#  GREEK SMALL LETTER BETA
-    0x03B3: 0x8C,	#  GREEK SMALL LETTER GAMMA
-    0x03B4: 0x8D,	#  GREEK SMALL LETTER DELTA
-    0x03B5: 0x8E,	#  GREEK SMALL LETTER EPSILON
-    0x03B6: 0x8F,	#  GREEK SMALL LETTER ZETA
-    0x03B7: 0x9A,	#  GREEK SMALL LETTER ETA
-    0x03B8: 0x9B,	#  GREEK SMALL LETTER THETA
-    0x03B9: 0x9C,	#  GREEK SMALL LETTER IOTA
-    0x03BA: 0x9D,	#  GREEK SMALL LETTER KAPPA
-    0x03BB: 0x9E,	#  GREEK SMALL LETTER LAMDA
-    0x03BC: 0x9F,	#  GREEK SMALL LETTER MU
-    0x03BD: 0xAA,	#  GREEK SMALL LETTER NU
-    0x03BE: 0xAB,	#  GREEK SMALL LETTER XI
-    0x03BF: 0xAC,	#  GREEK SMALL LETTER OMICRON
-    0x03C0: 0xAD,	#  GREEK SMALL LETTER PI
-    0x03C1: 0xAE,	#  GREEK SMALL LETTER RHO
-    0x03C2: 0xBA,	#  GREEK SMALL LETTER FINAL SIGMA
-    0x03C3: 0xAF,	#  GREEK SMALL LETTER SIGMA
-    0x03C4: 0xBB,	#  GREEK SMALL LETTER TAU
-    0x03C5: 0xBC,	#  GREEK SMALL LETTER UPSILON
-    0x03C6: 0xBD,	#  GREEK SMALL LETTER PHI
-    0x03C7: 0xBE,	#  GREEK SMALL LETTER CHI
-    0x03C8: 0xBF,	#  GREEK SMALL LETTER PSI
-    0x03C9: 0xCB,	#  GREEK SMALL LETTER OMEGA
-    0x03CA: 0xB4,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03CB: 0xB8,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03CC: 0xB6,	#  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03CD: 0xB7,	#  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03CE: 0xB9,	#  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x2015: 0xCF,	#  HORIZONTAL BAR
-    0x2018: 0xCE,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xDE,	#  RIGHT SINGLE QUOTATION MARK
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x37,       #  END OF TRANSMISSION
+    0x0005: 0x2D,       #  ENQUIRY
+    0x0006: 0x2E,       #  ACKNOWLEDGE
+    0x0007: 0x2F,       #  BELL
+    0x0008: 0x16,       #  BACKSPACE
+    0x0009: 0x05,       #  HORIZONTAL TABULATION
+    0x000A: 0x25,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x3C,       #  DEVICE CONTROL FOUR
+    0x0015: 0x3D,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x32,       #  SYNCHRONOUS IDLE
+    0x0017: 0x26,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: None,       #  SUBSTITUTE
+    0x001B: 0x27,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x40,       #  SPACE
+    0x0021: 0x4F,       #  EXCLAMATION MARK
+    0x0022: 0x7F,       #  QUOTATION MARK
+    0x0023: 0x7B,       #  NUMBER SIGN
+    0x0024: 0x5B,       #  DOLLAR SIGN
+    0x0025: 0x6C,       #  PERCENT SIGN
+    0x0026: 0x50,       #  AMPERSAND
+    0x0027: 0x7D,       #  APOSTROPHE
+    0x0028: 0x4D,       #  LEFT PARENTHESIS
+    0x0029: 0x5D,       #  RIGHT PARENTHESIS
+    0x002A: 0x5C,       #  ASTERISK
+    0x002B: 0x4E,       #  PLUS SIGN
+    0x002C: 0x6B,       #  COMMA
+    0x002D: 0x60,       #  HYPHEN-MINUS
+    0x002E: 0x4B,       #  FULL STOP
+    0x002F: 0x61,       #  SOLIDUS
+    0x0030: 0xF0,       #  DIGIT ZERO
+    0x0031: 0xF1,       #  DIGIT ONE
+    0x0032: 0xF2,       #  DIGIT TWO
+    0x0033: 0xF3,       #  DIGIT THREE
+    0x0034: 0xF4,       #  DIGIT FOUR
+    0x0035: 0xF5,       #  DIGIT FIVE
+    0x0036: 0xF6,       #  DIGIT SIX
+    0x0037: 0xF7,       #  DIGIT SEVEN
+    0x0038: 0xF8,       #  DIGIT EIGHT
+    0x0039: 0xF9,       #  DIGIT NINE
+    0x003A: 0x7A,       #  COLON
+    0x003B: 0x5E,       #  SEMICOLON
+    0x003C: 0x4C,       #  LESS-THAN SIGN
+    0x003D: 0x7E,       #  EQUALS SIGN
+    0x003E: 0x6E,       #  GREATER-THAN SIGN
+    0x003F: 0x6F,       #  QUESTION MARK
+    0x0040: 0x7C,       #  COMMERCIAL AT
+    0x0041: 0xC1,       #  LATIN CAPITAL LETTER A
+    0x0042: 0xC2,       #  LATIN CAPITAL LETTER B
+    0x0043: 0xC3,       #  LATIN CAPITAL LETTER C
+    0x0044: 0xC4,       #  LATIN CAPITAL LETTER D
+    0x0045: 0xC5,       #  LATIN CAPITAL LETTER E
+    0x0046: 0xC6,       #  LATIN CAPITAL LETTER F
+    0x0047: 0xC7,       #  LATIN CAPITAL LETTER G
+    0x0048: 0xC8,       #  LATIN CAPITAL LETTER H
+    0x0049: 0xC9,       #  LATIN CAPITAL LETTER I
+    0x004A: 0xD1,       #  LATIN CAPITAL LETTER J
+    0x004B: 0xD2,       #  LATIN CAPITAL LETTER K
+    0x004C: 0xD3,       #  LATIN CAPITAL LETTER L
+    0x004D: 0xD4,       #  LATIN CAPITAL LETTER M
+    0x004E: 0xD5,       #  LATIN CAPITAL LETTER N
+    0x004F: 0xD6,       #  LATIN CAPITAL LETTER O
+    0x0050: 0xD7,       #  LATIN CAPITAL LETTER P
+    0x0051: 0xD8,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0xD9,       #  LATIN CAPITAL LETTER R
+    0x0053: 0xE2,       #  LATIN CAPITAL LETTER S
+    0x0054: 0xE3,       #  LATIN CAPITAL LETTER T
+    0x0055: 0xE4,       #  LATIN CAPITAL LETTER U
+    0x0056: 0xE5,       #  LATIN CAPITAL LETTER V
+    0x0057: 0xE6,       #  LATIN CAPITAL LETTER W
+    0x0058: 0xE7,       #  LATIN CAPITAL LETTER X
+    0x0059: 0xE8,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0xE9,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x4A,       #  LEFT SQUARE BRACKET
+    0x005C: 0xE0,       #  REVERSE SOLIDUS
+    0x005D: 0x5A,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5F,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x6D,       #  LOW LINE
+    0x0060: 0x79,       #  GRAVE ACCENT
+    0x0061: 0x81,       #  LATIN SMALL LETTER A
+    0x0062: 0x82,       #  LATIN SMALL LETTER B
+    0x0063: 0x83,       #  LATIN SMALL LETTER C
+    0x0064: 0x84,       #  LATIN SMALL LETTER D
+    0x0065: 0x85,       #  LATIN SMALL LETTER E
+    0x0066: 0x86,       #  LATIN SMALL LETTER F
+    0x0067: 0x87,       #  LATIN SMALL LETTER G
+    0x0068: 0x88,       #  LATIN SMALL LETTER H
+    0x0069: 0x89,       #  LATIN SMALL LETTER I
+    0x006A: 0x91,       #  LATIN SMALL LETTER J
+    0x006B: 0x92,       #  LATIN SMALL LETTER K
+    0x006C: 0x93,       #  LATIN SMALL LETTER L
+    0x006D: 0x94,       #  LATIN SMALL LETTER M
+    0x006E: 0x95,       #  LATIN SMALL LETTER N
+    0x006F: 0x96,       #  LATIN SMALL LETTER O
+    0x0070: 0x97,       #  LATIN SMALL LETTER P
+    0x0071: 0x98,       #  LATIN SMALL LETTER Q
+    0x0072: 0x99,       #  LATIN SMALL LETTER R
+    0x0073: 0xA2,       #  LATIN SMALL LETTER S
+    0x0074: 0xA3,       #  LATIN SMALL LETTER T
+    0x0075: 0xA4,       #  LATIN SMALL LETTER U
+    0x0076: 0xA5,       #  LATIN SMALL LETTER V
+    0x0077: 0xA6,       #  LATIN SMALL LETTER W
+    0x0078: 0xA7,       #  LATIN SMALL LETTER X
+    0x0079: 0xA8,       #  LATIN SMALL LETTER Y
+    0x007A: 0xA9,       #  LATIN SMALL LETTER Z
+    0x007B: 0xC0,       #  LEFT CURLY BRACKET
+    0x007C: 0x6A,       #  VERTICAL LINE
+    0x007D: 0xD0,       #  RIGHT CURLY BRACKET
+    0x007E: 0xA1,       #  TILDE
+    0x007F: 0x07,       #  DELETE
+    0x0080: 0x20,       #  CONTROL
+    0x0081: 0x21,       #  CONTROL
+    0x0082: 0x22,       #  CONTROL
+    0x0083: 0x23,       #  CONTROL
+    0x0084: 0x24,       #  CONTROL
+    0x0085: 0x15,       #  CONTROL
+    0x0086: 0x06,       #  CONTROL
+    0x0087: 0x17,       #  CONTROL
+    0x0088: 0x28,       #  CONTROL
+    0x0089: 0x29,       #  CONTROL
+    0x008A: 0x2A,       #  CONTROL
+    0x008B: 0x2B,       #  CONTROL
+    0x008C: 0x2C,       #  CONTROL
+    0x008D: 0x09,       #  CONTROL
+    0x008E: 0x0A,       #  CONTROL
+    0x008F: 0x1B,       #  CONTROL
+    0x0090: 0x30,       #  CONTROL
+    0x0091: 0x31,       #  CONTROL
+    0x0092: 0x1A,       #  CONTROL
+    0x0093: 0x33,       #  CONTROL
+    0x0094: 0x34,       #  CONTROL
+    0x0095: 0x35,       #  CONTROL
+    0x0096: 0x36,       #  CONTROL
+    0x0097: 0x08,       #  CONTROL
+    0x0098: 0x38,       #  CONTROL
+    0x0099: 0x39,       #  CONTROL
+    0x009A: 0x3A,       #  CONTROL
+    0x009B: 0x3B,       #  CONTROL
+    0x009C: 0x04,       #  CONTROL
+    0x009D: 0x14,       #  CONTROL
+    0x009E: 0x3E,       #  CONTROL
+    0x009F: 0xFF,       #  CONTROL
+    0x00A0: 0x74,       #  NO-BREAK SPACE
+    0x00A3: 0xB0,       #  POUND SIGN
+    0x00A6: 0xDF,       #  BROKEN BAR
+    0x00A7: 0xEB,       #  SECTION SIGN
+    0x00A8: 0x70,       #  DIAERESIS
+    0x00A9: 0xFB,       #  COPYRIGHT SIGN
+    0x00AB: 0xEE,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xEF,       #  NOT SIGN
+    0x00AD: 0xCA,       #  SOFT HYPHEN
+    0x00B0: 0x90,       #  DEGREE SIGN
+    0x00B1: 0xDA,       #  PLUS-MINUS SIGN
+    0x00B2: 0xEA,       #  SUPERSCRIPT TWO
+    0x00B3: 0xFA,       #  SUPERSCRIPT THREE
+    0x00B4: 0xA0,       #  ACUTE ACCENT
+    0x00BB: 0xFE,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BD: 0xDB,       #  VULGAR FRACTION ONE HALF
+    0x0385: 0x80,       #  GREEK DIALYTIKA TONOS
+    0x0386: 0x71,       #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0387: 0xDD,       #  GREEK ANO TELEIA
+    0x0388: 0x72,       #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x0389: 0x73,       #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x038A: 0x75,       #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038C: 0x76,       #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038E: 0x77,       #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038F: 0x78,       #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0390: 0xCC,       #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x0391: 0x41,       #  GREEK CAPITAL LETTER ALPHA
+    0x0392: 0x42,       #  GREEK CAPITAL LETTER BETA
+    0x0393: 0x43,       #  GREEK CAPITAL LETTER GAMMA
+    0x0394: 0x44,       #  GREEK CAPITAL LETTER DELTA
+    0x0395: 0x45,       #  GREEK CAPITAL LETTER EPSILON
+    0x0396: 0x46,       #  GREEK CAPITAL LETTER ZETA
+    0x0397: 0x47,       #  GREEK CAPITAL LETTER ETA
+    0x0398: 0x48,       #  GREEK CAPITAL LETTER THETA
+    0x0399: 0x49,       #  GREEK CAPITAL LETTER IOTA
+    0x039A: 0x51,       #  GREEK CAPITAL LETTER KAPPA
+    0x039B: 0x52,       #  GREEK CAPITAL LETTER LAMDA
+    0x039C: 0x53,       #  GREEK CAPITAL LETTER MU
+    0x039D: 0x54,       #  GREEK CAPITAL LETTER NU
+    0x039E: 0x55,       #  GREEK CAPITAL LETTER XI
+    0x039F: 0x56,       #  GREEK CAPITAL LETTER OMICRON
+    0x03A0: 0x57,       #  GREEK CAPITAL LETTER PI
+    0x03A1: 0x58,       #  GREEK CAPITAL LETTER RHO
+    0x03A3: 0x59,       #  GREEK CAPITAL LETTER SIGMA
+    0x03A4: 0x62,       #  GREEK CAPITAL LETTER TAU
+    0x03A5: 0x63,       #  GREEK CAPITAL LETTER UPSILON
+    0x03A6: 0x64,       #  GREEK CAPITAL LETTER PHI
+    0x03A7: 0x65,       #  GREEK CAPITAL LETTER CHI
+    0x03A8: 0x66,       #  GREEK CAPITAL LETTER PSI
+    0x03A9: 0x67,       #  GREEK CAPITAL LETTER OMEGA
+    0x03AA: 0x68,       #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03AB: 0x69,       #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03AC: 0xB1,       #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03AD: 0xB2,       #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03AE: 0xB3,       #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03AF: 0xB5,       #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03B0: 0xCD,       #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x03B1: 0x8A,       #  GREEK SMALL LETTER ALPHA
+    0x03B2: 0x8B,       #  GREEK SMALL LETTER BETA
+    0x03B3: 0x8C,       #  GREEK SMALL LETTER GAMMA
+    0x03B4: 0x8D,       #  GREEK SMALL LETTER DELTA
+    0x03B5: 0x8E,       #  GREEK SMALL LETTER EPSILON
+    0x03B6: 0x8F,       #  GREEK SMALL LETTER ZETA
+    0x03B7: 0x9A,       #  GREEK SMALL LETTER ETA
+    0x03B8: 0x9B,       #  GREEK SMALL LETTER THETA
+    0x03B9: 0x9C,       #  GREEK SMALL LETTER IOTA
+    0x03BA: 0x9D,       #  GREEK SMALL LETTER KAPPA
+    0x03BB: 0x9E,       #  GREEK SMALL LETTER LAMDA
+    0x03BC: 0x9F,       #  GREEK SMALL LETTER MU
+    0x03BD: 0xAA,       #  GREEK SMALL LETTER NU
+    0x03BE: 0xAB,       #  GREEK SMALL LETTER XI
+    0x03BF: 0xAC,       #  GREEK SMALL LETTER OMICRON
+    0x03C0: 0xAD,       #  GREEK SMALL LETTER PI
+    0x03C1: 0xAE,       #  GREEK SMALL LETTER RHO
+    0x03C2: 0xBA,       #  GREEK SMALL LETTER FINAL SIGMA
+    0x03C3: 0xAF,       #  GREEK SMALL LETTER SIGMA
+    0x03C4: 0xBB,       #  GREEK SMALL LETTER TAU
+    0x03C5: 0xBC,       #  GREEK SMALL LETTER UPSILON
+    0x03C6: 0xBD,       #  GREEK SMALL LETTER PHI
+    0x03C7: 0xBE,       #  GREEK SMALL LETTER CHI
+    0x03C8: 0xBF,       #  GREEK SMALL LETTER PSI
+    0x03C9: 0xCB,       #  GREEK SMALL LETTER OMEGA
+    0x03CA: 0xB4,       #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03CB: 0xB8,       #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03CC: 0xB6,       #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03CD: 0xB7,       #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03CE: 0xB9,       #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x2015: 0xCF,       #  HORIZONTAL BAR
+    0x2018: 0xCE,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xDE,       #  RIGHT SINGLE QUOTATION MARK
 }
-

Modified: python/trunk/Lib/encodings/iso8859_1.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_1.py	(original)
+++ python/trunk/Lib/encodings/iso8859_1.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\xa1'	#  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'	#  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'	#  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'	#  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'	#  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'	#  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'	#  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'	#  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'	#  0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
-    u'\xd1'	#  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'	#  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'	#  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'	#  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'	#  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'	#  0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S (German)
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'	#  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'	#  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'	#  0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
-    u'\xf1'	#  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'	#  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\xf8'	#  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'	#  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'	#  0xFE -> LATIN SMALL LETTER THORN (Icelandic)
-    u'\xff'	#  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xd0'     #  0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
+    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S (German)
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf0'     #  0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
+    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'     #  0xFE -> LATIN SMALL LETTER THORN (Icelandic)
+    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A1: 0xA1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xAA,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BA: 0xBA,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xBF,	#  INVERTED QUESTION MARK
-    0x00C0: 0xC0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xC3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xC8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xCA,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xCC,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D0: 0xD0,	#  LATIN CAPITAL LETTER ETH (Icelandic)
-    0x00D1: 0xD1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xD2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D8: 0xD8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xD9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xDD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DE: 0xDE,	#  LATIN CAPITAL LETTER THORN (Icelandic)
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S (German)
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0xE3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0xEC,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F0: 0xF0,	#  LATIN SMALL LETTER ETH (Icelandic)
-    0x00F1: 0xF1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xF2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F8: 0xF8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0xFD,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00FE: 0xFE,	#  LATIN SMALL LETTER THORN (Icelandic)
-    0x00FF: 0xFF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A1: 0xA1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xAA,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,       #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xD0,       #  LATIN CAPITAL LETTER ETH (Icelandic)
+    0x00D1: 0xD1,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,       #  LATIN CAPITAL LETTER THORN (Icelandic)
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S (German)
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xF0,       #  LATIN SMALL LETTER ETH (Icelandic)
+    0x00F1: 0xF1,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F8: 0xF8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xFE,       #  LATIN SMALL LETTER THORN (Icelandic)
+    0x00FF: 0xFF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
 }
-

Modified: python/trunk/Lib/encodings/iso8859_10.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_10.py	(original)
+++ python/trunk/Lib/encodings/iso8859_10.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u0104'	#  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0112'	#  0xA2 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0122'	#  0xA3 -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u012a'	#  0xA4 -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u0128'	#  0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
-    u'\u0136'	#  0xA6 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\u013b'	#  0xA8 -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u0110'	#  0xA9 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0160'	#  0xAA -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0166'	#  0xAB -> LATIN CAPITAL LETTER T WITH STROKE
-    u'\u017d'	#  0xAC -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\u016a'	#  0xAE -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\u014a'	#  0xAF -> LATIN CAPITAL LETTER ENG
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\u0105'	#  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u0113'	#  0xB2 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0123'	#  0xB3 -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u012b'	#  0xB4 -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0129'	#  0xB5 -> LATIN SMALL LETTER I WITH TILDE
-    u'\u0137'	#  0xB6 -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\u013c'	#  0xB8 -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0111'	#  0xB9 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0161'	#  0xBA -> LATIN SMALL LETTER S WITH CARON
-    u'\u0167'	#  0xBB -> LATIN SMALL LETTER T WITH STROKE
-    u'\u017e'	#  0xBC -> LATIN SMALL LETTER Z WITH CARON
-    u'\u2015'	#  0xBD -> HORIZONTAL BAR
-    u'\u016b'	#  0xBE -> LATIN SMALL LETTER U WITH MACRON
-    u'\u014b'	#  0xBF -> LATIN SMALL LETTER ENG
-    u'\u0100'	#  0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'	#  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\u012e'	#  0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u010c'	#  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'	#  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u0116'	#  0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'	#  0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
-    u'\u0145'	#  0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u014c'	#  0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u0168'	#  0xD7 -> LATIN CAPITAL LETTER U WITH TILDE
-    u'\xd8'	#  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u0172'	#  0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'	#  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'	#  0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S (German)
-    u'\u0101'	#  0xE0 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'	#  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\u012f'	#  0xE7 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u010d'	#  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'	#  0xEA -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0117'	#  0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'	#  0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
-    u'\u0146'	#  0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u014d'	#  0xF2 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u0169'	#  0xF7 -> LATIN SMALL LETTER U WITH TILDE
-    u'\xf8'	#  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\u0173'	#  0xF9 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'	#  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'	#  0xFE -> LATIN SMALL LETTER THORN (Icelandic)
-    u'\u0138'	#  0xFF -> LATIN SMALL LETTER KRA
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u0104'   #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u0112'   #  0xA2 -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u0122'   #  0xA3 -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u012a'   #  0xA4 -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u0128'   #  0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
+    u'\u0136'   #  0xA6 -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\u013b'   #  0xA8 -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\u0110'   #  0xA9 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0160'   #  0xAA -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u0166'   #  0xAB -> LATIN CAPITAL LETTER T WITH STROKE
+    u'\u017d'   #  0xAC -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\u016a'   #  0xAE -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\u014a'   #  0xAF -> LATIN CAPITAL LETTER ENG
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\u0105'   #  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u0113'   #  0xB2 -> LATIN SMALL LETTER E WITH MACRON
+    u'\u0123'   #  0xB3 -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u012b'   #  0xB4 -> LATIN SMALL LETTER I WITH MACRON
+    u'\u0129'   #  0xB5 -> LATIN SMALL LETTER I WITH TILDE
+    u'\u0137'   #  0xB6 -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\u013c'   #  0xB8 -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u0111'   #  0xB9 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0161'   #  0xBA -> LATIN SMALL LETTER S WITH CARON
+    u'\u0167'   #  0xBB -> LATIN SMALL LETTER T WITH STROKE
+    u'\u017e'   #  0xBC -> LATIN SMALL LETTER Z WITH CARON
+    u'\u2015'   #  0xBD -> HORIZONTAL BAR
+    u'\u016b'   #  0xBE -> LATIN SMALL LETTER U WITH MACRON
+    u'\u014b'   #  0xBF -> LATIN SMALL LETTER ENG
+    u'\u0100'   #  0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\u012e'   #  0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0118'   #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u0116'   #  0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xd0'     #  0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
+    u'\u0145'   #  0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\u014c'   #  0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\u0168'   #  0xD7 -> LATIN CAPITAL LETTER U WITH TILDE
+    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u0172'   #  0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S (German)
+    u'\u0101'   #  0xE0 -> LATIN SMALL LETTER A WITH MACRON
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\u012f'   #  0xE7 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0119'   #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u0117'   #  0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf0'     #  0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
+    u'\u0146'   #  0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\u014d'   #  0xF2 -> LATIN SMALL LETTER O WITH MACRON
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\u0169'   #  0xF7 -> LATIN SMALL LETTER U WITH TILDE
+    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\u0173'   #  0xF9 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'     #  0xFE -> LATIN SMALL LETTER THORN (Icelandic)
+    u'\u0138'   #  0xFF -> LATIN SMALL LETTER KRA
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xC3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D0: 0xD0,	#  LATIN CAPITAL LETTER ETH (Icelandic)
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D8: 0xD8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xDD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DE: 0xDE,	#  LATIN CAPITAL LETTER THORN (Icelandic)
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S (German)
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0xE3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F0: 0xF0,	#  LATIN SMALL LETTER ETH (Icelandic)
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F8: 0xF8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0xFD,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00FE: 0xFE,	#  LATIN SMALL LETTER THORN (Icelandic)
-    0x0100: 0xC0,	#  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0xE0,	#  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0xA1,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xB1,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x010C: 0xC8,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010D: 0xE8,	#  LATIN SMALL LETTER C WITH CARON
-    0x0110: 0xA9,	#  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xB9,	#  LATIN SMALL LETTER D WITH STROKE
-    0x0112: 0xA2,	#  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0xB2,	#  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0xCC,	#  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0xEC,	#  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xCA,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xEA,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0xA3,	#  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xB3,	#  LATIN SMALL LETTER G WITH CEDILLA
-    0x0128: 0xA5,	#  LATIN CAPITAL LETTER I WITH TILDE
-    0x0129: 0xB5,	#  LATIN SMALL LETTER I WITH TILDE
-    0x012A: 0xA4,	#  LATIN CAPITAL LETTER I WITH MACRON
-    0x012B: 0xB4,	#  LATIN SMALL LETTER I WITH MACRON
-    0x012E: 0xC7,	#  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012F: 0xE7,	#  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xA6,	#  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xB6,	#  LATIN SMALL LETTER K WITH CEDILLA
-    0x0138: 0xFF,	#  LATIN SMALL LETTER KRA
-    0x013B: 0xA8,	#  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013C: 0xB8,	#  LATIN SMALL LETTER L WITH CEDILLA
-    0x0145: 0xD1,	#  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xF1,	#  LATIN SMALL LETTER N WITH CEDILLA
-    0x014A: 0xAF,	#  LATIN CAPITAL LETTER ENG
-    0x014B: 0xBF,	#  LATIN SMALL LETTER ENG
-    0x014C: 0xD2,	#  LATIN CAPITAL LETTER O WITH MACRON
-    0x014D: 0xF2,	#  LATIN SMALL LETTER O WITH MACRON
-    0x0160: 0xAA,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xBA,	#  LATIN SMALL LETTER S WITH CARON
-    0x0166: 0xAB,	#  LATIN CAPITAL LETTER T WITH STROKE
-    0x0167: 0xBB,	#  LATIN SMALL LETTER T WITH STROKE
-    0x0168: 0xD7,	#  LATIN CAPITAL LETTER U WITH TILDE
-    0x0169: 0xF7,	#  LATIN SMALL LETTER U WITH TILDE
-    0x016A: 0xAE,	#  LATIN CAPITAL LETTER U WITH MACRON
-    0x016B: 0xBE,	#  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0xD9,	#  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xF9,	#  LATIN SMALL LETTER U WITH OGONEK
-    0x017D: 0xAC,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0xBC,	#  LATIN SMALL LETTER Z WITH CARON
-    0x2015: 0xBD,	#  HORIZONTAL BAR
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xD0,       #  LATIN CAPITAL LETTER ETH (Icelandic)
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xD8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,       #  LATIN CAPITAL LETTER THORN (Icelandic)
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S (German)
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xF0,       #  LATIN SMALL LETTER ETH (Icelandic)
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F8: 0xF8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xFE,       #  LATIN SMALL LETTER THORN (Icelandic)
+    0x0100: 0xC0,       #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0xE0,       #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0xA1,       #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xB1,       #  LATIN SMALL LETTER A WITH OGONEK
+    0x010C: 0xC8,       #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,       #  LATIN SMALL LETTER C WITH CARON
+    0x0110: 0xA9,       #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xB9,       #  LATIN SMALL LETTER D WITH STROKE
+    0x0112: 0xA2,       #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0xB2,       #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0xCC,       #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0xEC,       #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0xCA,       #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xEA,       #  LATIN SMALL LETTER E WITH OGONEK
+    0x0122: 0xA3,       #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xB3,       #  LATIN SMALL LETTER G WITH CEDILLA
+    0x0128: 0xA5,       #  LATIN CAPITAL LETTER I WITH TILDE
+    0x0129: 0xB5,       #  LATIN SMALL LETTER I WITH TILDE
+    0x012A: 0xA4,       #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xB4,       #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xC7,       #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xE7,       #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xA6,       #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xB6,       #  LATIN SMALL LETTER K WITH CEDILLA
+    0x0138: 0xFF,       #  LATIN SMALL LETTER KRA
+    0x013B: 0xA8,       #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xB8,       #  LATIN SMALL LETTER L WITH CEDILLA
+    0x0145: 0xD1,       #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xF1,       #  LATIN SMALL LETTER N WITH CEDILLA
+    0x014A: 0xAF,       #  LATIN CAPITAL LETTER ENG
+    0x014B: 0xBF,       #  LATIN SMALL LETTER ENG
+    0x014C: 0xD2,       #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xF2,       #  LATIN SMALL LETTER O WITH MACRON
+    0x0160: 0xAA,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xBA,       #  LATIN SMALL LETTER S WITH CARON
+    0x0166: 0xAB,       #  LATIN CAPITAL LETTER T WITH STROKE
+    0x0167: 0xBB,       #  LATIN SMALL LETTER T WITH STROKE
+    0x0168: 0xD7,       #  LATIN CAPITAL LETTER U WITH TILDE
+    0x0169: 0xF7,       #  LATIN SMALL LETTER U WITH TILDE
+    0x016A: 0xAE,       #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xBE,       #  LATIN SMALL LETTER U WITH MACRON
+    0x0172: 0xD9,       #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF9,       #  LATIN SMALL LETTER U WITH OGONEK
+    0x017D: 0xAC,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xBC,       #  LATIN SMALL LETTER Z WITH CARON
+    0x2015: 0xBD,       #  HORIZONTAL BAR
 }
-

Modified: python/trunk/Lib/encodings/iso8859_11.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_11.py	(original)
+++ python/trunk/Lib/encodings/iso8859_11.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,258 +32,258 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u0e01'	#  0xA1 -> THAI CHARACTER KO KAI
-    u'\u0e02'	#  0xA2 -> THAI CHARACTER KHO KHAI
-    u'\u0e03'	#  0xA3 -> THAI CHARACTER KHO KHUAT
-    u'\u0e04'	#  0xA4 -> THAI CHARACTER KHO KHWAI
-    u'\u0e05'	#  0xA5 -> THAI CHARACTER KHO KHON
-    u'\u0e06'	#  0xA6 -> THAI CHARACTER KHO RAKHANG
-    u'\u0e07'	#  0xA7 -> THAI CHARACTER NGO NGU
-    u'\u0e08'	#  0xA8 -> THAI CHARACTER CHO CHAN
-    u'\u0e09'	#  0xA9 -> THAI CHARACTER CHO CHING
-    u'\u0e0a'	#  0xAA -> THAI CHARACTER CHO CHANG
-    u'\u0e0b'	#  0xAB -> THAI CHARACTER SO SO
-    u'\u0e0c'	#  0xAC -> THAI CHARACTER CHO CHOE
-    u'\u0e0d'	#  0xAD -> THAI CHARACTER YO YING
-    u'\u0e0e'	#  0xAE -> THAI CHARACTER DO CHADA
-    u'\u0e0f'	#  0xAF -> THAI CHARACTER TO PATAK
-    u'\u0e10'	#  0xB0 -> THAI CHARACTER THO THAN
-    u'\u0e11'	#  0xB1 -> THAI CHARACTER THO NANGMONTHO
-    u'\u0e12'	#  0xB2 -> THAI CHARACTER THO PHUTHAO
-    u'\u0e13'	#  0xB3 -> THAI CHARACTER NO NEN
-    u'\u0e14'	#  0xB4 -> THAI CHARACTER DO DEK
-    u'\u0e15'	#  0xB5 -> THAI CHARACTER TO TAO
-    u'\u0e16'	#  0xB6 -> THAI CHARACTER THO THUNG
-    u'\u0e17'	#  0xB7 -> THAI CHARACTER THO THAHAN
-    u'\u0e18'	#  0xB8 -> THAI CHARACTER THO THONG
-    u'\u0e19'	#  0xB9 -> THAI CHARACTER NO NU
-    u'\u0e1a'	#  0xBA -> THAI CHARACTER BO BAIMAI
-    u'\u0e1b'	#  0xBB -> THAI CHARACTER PO PLA
-    u'\u0e1c'	#  0xBC -> THAI CHARACTER PHO PHUNG
-    u'\u0e1d'	#  0xBD -> THAI CHARACTER FO FA
-    u'\u0e1e'	#  0xBE -> THAI CHARACTER PHO PHAN
-    u'\u0e1f'	#  0xBF -> THAI CHARACTER FO FAN
-    u'\u0e20'	#  0xC0 -> THAI CHARACTER PHO SAMPHAO
-    u'\u0e21'	#  0xC1 -> THAI CHARACTER MO MA
-    u'\u0e22'	#  0xC2 -> THAI CHARACTER YO YAK
-    u'\u0e23'	#  0xC3 -> THAI CHARACTER RO RUA
-    u'\u0e24'	#  0xC4 -> THAI CHARACTER RU
-    u'\u0e25'	#  0xC5 -> THAI CHARACTER LO LING
-    u'\u0e26'	#  0xC6 -> THAI CHARACTER LU
-    u'\u0e27'	#  0xC7 -> THAI CHARACTER WO WAEN
-    u'\u0e28'	#  0xC8 -> THAI CHARACTER SO SALA
-    u'\u0e29'	#  0xC9 -> THAI CHARACTER SO RUSI
-    u'\u0e2a'	#  0xCA -> THAI CHARACTER SO SUA
-    u'\u0e2b'	#  0xCB -> THAI CHARACTER HO HIP
-    u'\u0e2c'	#  0xCC -> THAI CHARACTER LO CHULA
-    u'\u0e2d'	#  0xCD -> THAI CHARACTER O ANG
-    u'\u0e2e'	#  0xCE -> THAI CHARACTER HO NOKHUK
-    u'\u0e2f'	#  0xCF -> THAI CHARACTER PAIYANNOI
-    u'\u0e30'	#  0xD0 -> THAI CHARACTER SARA A
-    u'\u0e31'	#  0xD1 -> THAI CHARACTER MAI HAN-AKAT
-    u'\u0e32'	#  0xD2 -> THAI CHARACTER SARA AA
-    u'\u0e33'	#  0xD3 -> THAI CHARACTER SARA AM
-    u'\u0e34'	#  0xD4 -> THAI CHARACTER SARA I
-    u'\u0e35'	#  0xD5 -> THAI CHARACTER SARA II
-    u'\u0e36'	#  0xD6 -> THAI CHARACTER SARA UE
-    u'\u0e37'	#  0xD7 -> THAI CHARACTER SARA UEE
-    u'\u0e38'	#  0xD8 -> THAI CHARACTER SARA U
-    u'\u0e39'	#  0xD9 -> THAI CHARACTER SARA UU
-    u'\u0e3a'	#  0xDA -> THAI CHARACTER PHINTHU
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u0e01'   #  0xA1 -> THAI CHARACTER KO KAI
+    u'\u0e02'   #  0xA2 -> THAI CHARACTER KHO KHAI
+    u'\u0e03'   #  0xA3 -> THAI CHARACTER KHO KHUAT
+    u'\u0e04'   #  0xA4 -> THAI CHARACTER KHO KHWAI
+    u'\u0e05'   #  0xA5 -> THAI CHARACTER KHO KHON
+    u'\u0e06'   #  0xA6 -> THAI CHARACTER KHO RAKHANG
+    u'\u0e07'   #  0xA7 -> THAI CHARACTER NGO NGU
+    u'\u0e08'   #  0xA8 -> THAI CHARACTER CHO CHAN
+    u'\u0e09'   #  0xA9 -> THAI CHARACTER CHO CHING
+    u'\u0e0a'   #  0xAA -> THAI CHARACTER CHO CHANG
+    u'\u0e0b'   #  0xAB -> THAI CHARACTER SO SO
+    u'\u0e0c'   #  0xAC -> THAI CHARACTER CHO CHOE
+    u'\u0e0d'   #  0xAD -> THAI CHARACTER YO YING
+    u'\u0e0e'   #  0xAE -> THAI CHARACTER DO CHADA
+    u'\u0e0f'   #  0xAF -> THAI CHARACTER TO PATAK
+    u'\u0e10'   #  0xB0 -> THAI CHARACTER THO THAN
+    u'\u0e11'   #  0xB1 -> THAI CHARACTER THO NANGMONTHO
+    u'\u0e12'   #  0xB2 -> THAI CHARACTER THO PHUTHAO
+    u'\u0e13'   #  0xB3 -> THAI CHARACTER NO NEN
+    u'\u0e14'   #  0xB4 -> THAI CHARACTER DO DEK
+    u'\u0e15'   #  0xB5 -> THAI CHARACTER TO TAO
+    u'\u0e16'   #  0xB6 -> THAI CHARACTER THO THUNG
+    u'\u0e17'   #  0xB7 -> THAI CHARACTER THO THAHAN
+    u'\u0e18'   #  0xB8 -> THAI CHARACTER THO THONG
+    u'\u0e19'   #  0xB9 -> THAI CHARACTER NO NU
+    u'\u0e1a'   #  0xBA -> THAI CHARACTER BO BAIMAI
+    u'\u0e1b'   #  0xBB -> THAI CHARACTER PO PLA
+    u'\u0e1c'   #  0xBC -> THAI CHARACTER PHO PHUNG
+    u'\u0e1d'   #  0xBD -> THAI CHARACTER FO FA
+    u'\u0e1e'   #  0xBE -> THAI CHARACTER PHO PHAN
+    u'\u0e1f'   #  0xBF -> THAI CHARACTER FO FAN
+    u'\u0e20'   #  0xC0 -> THAI CHARACTER PHO SAMPHAO
+    u'\u0e21'   #  0xC1 -> THAI CHARACTER MO MA
+    u'\u0e22'   #  0xC2 -> THAI CHARACTER YO YAK
+    u'\u0e23'   #  0xC3 -> THAI CHARACTER RO RUA
+    u'\u0e24'   #  0xC4 -> THAI CHARACTER RU
+    u'\u0e25'   #  0xC5 -> THAI CHARACTER LO LING
+    u'\u0e26'   #  0xC6 -> THAI CHARACTER LU
+    u'\u0e27'   #  0xC7 -> THAI CHARACTER WO WAEN
+    u'\u0e28'   #  0xC8 -> THAI CHARACTER SO SALA
+    u'\u0e29'   #  0xC9 -> THAI CHARACTER SO RUSI
+    u'\u0e2a'   #  0xCA -> THAI CHARACTER SO SUA
+    u'\u0e2b'   #  0xCB -> THAI CHARACTER HO HIP
+    u'\u0e2c'   #  0xCC -> THAI CHARACTER LO CHULA
+    u'\u0e2d'   #  0xCD -> THAI CHARACTER O ANG
+    u'\u0e2e'   #  0xCE -> THAI CHARACTER HO NOKHUK
+    u'\u0e2f'   #  0xCF -> THAI CHARACTER PAIYANNOI
+    u'\u0e30'   #  0xD0 -> THAI CHARACTER SARA A
+    u'\u0e31'   #  0xD1 -> THAI CHARACTER MAI HAN-AKAT
+    u'\u0e32'   #  0xD2 -> THAI CHARACTER SARA AA
+    u'\u0e33'   #  0xD3 -> THAI CHARACTER SARA AM
+    u'\u0e34'   #  0xD4 -> THAI CHARACTER SARA I
+    u'\u0e35'   #  0xD5 -> THAI CHARACTER SARA II
+    u'\u0e36'   #  0xD6 -> THAI CHARACTER SARA UE
+    u'\u0e37'   #  0xD7 -> THAI CHARACTER SARA UEE
+    u'\u0e38'   #  0xD8 -> THAI CHARACTER SARA U
+    u'\u0e39'   #  0xD9 -> THAI CHARACTER SARA UU
+    u'\u0e3a'   #  0xDA -> THAI CHARACTER PHINTHU
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u0e3f'	#  0xDF -> THAI CURRENCY SYMBOL BAHT
-    u'\u0e40'	#  0xE0 -> THAI CHARACTER SARA E
-    u'\u0e41'	#  0xE1 -> THAI CHARACTER SARA AE
-    u'\u0e42'	#  0xE2 -> THAI CHARACTER SARA O
-    u'\u0e43'	#  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
-    u'\u0e44'	#  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
-    u'\u0e45'	#  0xE5 -> THAI CHARACTER LAKKHANGYAO
-    u'\u0e46'	#  0xE6 -> THAI CHARACTER MAIYAMOK
-    u'\u0e47'	#  0xE7 -> THAI CHARACTER MAITAIKHU
-    u'\u0e48'	#  0xE8 -> THAI CHARACTER MAI EK
-    u'\u0e49'	#  0xE9 -> THAI CHARACTER MAI THO
-    u'\u0e4a'	#  0xEA -> THAI CHARACTER MAI TRI
-    u'\u0e4b'	#  0xEB -> THAI CHARACTER MAI CHATTAWA
-    u'\u0e4c'	#  0xEC -> THAI CHARACTER THANTHAKHAT
-    u'\u0e4d'	#  0xED -> THAI CHARACTER NIKHAHIT
-    u'\u0e4e'	#  0xEE -> THAI CHARACTER YAMAKKAN
-    u'\u0e4f'	#  0xEF -> THAI CHARACTER FONGMAN
-    u'\u0e50'	#  0xF0 -> THAI DIGIT ZERO
-    u'\u0e51'	#  0xF1 -> THAI DIGIT ONE
-    u'\u0e52'	#  0xF2 -> THAI DIGIT TWO
-    u'\u0e53'	#  0xF3 -> THAI DIGIT THREE
-    u'\u0e54'	#  0xF4 -> THAI DIGIT FOUR
-    u'\u0e55'	#  0xF5 -> THAI DIGIT FIVE
-    u'\u0e56'	#  0xF6 -> THAI DIGIT SIX
-    u'\u0e57'	#  0xF7 -> THAI DIGIT SEVEN
-    u'\u0e58'	#  0xF8 -> THAI DIGIT EIGHT
-    u'\u0e59'	#  0xF9 -> THAI DIGIT NINE
-    u'\u0e5a'	#  0xFA -> THAI CHARACTER ANGKHANKHU
-    u'\u0e5b'	#  0xFB -> THAI CHARACTER KHOMUT
+    u'\u0e3f'   #  0xDF -> THAI CURRENCY SYMBOL BAHT
+    u'\u0e40'   #  0xE0 -> THAI CHARACTER SARA E
+    u'\u0e41'   #  0xE1 -> THAI CHARACTER SARA AE
+    u'\u0e42'   #  0xE2 -> THAI CHARACTER SARA O
+    u'\u0e43'   #  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
+    u'\u0e44'   #  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
+    u'\u0e45'   #  0xE5 -> THAI CHARACTER LAKKHANGYAO
+    u'\u0e46'   #  0xE6 -> THAI CHARACTER MAIYAMOK
+    u'\u0e47'   #  0xE7 -> THAI CHARACTER MAITAIKHU
+    u'\u0e48'   #  0xE8 -> THAI CHARACTER MAI EK
+    u'\u0e49'   #  0xE9 -> THAI CHARACTER MAI THO
+    u'\u0e4a'   #  0xEA -> THAI CHARACTER MAI TRI
+    u'\u0e4b'   #  0xEB -> THAI CHARACTER MAI CHATTAWA
+    u'\u0e4c'   #  0xEC -> THAI CHARACTER THANTHAKHAT
+    u'\u0e4d'   #  0xED -> THAI CHARACTER NIKHAHIT
+    u'\u0e4e'   #  0xEE -> THAI CHARACTER YAMAKKAN
+    u'\u0e4f'   #  0xEF -> THAI CHARACTER FONGMAN
+    u'\u0e50'   #  0xF0 -> THAI DIGIT ZERO
+    u'\u0e51'   #  0xF1 -> THAI DIGIT ONE
+    u'\u0e52'   #  0xF2 -> THAI DIGIT TWO
+    u'\u0e53'   #  0xF3 -> THAI DIGIT THREE
+    u'\u0e54'   #  0xF4 -> THAI DIGIT FOUR
+    u'\u0e55'   #  0xF5 -> THAI DIGIT FIVE
+    u'\u0e56'   #  0xF6 -> THAI DIGIT SIX
+    u'\u0e57'   #  0xF7 -> THAI DIGIT SEVEN
+    u'\u0e58'   #  0xF8 -> THAI DIGIT EIGHT
+    u'\u0e59'   #  0xF9 -> THAI DIGIT NINE
+    u'\u0e5a'   #  0xFA -> THAI CHARACTER ANGKHANKHU
+    u'\u0e5b'   #  0xFB -> THAI CHARACTER KHOMUT
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -293,253 +293,252 @@
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x0E01: 0xA1,	#  THAI CHARACTER KO KAI
-    0x0E02: 0xA2,	#  THAI CHARACTER KHO KHAI
-    0x0E03: 0xA3,	#  THAI CHARACTER KHO KHUAT
-    0x0E04: 0xA4,	#  THAI CHARACTER KHO KHWAI
-    0x0E05: 0xA5,	#  THAI CHARACTER KHO KHON
-    0x0E06: 0xA6,	#  THAI CHARACTER KHO RAKHANG
-    0x0E07: 0xA7,	#  THAI CHARACTER NGO NGU
-    0x0E08: 0xA8,	#  THAI CHARACTER CHO CHAN
-    0x0E09: 0xA9,	#  THAI CHARACTER CHO CHING
-    0x0E0A: 0xAA,	#  THAI CHARACTER CHO CHANG
-    0x0E0B: 0xAB,	#  THAI CHARACTER SO SO
-    0x0E0C: 0xAC,	#  THAI CHARACTER CHO CHOE
-    0x0E0D: 0xAD,	#  THAI CHARACTER YO YING
-    0x0E0E: 0xAE,	#  THAI CHARACTER DO CHADA
-    0x0E0F: 0xAF,	#  THAI CHARACTER TO PATAK
-    0x0E10: 0xB0,	#  THAI CHARACTER THO THAN
-    0x0E11: 0xB1,	#  THAI CHARACTER THO NANGMONTHO
-    0x0E12: 0xB2,	#  THAI CHARACTER THO PHUTHAO
-    0x0E13: 0xB3,	#  THAI CHARACTER NO NEN
-    0x0E14: 0xB4,	#  THAI CHARACTER DO DEK
-    0x0E15: 0xB5,	#  THAI CHARACTER TO TAO
-    0x0E16: 0xB6,	#  THAI CHARACTER THO THUNG
-    0x0E17: 0xB7,	#  THAI CHARACTER THO THAHAN
-    0x0E18: 0xB8,	#  THAI CHARACTER THO THONG
-    0x0E19: 0xB9,	#  THAI CHARACTER NO NU
-    0x0E1A: 0xBA,	#  THAI CHARACTER BO BAIMAI
-    0x0E1B: 0xBB,	#  THAI CHARACTER PO PLA
-    0x0E1C: 0xBC,	#  THAI CHARACTER PHO PHUNG
-    0x0E1D: 0xBD,	#  THAI CHARACTER FO FA
-    0x0E1E: 0xBE,	#  THAI CHARACTER PHO PHAN
-    0x0E1F: 0xBF,	#  THAI CHARACTER FO FAN
-    0x0E20: 0xC0,	#  THAI CHARACTER PHO SAMPHAO
-    0x0E21: 0xC1,	#  THAI CHARACTER MO MA
-    0x0E22: 0xC2,	#  THAI CHARACTER YO YAK
-    0x0E23: 0xC3,	#  THAI CHARACTER RO RUA
-    0x0E24: 0xC4,	#  THAI CHARACTER RU
-    0x0E25: 0xC5,	#  THAI CHARACTER LO LING
-    0x0E26: 0xC6,	#  THAI CHARACTER LU
-    0x0E27: 0xC7,	#  THAI CHARACTER WO WAEN
-    0x0E28: 0xC8,	#  THAI CHARACTER SO SALA
-    0x0E29: 0xC9,	#  THAI CHARACTER SO RUSI
-    0x0E2A: 0xCA,	#  THAI CHARACTER SO SUA
-    0x0E2B: 0xCB,	#  THAI CHARACTER HO HIP
-    0x0E2C: 0xCC,	#  THAI CHARACTER LO CHULA
-    0x0E2D: 0xCD,	#  THAI CHARACTER O ANG
-    0x0E2E: 0xCE,	#  THAI CHARACTER HO NOKHUK
-    0x0E2F: 0xCF,	#  THAI CHARACTER PAIYANNOI
-    0x0E30: 0xD0,	#  THAI CHARACTER SARA A
-    0x0E31: 0xD1,	#  THAI CHARACTER MAI HAN-AKAT
-    0x0E32: 0xD2,	#  THAI CHARACTER SARA AA
-    0x0E33: 0xD3,	#  THAI CHARACTER SARA AM
-    0x0E34: 0xD4,	#  THAI CHARACTER SARA I
-    0x0E35: 0xD5,	#  THAI CHARACTER SARA II
-    0x0E36: 0xD6,	#  THAI CHARACTER SARA UE
-    0x0E37: 0xD7,	#  THAI CHARACTER SARA UEE
-    0x0E38: 0xD8,	#  THAI CHARACTER SARA U
-    0x0E39: 0xD9,	#  THAI CHARACTER SARA UU
-    0x0E3A: 0xDA,	#  THAI CHARACTER PHINTHU
-    0x0E3F: 0xDF,	#  THAI CURRENCY SYMBOL BAHT
-    0x0E40: 0xE0,	#  THAI CHARACTER SARA E
-    0x0E41: 0xE1,	#  THAI CHARACTER SARA AE
-    0x0E42: 0xE2,	#  THAI CHARACTER SARA O
-    0x0E43: 0xE3,	#  THAI CHARACTER SARA AI MAIMUAN
-    0x0E44: 0xE4,	#  THAI CHARACTER SARA AI MAIMALAI
-    0x0E45: 0xE5,	#  THAI CHARACTER LAKKHANGYAO
-    0x0E46: 0xE6,	#  THAI CHARACTER MAIYAMOK
-    0x0E47: 0xE7,	#  THAI CHARACTER MAITAIKHU
-    0x0E48: 0xE8,	#  THAI CHARACTER MAI EK
-    0x0E49: 0xE9,	#  THAI CHARACTER MAI THO
-    0x0E4A: 0xEA,	#  THAI CHARACTER MAI TRI
-    0x0E4B: 0xEB,	#  THAI CHARACTER MAI CHATTAWA
-    0x0E4C: 0xEC,	#  THAI CHARACTER THANTHAKHAT
-    0x0E4D: 0xED,	#  THAI CHARACTER NIKHAHIT
-    0x0E4E: 0xEE,	#  THAI CHARACTER YAMAKKAN
-    0x0E4F: 0xEF,	#  THAI CHARACTER FONGMAN
-    0x0E50: 0xF0,	#  THAI DIGIT ZERO
-    0x0E51: 0xF1,	#  THAI DIGIT ONE
-    0x0E52: 0xF2,	#  THAI DIGIT TWO
-    0x0E53: 0xF3,	#  THAI DIGIT THREE
-    0x0E54: 0xF4,	#  THAI DIGIT FOUR
-    0x0E55: 0xF5,	#  THAI DIGIT FIVE
-    0x0E56: 0xF6,	#  THAI DIGIT SIX
-    0x0E57: 0xF7,	#  THAI DIGIT SEVEN
-    0x0E58: 0xF8,	#  THAI DIGIT EIGHT
-    0x0E59: 0xF9,	#  THAI DIGIT NINE
-    0x0E5A: 0xFA,	#  THAI CHARACTER ANGKHANKHU
-    0x0E5B: 0xFB,	#  THAI CHARACTER KHOMUT
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x0E01: 0xA1,       #  THAI CHARACTER KO KAI
+    0x0E02: 0xA2,       #  THAI CHARACTER KHO KHAI
+    0x0E03: 0xA3,       #  THAI CHARACTER KHO KHUAT
+    0x0E04: 0xA4,       #  THAI CHARACTER KHO KHWAI
+    0x0E05: 0xA5,       #  THAI CHARACTER KHO KHON
+    0x0E06: 0xA6,       #  THAI CHARACTER KHO RAKHANG
+    0x0E07: 0xA7,       #  THAI CHARACTER NGO NGU
+    0x0E08: 0xA8,       #  THAI CHARACTER CHO CHAN
+    0x0E09: 0xA9,       #  THAI CHARACTER CHO CHING
+    0x0E0A: 0xAA,       #  THAI CHARACTER CHO CHANG
+    0x0E0B: 0xAB,       #  THAI CHARACTER SO SO
+    0x0E0C: 0xAC,       #  THAI CHARACTER CHO CHOE
+    0x0E0D: 0xAD,       #  THAI CHARACTER YO YING
+    0x0E0E: 0xAE,       #  THAI CHARACTER DO CHADA
+    0x0E0F: 0xAF,       #  THAI CHARACTER TO PATAK
+    0x0E10: 0xB0,       #  THAI CHARACTER THO THAN
+    0x0E11: 0xB1,       #  THAI CHARACTER THO NANGMONTHO
+    0x0E12: 0xB2,       #  THAI CHARACTER THO PHUTHAO
+    0x0E13: 0xB3,       #  THAI CHARACTER NO NEN
+    0x0E14: 0xB4,       #  THAI CHARACTER DO DEK
+    0x0E15: 0xB5,       #  THAI CHARACTER TO TAO
+    0x0E16: 0xB6,       #  THAI CHARACTER THO THUNG
+    0x0E17: 0xB7,       #  THAI CHARACTER THO THAHAN
+    0x0E18: 0xB8,       #  THAI CHARACTER THO THONG
+    0x0E19: 0xB9,       #  THAI CHARACTER NO NU
+    0x0E1A: 0xBA,       #  THAI CHARACTER BO BAIMAI
+    0x0E1B: 0xBB,       #  THAI CHARACTER PO PLA
+    0x0E1C: 0xBC,       #  THAI CHARACTER PHO PHUNG
+    0x0E1D: 0xBD,       #  THAI CHARACTER FO FA
+    0x0E1E: 0xBE,       #  THAI CHARACTER PHO PHAN
+    0x0E1F: 0xBF,       #  THAI CHARACTER FO FAN
+    0x0E20: 0xC0,       #  THAI CHARACTER PHO SAMPHAO
+    0x0E21: 0xC1,       #  THAI CHARACTER MO MA
+    0x0E22: 0xC2,       #  THAI CHARACTER YO YAK
+    0x0E23: 0xC3,       #  THAI CHARACTER RO RUA
+    0x0E24: 0xC4,       #  THAI CHARACTER RU
+    0x0E25: 0xC5,       #  THAI CHARACTER LO LING
+    0x0E26: 0xC6,       #  THAI CHARACTER LU
+    0x0E27: 0xC7,       #  THAI CHARACTER WO WAEN
+    0x0E28: 0xC8,       #  THAI CHARACTER SO SALA
+    0x0E29: 0xC9,       #  THAI CHARACTER SO RUSI
+    0x0E2A: 0xCA,       #  THAI CHARACTER SO SUA
+    0x0E2B: 0xCB,       #  THAI CHARACTER HO HIP
+    0x0E2C: 0xCC,       #  THAI CHARACTER LO CHULA
+    0x0E2D: 0xCD,       #  THAI CHARACTER O ANG
+    0x0E2E: 0xCE,       #  THAI CHARACTER HO NOKHUK
+    0x0E2F: 0xCF,       #  THAI CHARACTER PAIYANNOI
+    0x0E30: 0xD0,       #  THAI CHARACTER SARA A
+    0x0E31: 0xD1,       #  THAI CHARACTER MAI HAN-AKAT
+    0x0E32: 0xD2,       #  THAI CHARACTER SARA AA
+    0x0E33: 0xD3,       #  THAI CHARACTER SARA AM
+    0x0E34: 0xD4,       #  THAI CHARACTER SARA I
+    0x0E35: 0xD5,       #  THAI CHARACTER SARA II
+    0x0E36: 0xD6,       #  THAI CHARACTER SARA UE
+    0x0E37: 0xD7,       #  THAI CHARACTER SARA UEE
+    0x0E38: 0xD8,       #  THAI CHARACTER SARA U
+    0x0E39: 0xD9,       #  THAI CHARACTER SARA UU
+    0x0E3A: 0xDA,       #  THAI CHARACTER PHINTHU
+    0x0E3F: 0xDF,       #  THAI CURRENCY SYMBOL BAHT
+    0x0E40: 0xE0,       #  THAI CHARACTER SARA E
+    0x0E41: 0xE1,       #  THAI CHARACTER SARA AE
+    0x0E42: 0xE2,       #  THAI CHARACTER SARA O
+    0x0E43: 0xE3,       #  THAI CHARACTER SARA AI MAIMUAN
+    0x0E44: 0xE4,       #  THAI CHARACTER SARA AI MAIMALAI
+    0x0E45: 0xE5,       #  THAI CHARACTER LAKKHANGYAO
+    0x0E46: 0xE6,       #  THAI CHARACTER MAIYAMOK
+    0x0E47: 0xE7,       #  THAI CHARACTER MAITAIKHU
+    0x0E48: 0xE8,       #  THAI CHARACTER MAI EK
+    0x0E49: 0xE9,       #  THAI CHARACTER MAI THO
+    0x0E4A: 0xEA,       #  THAI CHARACTER MAI TRI
+    0x0E4B: 0xEB,       #  THAI CHARACTER MAI CHATTAWA
+    0x0E4C: 0xEC,       #  THAI CHARACTER THANTHAKHAT
+    0x0E4D: 0xED,       #  THAI CHARACTER NIKHAHIT
+    0x0E4E: 0xEE,       #  THAI CHARACTER YAMAKKAN
+    0x0E4F: 0xEF,       #  THAI CHARACTER FONGMAN
+    0x0E50: 0xF0,       #  THAI DIGIT ZERO
+    0x0E51: 0xF1,       #  THAI DIGIT ONE
+    0x0E52: 0xF2,       #  THAI DIGIT TWO
+    0x0E53: 0xF3,       #  THAI DIGIT THREE
+    0x0E54: 0xF4,       #  THAI DIGIT FOUR
+    0x0E55: 0xF5,       #  THAI DIGIT FIVE
+    0x0E56: 0xF6,       #  THAI DIGIT SIX
+    0x0E57: 0xF7,       #  THAI DIGIT SEVEN
+    0x0E58: 0xF8,       #  THAI DIGIT EIGHT
+    0x0E59: 0xF9,       #  THAI DIGIT NINE
+    0x0E5A: 0xFA,       #  THAI CHARACTER ANGKHANKHU
+    0x0E5B: 0xFB,       #  THAI CHARACTER KHOMUT
 }
-

Modified: python/trunk/Lib/encodings/iso8859_13.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_13.py	(original)
+++ python/trunk/Lib/encodings/iso8859_13.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u201d'	#  0xA1 -> RIGHT DOUBLE QUOTATION MARK
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\u201e'	#  0xA5 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xd8'	#  0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u0156'	#  0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xc6'	#  0xAF -> LATIN CAPITAL LETTER AE
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\u201c'	#  0xB4 -> LEFT DOUBLE QUOTATION MARK
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xf8'	#  0xB8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\u0157'	#  0xBA -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xe6'	#  0xBF -> LATIN SMALL LETTER AE
-    u'\u0104'	#  0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u012e'	#  0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u0100'	#  0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u0106'	#  0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\u0118'	#  0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0112'	#  0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u010c'	#  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0179'	#  0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\u0116'	#  0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\u0122'	#  0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u0136'	#  0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u012a'	#  0xCE -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u013b'	#  0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u0160'	#  0xD0 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0143'	#  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0145'	#  0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\u014c'	#  0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\u0172'	#  0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u0141'	#  0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u015a'	#  0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u016a'	#  0xDB -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u017b'	#  0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017d'	#  0xDE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S (German)
-    u'\u0105'	#  0xE0 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u012f'	#  0xE1 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u0101'	#  0xE2 -> LATIN SMALL LETTER A WITH MACRON
-    u'\u0107'	#  0xE3 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\u0119'	#  0xE6 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u0113'	#  0xE7 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u010d'	#  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u017a'	#  0xEA -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u0117'	#  0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\u0123'	#  0xEC -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u0137'	#  0xED -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u012b'	#  0xEE -> LATIN SMALL LETTER I WITH MACRON
-    u'\u013c'	#  0xEF -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0161'	#  0xF0 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0144'	#  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0146'	#  0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u014d'	#  0xF4 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\u0173'	#  0xF8 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\u0142'	#  0xF9 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u015b'	#  0xFA -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u016b'	#  0xFB -> LATIN SMALL LETTER U WITH MACRON
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u017c'	#  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u017e'	#  0xFE -> LATIN SMALL LETTER Z WITH CARON
-    u'\u2019'	#  0xFF -> RIGHT SINGLE QUOTATION MARK
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u201d'   #  0xA1 -> RIGHT DOUBLE QUOTATION MARK
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\u201e'   #  0xA5 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xd8'     #  0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u0156'   #  0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xc6'     #  0xAF -> LATIN CAPITAL LETTER AE
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\u201c'   #  0xB4 -> LEFT DOUBLE QUOTATION MARK
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xf8'     #  0xB8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\u0157'   #  0xBA -> LATIN SMALL LETTER R WITH CEDILLA
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xe6'     #  0xBF -> LATIN SMALL LETTER AE
+    u'\u0104'   #  0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u012e'   #  0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u0100'   #  0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\u0106'   #  0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\u0118'   #  0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\u0112'   #  0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0179'   #  0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\u0116'   #  0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\u0122'   #  0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u0136'   #  0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\u012a'   #  0xCE -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u013b'   #  0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\u0160'   #  0xD0 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\u0145'   #  0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\u014c'   #  0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0172'   #  0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\u0141'   #  0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\u015a'   #  0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u016a'   #  0xDB -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u017b'   #  0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\u017d'   #  0xDE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S (German)
+    u'\u0105'   #  0xE0 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u012f'   #  0xE1 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u0101'   #  0xE2 -> LATIN SMALL LETTER A WITH MACRON
+    u'\u0107'   #  0xE3 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\u0119'   #  0xE6 -> LATIN SMALL LETTER E WITH OGONEK
+    u'\u0113'   #  0xE7 -> LATIN SMALL LETTER E WITH MACRON
+    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u017a'   #  0xEA -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u0117'   #  0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\u0123'   #  0xEC -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u0137'   #  0xED -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\u012b'   #  0xEE -> LATIN SMALL LETTER I WITH MACRON
+    u'\u013c'   #  0xEF -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u0161'   #  0xF0 -> LATIN SMALL LETTER S WITH CARON
+    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0146'   #  0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\u014d'   #  0xF4 -> LATIN SMALL LETTER O WITH MACRON
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\u0173'   #  0xF8 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\u0142'   #  0xF9 -> LATIN SMALL LETTER L WITH STROKE
+    u'\u015b'   #  0xFA -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u016b'   #  0xFB -> LATIN SMALL LETTER U WITH MACRON
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u017c'   #  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u017e'   #  0xFE -> LATIN SMALL LETTER Z WITH CARON
+    u'\u2019'   #  0xFF -> RIGHT SINGLE QUOTATION MARK
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xAF,	#  LATIN CAPITAL LETTER AE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D8: 0xA8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S (German)
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xBF,	#  LATIN SMALL LETTER AE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F8: 0xB8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0100: 0xC2,	#  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0xE2,	#  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0xC0,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xE0,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xC3,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xE3,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x010C: 0xC8,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010D: 0xE8,	#  LATIN SMALL LETTER C WITH CARON
-    0x0112: 0xC7,	#  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0xE7,	#  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0xCB,	#  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0xEB,	#  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xC6,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xE6,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0xCC,	#  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xEC,	#  LATIN SMALL LETTER G WITH CEDILLA
-    0x012A: 0xCE,	#  LATIN CAPITAL LETTER I WITH MACRON
-    0x012B: 0xEE,	#  LATIN SMALL LETTER I WITH MACRON
-    0x012E: 0xC1,	#  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012F: 0xE1,	#  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xCD,	#  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xED,	#  LATIN SMALL LETTER K WITH CEDILLA
-    0x013B: 0xCF,	#  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013C: 0xEF,	#  LATIN SMALL LETTER L WITH CEDILLA
-    0x0141: 0xD9,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xF9,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xD1,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xF1,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x0145: 0xD2,	#  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xF2,	#  LATIN SMALL LETTER N WITH CEDILLA
-    0x014C: 0xD4,	#  LATIN CAPITAL LETTER O WITH MACRON
-    0x014D: 0xF4,	#  LATIN SMALL LETTER O WITH MACRON
-    0x0156: 0xAA,	#  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0xBA,	#  LATIN SMALL LETTER R WITH CEDILLA
-    0x015A: 0xDA,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015B: 0xFA,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0xD0,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xF0,	#  LATIN SMALL LETTER S WITH CARON
-    0x016A: 0xDB,	#  LATIN CAPITAL LETTER U WITH MACRON
-    0x016B: 0xFB,	#  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0xD8,	#  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xF8,	#  LATIN SMALL LETTER U WITH OGONEK
-    0x0179: 0xCA,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017A: 0xEA,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x017B: 0xDD,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017C: 0xFD,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017D: 0xDE,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0xFE,	#  LATIN SMALL LETTER Z WITH CARON
-    0x2019: 0xFF,	#  RIGHT SINGLE QUOTATION MARK
-    0x201C: 0xB4,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0xA1,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0xA5,	#  DOUBLE LOW-9 QUOTATION MARK
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAF,       #  LATIN CAPITAL LETTER AE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D8: 0xA8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S (German)
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBF,       #  LATIN SMALL LETTER AE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F8: 0xB8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0100: 0xC2,       #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0xE2,       #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0xC0,       #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xE0,       #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC3,       #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE3,       #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,       #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,       #  LATIN SMALL LETTER C WITH CARON
+    0x0112: 0xC7,       #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0xE7,       #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0xCB,       #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0xEB,       #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0xC6,       #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xE6,       #  LATIN SMALL LETTER E WITH OGONEK
+    0x0122: 0xCC,       #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xEC,       #  LATIN SMALL LETTER G WITH CEDILLA
+    0x012A: 0xCE,       #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xEE,       #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xC1,       #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xE1,       #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xCD,       #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xED,       #  LATIN SMALL LETTER K WITH CEDILLA
+    0x013B: 0xCF,       #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xEF,       #  LATIN SMALL LETTER L WITH CEDILLA
+    0x0141: 0xD9,       #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xF9,       #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,       #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,       #  LATIN SMALL LETTER N WITH ACUTE
+    0x0145: 0xD2,       #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xF2,       #  LATIN SMALL LETTER N WITH CEDILLA
+    0x014C: 0xD4,       #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xF4,       #  LATIN SMALL LETTER O WITH MACRON
+    0x0156: 0xAA,       #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x0157: 0xBA,       #  LATIN SMALL LETTER R WITH CEDILLA
+    0x015A: 0xDA,       #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xFA,       #  LATIN SMALL LETTER S WITH ACUTE
+    0x0160: 0xD0,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xF0,       #  LATIN SMALL LETTER S WITH CARON
+    0x016A: 0xDB,       #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xFB,       #  LATIN SMALL LETTER U WITH MACRON
+    0x0172: 0xD8,       #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF8,       #  LATIN SMALL LETTER U WITH OGONEK
+    0x0179: 0xCA,       #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0xEA,       #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xDD,       #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xFD,       #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xDE,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xFE,       #  LATIN SMALL LETTER Z WITH CARON
+    0x2019: 0xFF,       #  RIGHT SINGLE QUOTATION MARK
+    0x201C: 0xB4,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xA1,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xA5,       #  DOUBLE LOW-9 QUOTATION MARK
 }
-

Modified: python/trunk/Lib/encodings/iso8859_14.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_14.py	(original)
+++ python/trunk/Lib/encodings/iso8859_14.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u1e02'	#  0xA1 -> LATIN CAPITAL LETTER B WITH DOT ABOVE
-    u'\u1e03'	#  0xA2 -> LATIN SMALL LETTER B WITH DOT ABOVE
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\u010a'	#  0xA4 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
-    u'\u010b'	#  0xA5 -> LATIN SMALL LETTER C WITH DOT ABOVE
-    u'\u1e0a'	#  0xA6 -> LATIN CAPITAL LETTER D WITH DOT ABOVE
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\u1e80'	#  0xA8 -> LATIN CAPITAL LETTER W WITH GRAVE
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u1e82'	#  0xAA -> LATIN CAPITAL LETTER W WITH ACUTE
-    u'\u1e0b'	#  0xAB -> LATIN SMALL LETTER D WITH DOT ABOVE
-    u'\u1ef2'	#  0xAC -> LATIN CAPITAL LETTER Y WITH GRAVE
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\u0178'	#  0xAF -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u1e1e'	#  0xB0 -> LATIN CAPITAL LETTER F WITH DOT ABOVE
-    u'\u1e1f'	#  0xB1 -> LATIN SMALL LETTER F WITH DOT ABOVE
-    u'\u0120'	#  0xB2 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
-    u'\u0121'	#  0xB3 -> LATIN SMALL LETTER G WITH DOT ABOVE
-    u'\u1e40'	#  0xB4 -> LATIN CAPITAL LETTER M WITH DOT ABOVE
-    u'\u1e41'	#  0xB5 -> LATIN SMALL LETTER M WITH DOT ABOVE
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\u1e56'	#  0xB7 -> LATIN CAPITAL LETTER P WITH DOT ABOVE
-    u'\u1e81'	#  0xB8 -> LATIN SMALL LETTER W WITH GRAVE
-    u'\u1e57'	#  0xB9 -> LATIN SMALL LETTER P WITH DOT ABOVE
-    u'\u1e83'	#  0xBA -> LATIN SMALL LETTER W WITH ACUTE
-    u'\u1e60'	#  0xBB -> LATIN CAPITAL LETTER S WITH DOT ABOVE
-    u'\u1ef3'	#  0xBC -> LATIN SMALL LETTER Y WITH GRAVE
-    u'\u1e84'	#  0xBD -> LATIN CAPITAL LETTER W WITH DIAERESIS
-    u'\u1e85'	#  0xBE -> LATIN SMALL LETTER W WITH DIAERESIS
-    u'\u1e61'	#  0xBF -> LATIN SMALL LETTER S WITH DOT ABOVE
-    u'\xc0'	#  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'	#  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'	#  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'	#  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u0174'	#  0xD0 -> LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-    u'\xd1'	#  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'	#  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u1e6a'	#  0xD7 -> LATIN CAPITAL LETTER T WITH DOT ABOVE
-    u'\xd8'	#  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'	#  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'	#  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0176'	#  0xDE -> LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'	#  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'	#  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u0175'	#  0xF0 -> LATIN SMALL LETTER W WITH CIRCUMFLEX
-    u'\xf1'	#  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'	#  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u1e6b'	#  0xF7 -> LATIN SMALL LETTER T WITH DOT ABOVE
-    u'\xf8'	#  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'	#  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0177'	#  0xFE -> LATIN SMALL LETTER Y WITH CIRCUMFLEX
-    u'\xff'	#  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u1e02'   #  0xA1 -> LATIN CAPITAL LETTER B WITH DOT ABOVE
+    u'\u1e03'   #  0xA2 -> LATIN SMALL LETTER B WITH DOT ABOVE
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\u010a'   #  0xA4 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
+    u'\u010b'   #  0xA5 -> LATIN SMALL LETTER C WITH DOT ABOVE
+    u'\u1e0a'   #  0xA6 -> LATIN CAPITAL LETTER D WITH DOT ABOVE
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\u1e80'   #  0xA8 -> LATIN CAPITAL LETTER W WITH GRAVE
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u1e82'   #  0xAA -> LATIN CAPITAL LETTER W WITH ACUTE
+    u'\u1e0b'   #  0xAB -> LATIN SMALL LETTER D WITH DOT ABOVE
+    u'\u1ef2'   #  0xAC -> LATIN CAPITAL LETTER Y WITH GRAVE
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\u0178'   #  0xAF -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u1e1e'   #  0xB0 -> LATIN CAPITAL LETTER F WITH DOT ABOVE
+    u'\u1e1f'   #  0xB1 -> LATIN SMALL LETTER F WITH DOT ABOVE
+    u'\u0120'   #  0xB2 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
+    u'\u0121'   #  0xB3 -> LATIN SMALL LETTER G WITH DOT ABOVE
+    u'\u1e40'   #  0xB4 -> LATIN CAPITAL LETTER M WITH DOT ABOVE
+    u'\u1e41'   #  0xB5 -> LATIN SMALL LETTER M WITH DOT ABOVE
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\u1e56'   #  0xB7 -> LATIN CAPITAL LETTER P WITH DOT ABOVE
+    u'\u1e81'   #  0xB8 -> LATIN SMALL LETTER W WITH GRAVE
+    u'\u1e57'   #  0xB9 -> LATIN SMALL LETTER P WITH DOT ABOVE
+    u'\u1e83'   #  0xBA -> LATIN SMALL LETTER W WITH ACUTE
+    u'\u1e60'   #  0xBB -> LATIN CAPITAL LETTER S WITH DOT ABOVE
+    u'\u1ef3'   #  0xBC -> LATIN SMALL LETTER Y WITH GRAVE
+    u'\u1e84'   #  0xBD -> LATIN CAPITAL LETTER W WITH DIAERESIS
+    u'\u1e85'   #  0xBE -> LATIN SMALL LETTER W WITH DIAERESIS
+    u'\u1e61'   #  0xBF -> LATIN SMALL LETTER S WITH DOT ABOVE
+    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u0174'   #  0xD0 -> LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\u1e6a'   #  0xD7 -> LATIN CAPITAL LETTER T WITH DOT ABOVE
+    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\u0176'   #  0xDE -> LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u0175'   #  0xF0 -> LATIN SMALL LETTER W WITH CIRCUMFLEX
+    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\u1e6b'   #  0xF7 -> LATIN SMALL LETTER T WITH DOT ABOVE
+    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\u0177'   #  0xFE -> LATIN SMALL LETTER Y WITH CIRCUMFLEX
+    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00C0: 0xC0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xC3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xC8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xCA,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xCC,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0xD1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xD2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D8: 0xD8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xD9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xDD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0xE3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0xEC,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0xF1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xF2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F8: 0xF8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0xFD,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00FF: 0xFF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x010A: 0xA4,	#  LATIN CAPITAL LETTER C WITH DOT ABOVE
-    0x010B: 0xA5,	#  LATIN SMALL LETTER C WITH DOT ABOVE
-    0x0120: 0xB2,	#  LATIN CAPITAL LETTER G WITH DOT ABOVE
-    0x0121: 0xB3,	#  LATIN SMALL LETTER G WITH DOT ABOVE
-    0x0174: 0xD0,	#  LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-    0x0175: 0xF0,	#  LATIN SMALL LETTER W WITH CIRCUMFLEX
-    0x0176: 0xDE,	#  LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-    0x0177: 0xFE,	#  LATIN SMALL LETTER Y WITH CIRCUMFLEX
-    0x0178: 0xAF,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x1E02: 0xA1,	#  LATIN CAPITAL LETTER B WITH DOT ABOVE
-    0x1E03: 0xA2,	#  LATIN SMALL LETTER B WITH DOT ABOVE
-    0x1E0A: 0xA6,	#  LATIN CAPITAL LETTER D WITH DOT ABOVE
-    0x1E0B: 0xAB,	#  LATIN SMALL LETTER D WITH DOT ABOVE
-    0x1E1E: 0xB0,	#  LATIN CAPITAL LETTER F WITH DOT ABOVE
-    0x1E1F: 0xB1,	#  LATIN SMALL LETTER F WITH DOT ABOVE
-    0x1E40: 0xB4,	#  LATIN CAPITAL LETTER M WITH DOT ABOVE
-    0x1E41: 0xB5,	#  LATIN SMALL LETTER M WITH DOT ABOVE
-    0x1E56: 0xB7,	#  LATIN CAPITAL LETTER P WITH DOT ABOVE
-    0x1E57: 0xB9,	#  LATIN SMALL LETTER P WITH DOT ABOVE
-    0x1E60: 0xBB,	#  LATIN CAPITAL LETTER S WITH DOT ABOVE
-    0x1E61: 0xBF,	#  LATIN SMALL LETTER S WITH DOT ABOVE
-    0x1E6A: 0xD7,	#  LATIN CAPITAL LETTER T WITH DOT ABOVE
-    0x1E6B: 0xF7,	#  LATIN SMALL LETTER T WITH DOT ABOVE
-    0x1E80: 0xA8,	#  LATIN CAPITAL LETTER W WITH GRAVE
-    0x1E81: 0xB8,	#  LATIN SMALL LETTER W WITH GRAVE
-    0x1E82: 0xAA,	#  LATIN CAPITAL LETTER W WITH ACUTE
-    0x1E83: 0xBA,	#  LATIN SMALL LETTER W WITH ACUTE
-    0x1E84: 0xBD,	#  LATIN CAPITAL LETTER W WITH DIAERESIS
-    0x1E85: 0xBE,	#  LATIN SMALL LETTER W WITH DIAERESIS
-    0x1EF2: 0xAC,	#  LATIN CAPITAL LETTER Y WITH GRAVE
-    0x1EF3: 0xBC,	#  LATIN SMALL LETTER Y WITH GRAVE
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00C0: 0xC0,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xD8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F8: 0xF8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FF: 0xFF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x010A: 0xA4,       #  LATIN CAPITAL LETTER C WITH DOT ABOVE
+    0x010B: 0xA5,       #  LATIN SMALL LETTER C WITH DOT ABOVE
+    0x0120: 0xB2,       #  LATIN CAPITAL LETTER G WITH DOT ABOVE
+    0x0121: 0xB3,       #  LATIN SMALL LETTER G WITH DOT ABOVE
+    0x0174: 0xD0,       #  LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+    0x0175: 0xF0,       #  LATIN SMALL LETTER W WITH CIRCUMFLEX
+    0x0176: 0xDE,       #  LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+    0x0177: 0xFE,       #  LATIN SMALL LETTER Y WITH CIRCUMFLEX
+    0x0178: 0xAF,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x1E02: 0xA1,       #  LATIN CAPITAL LETTER B WITH DOT ABOVE
+    0x1E03: 0xA2,       #  LATIN SMALL LETTER B WITH DOT ABOVE
+    0x1E0A: 0xA6,       #  LATIN CAPITAL LETTER D WITH DOT ABOVE
+    0x1E0B: 0xAB,       #  LATIN SMALL LETTER D WITH DOT ABOVE
+    0x1E1E: 0xB0,       #  LATIN CAPITAL LETTER F WITH DOT ABOVE
+    0x1E1F: 0xB1,       #  LATIN SMALL LETTER F WITH DOT ABOVE
+    0x1E40: 0xB4,       #  LATIN CAPITAL LETTER M WITH DOT ABOVE
+    0x1E41: 0xB5,       #  LATIN SMALL LETTER M WITH DOT ABOVE
+    0x1E56: 0xB7,       #  LATIN CAPITAL LETTER P WITH DOT ABOVE
+    0x1E57: 0xB9,       #  LATIN SMALL LETTER P WITH DOT ABOVE
+    0x1E60: 0xBB,       #  LATIN CAPITAL LETTER S WITH DOT ABOVE
+    0x1E61: 0xBF,       #  LATIN SMALL LETTER S WITH DOT ABOVE
+    0x1E6A: 0xD7,       #  LATIN CAPITAL LETTER T WITH DOT ABOVE
+    0x1E6B: 0xF7,       #  LATIN SMALL LETTER T WITH DOT ABOVE
+    0x1E80: 0xA8,       #  LATIN CAPITAL LETTER W WITH GRAVE
+    0x1E81: 0xB8,       #  LATIN SMALL LETTER W WITH GRAVE
+    0x1E82: 0xAA,       #  LATIN CAPITAL LETTER W WITH ACUTE
+    0x1E83: 0xBA,       #  LATIN SMALL LETTER W WITH ACUTE
+    0x1E84: 0xBD,       #  LATIN CAPITAL LETTER W WITH DIAERESIS
+    0x1E85: 0xBE,       #  LATIN SMALL LETTER W WITH DIAERESIS
+    0x1EF2: 0xAC,       #  LATIN CAPITAL LETTER Y WITH GRAVE
+    0x1EF3: 0xBC,       #  LATIN SMALL LETTER Y WITH GRAVE
 }
-

Modified: python/trunk/Lib/encodings/iso8859_15.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_15.py	(original)
+++ python/trunk/Lib/encodings/iso8859_15.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\xa1'	#  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\u20ac'	#  0xA4 -> EURO SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\u0160'	#  0xA6 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\u0161'	#  0xA8 -> LATIN SMALL LETTER S WITH CARON
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'	#  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\u017d'	#  0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\u017e'	#  0xB8 -> LATIN SMALL LETTER Z WITH CARON
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'	#  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0152'	#  0xBC -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'	#  0xBD -> LATIN SMALL LIGATURE OE
-    u'\u0178'	#  0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xbf'	#  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'	#  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'	#  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'	#  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'	#  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'	#  0xD0 -> LATIN CAPITAL LETTER ETH
-    u'\xd1'	#  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'	#  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'	#  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'	#  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'	#  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'	#  0xDE -> LATIN CAPITAL LETTER THORN
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'	#  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'	#  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'	#  0xF0 -> LATIN SMALL LETTER ETH
-    u'\xf1'	#  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'	#  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\xf8'	#  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'	#  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'	#  0xFE -> LATIN SMALL LETTER THORN
-    u'\xff'	#  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\u20ac'   #  0xA4 -> EURO SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\u0160'   #  0xA6 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\u0161'   #  0xA8 -> LATIN SMALL LETTER S WITH CARON
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\u017d'   #  0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\u017e'   #  0xB8 -> LATIN SMALL LETTER Z WITH CARON
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u0152'   #  0xBC -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'   #  0xBD -> LATIN SMALL LIGATURE OE
+    u'\u0178'   #  0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xd0'     #  0xD0 -> LATIN CAPITAL LETTER ETH
+    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf0'     #  0xF0 -> LATIN SMALL LETTER ETH
+    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xfe'     #  0xFE -> LATIN SMALL LETTER THORN
+    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A1: 0xA1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xAA,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BA: 0xBA,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BF: 0xBF,	#  INVERTED QUESTION MARK
-    0x00C0: 0xC0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xC3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xC8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xCA,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xCC,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D0: 0xD0,	#  LATIN CAPITAL LETTER ETH
-    0x00D1: 0xD1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xD2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D8: 0xD8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xD9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xDD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DE: 0xDE,	#  LATIN CAPITAL LETTER THORN
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0xE3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0xEC,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F0: 0xF0,	#  LATIN SMALL LETTER ETH
-    0x00F1: 0xF1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xF2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F8: 0xF8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0xFD,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00FE: 0xFE,	#  LATIN SMALL LETTER THORN
-    0x00FF: 0xFF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0152: 0xBC,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xBD,	#  LATIN SMALL LIGATURE OE
-    0x0160: 0xA6,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xA8,	#  LATIN SMALL LETTER S WITH CARON
-    0x0178: 0xBE,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x017D: 0xB4,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0xB8,	#  LATIN SMALL LETTER Z WITH CARON
-    0x20AC: 0xA4,	#  EURO SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A1: 0xA1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xAA,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xBF,       #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xD0,       #  LATIN CAPITAL LETTER ETH
+    0x00D1: 0xD1,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,       #  LATIN CAPITAL LETTER THORN
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xF0,       #  LATIN SMALL LETTER ETH
+    0x00F1: 0xF1,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F8: 0xF8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xFE,       #  LATIN SMALL LETTER THORN
+    0x00FF: 0xFF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0152: 0xBC,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xBD,       #  LATIN SMALL LIGATURE OE
+    0x0160: 0xA6,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xA8,       #  LATIN SMALL LETTER S WITH CARON
+    0x0178: 0xBE,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x017D: 0xB4,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xB8,       #  LATIN SMALL LETTER Z WITH CARON
+    0x20AC: 0xA4,       #  EURO SIGN
 }
-

Modified: python/trunk/Lib/encodings/iso8859_16.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_16.py	(original)
+++ python/trunk/Lib/encodings/iso8859_16.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u0104'	#  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0105'	#  0xA2 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u0141'	#  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u20ac'	#  0xA4 -> EURO SIGN
-    u'\u201e'	#  0xA5 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u0160'	#  0xA6 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\u0161'	#  0xA8 -> LATIN SMALL LETTER S WITH CARON
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u0218'	#  0xAA -> LATIN CAPITAL LETTER S WITH COMMA BELOW
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0179'	#  0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\u017a'	#  0xAE -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u017b'	#  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u010c'	#  0xB2 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u0142'	#  0xB3 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u017d'	#  0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u201d'	#  0xB5 -> RIGHT DOUBLE QUOTATION MARK
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\u017e'	#  0xB8 -> LATIN SMALL LETTER Z WITH CARON
-    u'\u010d'	#  0xB9 -> LATIN SMALL LETTER C WITH CARON
-    u'\u0219'	#  0xBA -> LATIN SMALL LETTER S WITH COMMA BELOW
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0152'	#  0xBC -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'	#  0xBD -> LATIN SMALL LIGATURE OE
-    u'\u0178'	#  0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u017c'	#  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\xc0'	#  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'	#  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0106'	#  0xC5 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'	#  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'	#  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u0110'	#  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0143'	#  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\xd2'	#  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0150'	#  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u015a'	#  0xD7 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u0170'	#  0xD8 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xd9'	#  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0118'	#  0xDD -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u021a'	#  0xDE -> LATIN CAPITAL LETTER T WITH COMMA BELOW
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'	#  0xE3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u0107'	#  0xE5 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'	#  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u0111'	#  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0144'	#  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\xf2'	#  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0151'	#  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u015b'	#  0xF7 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u0171'	#  0xF8 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0119'	#  0xFD -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u021b'	#  0xFE -> LATIN SMALL LETTER T WITH COMMA BELOW
-    u'\xff'	#  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u0104'   #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u0105'   #  0xA2 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u0141'   #  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\u20ac'   #  0xA4 -> EURO SIGN
+    u'\u201e'   #  0xA5 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u0160'   #  0xA6 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\u0161'   #  0xA8 -> LATIN SMALL LETTER S WITH CARON
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u0218'   #  0xAA -> LATIN CAPITAL LETTER S WITH COMMA BELOW
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u0179'   #  0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\u017a'   #  0xAE -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u017b'   #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u010c'   #  0xB2 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\u0142'   #  0xB3 -> LATIN SMALL LETTER L WITH STROKE
+    u'\u017d'   #  0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u201d'   #  0xB5 -> RIGHT DOUBLE QUOTATION MARK
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\u017e'   #  0xB8 -> LATIN SMALL LETTER Z WITH CARON
+    u'\u010d'   #  0xB9 -> LATIN SMALL LETTER C WITH CARON
+    u'\u0219'   #  0xBA -> LATIN SMALL LETTER S WITH COMMA BELOW
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u0152'   #  0xBC -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'   #  0xBD -> LATIN SMALL LIGATURE OE
+    u'\u0178'   #  0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u017c'   #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0102'   #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u0106'   #  0xC5 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0150'   #  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\u015a'   #  0xD7 -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u0170'   #  0xD8 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0118'   #  0xDD -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\u021a'   #  0xDE -> LATIN CAPITAL LETTER T WITH COMMA BELOW
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0103'   #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u0107'   #  0xE5 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u0151'   #  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\u015b'   #  0xF7 -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u0171'   #  0xF8 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u0119'   #  0xFD -> LATIN SMALL LETTER E WITH OGONEK
+    u'\u021b'   #  0xFE -> LATIN SMALL LETTER T WITH COMMA BELOW
+    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00C0: 0xC0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xC8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xCA,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xCC,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D2: 0xD2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D9: 0xD9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0xEC,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F2: 0xF2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FF: 0xFF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0102: 0xC3,	#  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xE3,	#  LATIN SMALL LETTER A WITH BREVE
-    0x0104: 0xA1,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xA2,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xC5,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xE5,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x010C: 0xB2,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010D: 0xB9,	#  LATIN SMALL LETTER C WITH CARON
-    0x0110: 0xD0,	#  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xF0,	#  LATIN SMALL LETTER D WITH STROKE
-    0x0118: 0xDD,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xFD,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x0141: 0xA3,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xB3,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xD1,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xF1,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x0150: 0xD5,	#  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0xF5,	#  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0152: 0xBC,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xBD,	#  LATIN SMALL LIGATURE OE
-    0x015A: 0xD7,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015B: 0xF7,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0xA6,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xA8,	#  LATIN SMALL LETTER S WITH CARON
-    0x0170: 0xD8,	#  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0xF8,	#  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0178: 0xBE,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0179: 0xAC,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017A: 0xAE,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x017B: 0xAF,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017C: 0xBF,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017D: 0xB4,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0xB8,	#  LATIN SMALL LETTER Z WITH CARON
-    0x0218: 0xAA,	#  LATIN CAPITAL LETTER S WITH COMMA BELOW
-    0x0219: 0xBA,	#  LATIN SMALL LETTER S WITH COMMA BELOW
-    0x021A: 0xDE,	#  LATIN CAPITAL LETTER T WITH COMMA BELOW
-    0x021B: 0xFE,	#  LATIN SMALL LETTER T WITH COMMA BELOW
-    0x201D: 0xB5,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0xA5,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x20AC: 0xA4,	#  EURO SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00C0: 0xC0,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D2: 0xD2,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D9: 0xD9,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F2: 0xF2,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xFF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0102: 0xC3,       #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xE3,       #  LATIN SMALL LETTER A WITH BREVE
+    0x0104: 0xA1,       #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xA2,       #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC5,       #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE5,       #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xB2,       #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xB9,       #  LATIN SMALL LETTER C WITH CARON
+    0x0110: 0xD0,       #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,       #  LATIN SMALL LETTER D WITH STROKE
+    0x0118: 0xDD,       #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xFD,       #  LATIN SMALL LETTER E WITH OGONEK
+    0x0141: 0xA3,       #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xB3,       #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,       #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,       #  LATIN SMALL LETTER N WITH ACUTE
+    0x0150: 0xD5,       #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x0151: 0xF5,       #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x0152: 0xBC,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xBD,       #  LATIN SMALL LIGATURE OE
+    0x015A: 0xD7,       #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xF7,       #  LATIN SMALL LETTER S WITH ACUTE
+    0x0160: 0xA6,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xA8,       #  LATIN SMALL LETTER S WITH CARON
+    0x0170: 0xD8,       #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x0171: 0xF8,       #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x0178: 0xBE,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0179: 0xAC,       #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0xAE,       #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xAF,       #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xBF,       #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xB4,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xB8,       #  LATIN SMALL LETTER Z WITH CARON
+    0x0218: 0xAA,       #  LATIN CAPITAL LETTER S WITH COMMA BELOW
+    0x0219: 0xBA,       #  LATIN SMALL LETTER S WITH COMMA BELOW
+    0x021A: 0xDE,       #  LATIN CAPITAL LETTER T WITH COMMA BELOW
+    0x021B: 0xFE,       #  LATIN SMALL LETTER T WITH COMMA BELOW
+    0x201D: 0xB5,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xA5,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x20AC: 0xA4,       #  EURO SIGN
 }
-

Modified: python/trunk/Lib/encodings/iso8859_2.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_2.py	(original)
+++ python/trunk/Lib/encodings/iso8859_2.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u0104'	#  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u02d8'	#  0xA2 -> BREVE
-    u'\u0141'	#  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\u013d'	#  0xA5 -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u015a'	#  0xA6 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\u0160'	#  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u015e'	#  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u0164'	#  0xAB -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u0179'	#  0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\u017d'	#  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u017b'	#  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\u0105'	#  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u02db'	#  0xB2 -> OGONEK
-    u'\u0142'	#  0xB3 -> LATIN SMALL LETTER L WITH STROKE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\u013e'	#  0xB5 -> LATIN SMALL LETTER L WITH CARON
-    u'\u015b'	#  0xB6 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u02c7'	#  0xB7 -> CARON
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\u0161'	#  0xB9 -> LATIN SMALL LETTER S WITH CARON
-    u'\u015f'	#  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\u0165'	#  0xBB -> LATIN SMALL LETTER T WITH CARON
-    u'\u017a'	#  0xBC -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u02dd'	#  0xBD -> DOUBLE ACUTE ACCENT
-    u'\u017e'	#  0xBE -> LATIN SMALL LETTER Z WITH CARON
-    u'\u017c'	#  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u0154'	#  0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'	#  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0139'	#  0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u0106'	#  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\u010c'	#  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'	#  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u011a'	#  0xCC -> LATIN CAPITAL LETTER E WITH CARON
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u010e'	#  0xCF -> LATIN CAPITAL LETTER D WITH CARON
-    u'\u0110'	#  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0143'	#  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0147'	#  0xD2 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0150'	#  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\u0158'	#  0xD8 -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u016e'	#  0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u0170'	#  0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'	#  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0162'	#  0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\u0155'	#  0xE0 -> LATIN SMALL LETTER R WITH ACUTE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'	#  0xE3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u013a'	#  0xE5 -> LATIN SMALL LETTER L WITH ACUTE
-    u'\u0107'	#  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\u010d'	#  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'	#  0xEA -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u011b'	#  0xEC -> LATIN SMALL LETTER E WITH CARON
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u010f'	#  0xEF -> LATIN SMALL LETTER D WITH CARON
-    u'\u0111'	#  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0144'	#  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0148'	#  0xF2 -> LATIN SMALL LETTER N WITH CARON
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0151'	#  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\u0159'	#  0xF8 -> LATIN SMALL LETTER R WITH CARON
-    u'\u016f'	#  0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u0171'	#  0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'	#  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0163'	#  0xFE -> LATIN SMALL LETTER T WITH CEDILLA
-    u'\u02d9'	#  0xFF -> DOT ABOVE
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u0104'   #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u02d8'   #  0xA2 -> BREVE
+    u'\u0141'   #  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\u013d'   #  0xA5 -> LATIN CAPITAL LETTER L WITH CARON
+    u'\u015a'   #  0xA6 -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\u0160'   #  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u015e'   #  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\u0164'   #  0xAB -> LATIN CAPITAL LETTER T WITH CARON
+    u'\u0179'   #  0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\u017d'   #  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u017b'   #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\u0105'   #  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u02db'   #  0xB2 -> OGONEK
+    u'\u0142'   #  0xB3 -> LATIN SMALL LETTER L WITH STROKE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\u013e'   #  0xB5 -> LATIN SMALL LETTER L WITH CARON
+    u'\u015b'   #  0xB6 -> LATIN SMALL LETTER S WITH ACUTE
+    u'\u02c7'   #  0xB7 -> CARON
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\u0161'   #  0xB9 -> LATIN SMALL LETTER S WITH CARON
+    u'\u015f'   #  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\u0165'   #  0xBB -> LATIN SMALL LETTER T WITH CARON
+    u'\u017a'   #  0xBC -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u02dd'   #  0xBD -> DOUBLE ACUTE ACCENT
+    u'\u017e'   #  0xBE -> LATIN SMALL LETTER Z WITH CARON
+    u'\u017c'   #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u0154'   #  0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0102'   #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u0139'   #  0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
+    u'\u0106'   #  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0118'   #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u011a'   #  0xCC -> LATIN CAPITAL LETTER E WITH CARON
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\u010e'   #  0xCF -> LATIN CAPITAL LETTER D WITH CARON
+    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\u0147'   #  0xD2 -> LATIN CAPITAL LETTER N WITH CARON
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0150'   #  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\u0158'   #  0xD8 -> LATIN CAPITAL LETTER R WITH CARON
+    u'\u016e'   #  0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\u0170'   #  0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\u0162'   #  0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\u0155'   #  0xE0 -> LATIN SMALL LETTER R WITH ACUTE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\u0103'   #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u013a'   #  0xE5 -> LATIN SMALL LETTER L WITH ACUTE
+    u'\u0107'   #  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0119'   #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u011b'   #  0xEC -> LATIN SMALL LETTER E WITH CARON
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\u010f'   #  0xEF -> LATIN SMALL LETTER D WITH CARON
+    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0148'   #  0xF2 -> LATIN SMALL LETTER N WITH CARON
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u0151'   #  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\u0159'   #  0xF8 -> LATIN SMALL LETTER R WITH CARON
+    u'\u016f'   #  0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\u0171'   #  0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\u0163'   #  0xFE -> LATIN SMALL LETTER T WITH CEDILLA
+    u'\u02d9'   #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xDD,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0xFD,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x0102: 0xC3,	#  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xE3,	#  LATIN SMALL LETTER A WITH BREVE
-    0x0104: 0xA1,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xB1,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0xC6,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xE6,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x010C: 0xC8,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010D: 0xE8,	#  LATIN SMALL LETTER C WITH CARON
-    0x010E: 0xCF,	#  LATIN CAPITAL LETTER D WITH CARON
-    0x010F: 0xEF,	#  LATIN SMALL LETTER D WITH CARON
-    0x0110: 0xD0,	#  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xF0,	#  LATIN SMALL LETTER D WITH STROKE
-    0x0118: 0xCA,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xEA,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x011A: 0xCC,	#  LATIN CAPITAL LETTER E WITH CARON
-    0x011B: 0xEC,	#  LATIN SMALL LETTER E WITH CARON
-    0x0139: 0xC5,	#  LATIN CAPITAL LETTER L WITH ACUTE
-    0x013A: 0xE5,	#  LATIN SMALL LETTER L WITH ACUTE
-    0x013D: 0xA5,	#  LATIN CAPITAL LETTER L WITH CARON
-    0x013E: 0xB5,	#  LATIN SMALL LETTER L WITH CARON
-    0x0141: 0xA3,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xB3,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xD1,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xF1,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x0147: 0xD2,	#  LATIN CAPITAL LETTER N WITH CARON
-    0x0148: 0xF2,	#  LATIN SMALL LETTER N WITH CARON
-    0x0150: 0xD5,	#  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0xF5,	#  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0154: 0xC0,	#  LATIN CAPITAL LETTER R WITH ACUTE
-    0x0155: 0xE0,	#  LATIN SMALL LETTER R WITH ACUTE
-    0x0158: 0xD8,	#  LATIN CAPITAL LETTER R WITH CARON
-    0x0159: 0xF8,	#  LATIN SMALL LETTER R WITH CARON
-    0x015A: 0xA6,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015B: 0xB6,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x015E: 0xAA,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015F: 0xBA,	#  LATIN SMALL LETTER S WITH CEDILLA
-    0x0160: 0xA9,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xB9,	#  LATIN SMALL LETTER S WITH CARON
-    0x0162: 0xDE,	#  LATIN CAPITAL LETTER T WITH CEDILLA
-    0x0163: 0xFE,	#  LATIN SMALL LETTER T WITH CEDILLA
-    0x0164: 0xAB,	#  LATIN CAPITAL LETTER T WITH CARON
-    0x0165: 0xBB,	#  LATIN SMALL LETTER T WITH CARON
-    0x016E: 0xD9,	#  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x016F: 0xF9,	#  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0170: 0xDB,	#  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0xFB,	#  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0179: 0xAC,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017A: 0xBC,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x017B: 0xAF,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017C: 0xBF,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017D: 0xAE,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0xBE,	#  LATIN SMALL LETTER Z WITH CARON
-    0x02C7: 0xB7,	#  CARON
-    0x02D8: 0xA2,	#  BREVE
-    0x02D9: 0xFF,	#  DOT ABOVE
-    0x02DB: 0xB2,	#  OGONEK
-    0x02DD: 0xBD,	#  DOUBLE ACUTE ACCENT
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xDD,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xFD,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x0102: 0xC3,       #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xE3,       #  LATIN SMALL LETTER A WITH BREVE
+    0x0104: 0xA1,       #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xB1,       #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0xC6,       #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE6,       #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,       #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,       #  LATIN SMALL LETTER C WITH CARON
+    0x010E: 0xCF,       #  LATIN CAPITAL LETTER D WITH CARON
+    0x010F: 0xEF,       #  LATIN SMALL LETTER D WITH CARON
+    0x0110: 0xD0,       #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,       #  LATIN SMALL LETTER D WITH STROKE
+    0x0118: 0xCA,       #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xEA,       #  LATIN SMALL LETTER E WITH OGONEK
+    0x011A: 0xCC,       #  LATIN CAPITAL LETTER E WITH CARON
+    0x011B: 0xEC,       #  LATIN SMALL LETTER E WITH CARON
+    0x0139: 0xC5,       #  LATIN CAPITAL LETTER L WITH ACUTE
+    0x013A: 0xE5,       #  LATIN SMALL LETTER L WITH ACUTE
+    0x013D: 0xA5,       #  LATIN CAPITAL LETTER L WITH CARON
+    0x013E: 0xB5,       #  LATIN SMALL LETTER L WITH CARON
+    0x0141: 0xA3,       #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xB3,       #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xD1,       #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xF1,       #  LATIN SMALL LETTER N WITH ACUTE
+    0x0147: 0xD2,       #  LATIN CAPITAL LETTER N WITH CARON
+    0x0148: 0xF2,       #  LATIN SMALL LETTER N WITH CARON
+    0x0150: 0xD5,       #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x0151: 0xF5,       #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x0154: 0xC0,       #  LATIN CAPITAL LETTER R WITH ACUTE
+    0x0155: 0xE0,       #  LATIN SMALL LETTER R WITH ACUTE
+    0x0158: 0xD8,       #  LATIN CAPITAL LETTER R WITH CARON
+    0x0159: 0xF8,       #  LATIN SMALL LETTER R WITH CARON
+    0x015A: 0xA6,       #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xB6,       #  LATIN SMALL LETTER S WITH ACUTE
+    0x015E: 0xAA,       #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xBA,       #  LATIN SMALL LETTER S WITH CEDILLA
+    0x0160: 0xA9,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xB9,       #  LATIN SMALL LETTER S WITH CARON
+    0x0162: 0xDE,       #  LATIN CAPITAL LETTER T WITH CEDILLA
+    0x0163: 0xFE,       #  LATIN SMALL LETTER T WITH CEDILLA
+    0x0164: 0xAB,       #  LATIN CAPITAL LETTER T WITH CARON
+    0x0165: 0xBB,       #  LATIN SMALL LETTER T WITH CARON
+    0x016E: 0xD9,       #  LATIN CAPITAL LETTER U WITH RING ABOVE
+    0x016F: 0xF9,       #  LATIN SMALL LETTER U WITH RING ABOVE
+    0x0170: 0xDB,       #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x0171: 0xFB,       #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x0179: 0xAC,       #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0xBC,       #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xAF,       #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xBF,       #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xAE,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xBE,       #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0xB7,       #  CARON
+    0x02D8: 0xA2,       #  BREVE
+    0x02D9: 0xFF,       #  DOT ABOVE
+    0x02DB: 0xB2,       #  OGONEK
+    0x02DD: 0xBD,       #  DOUBLE ACUTE ACCENT
 }
-

Modified: python/trunk/Lib/encodings/iso8859_3.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_3.py	(original)
+++ python/trunk/Lib/encodings/iso8859_3.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,515 +32,514 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u0126'	#  0xA1 -> LATIN CAPITAL LETTER H WITH STROKE
-    u'\u02d8'	#  0xA2 -> BREVE
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u0126'   #  0xA1 -> LATIN CAPITAL LETTER H WITH STROKE
+    u'\u02d8'   #  0xA2 -> BREVE
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
     u'\ufffe'
-    u'\u0124'	#  0xA6 -> LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\u0130'	#  0xA9 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u015e'	#  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u011e'	#  0xAB -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u0134'	#  0xAC -> LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-    u'\xad'	#  0xAD -> SOFT HYPHEN
+    u'\u0124'   #  0xA6 -> LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\u0130'   #  0xA9 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'\u015e'   #  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\u011e'   #  0xAB -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\u0134'   #  0xAC -> LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+    u'\xad'     #  0xAD -> SOFT HYPHEN
     u'\ufffe'
-    u'\u017b'	#  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\u0127'	#  0xB1 -> LATIN SMALL LETTER H WITH STROKE
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\u0125'	#  0xB6 -> LATIN SMALL LETTER H WITH CIRCUMFLEX
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\u0131'	#  0xB9 -> LATIN SMALL LETTER DOTLESS I
-    u'\u015f'	#  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\u011f'	#  0xBB -> LATIN SMALL LETTER G WITH BREVE
-    u'\u0135'	#  0xBC -> LATIN SMALL LETTER J WITH CIRCUMFLEX
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
+    u'\u017b'   #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\u0127'   #  0xB1 -> LATIN SMALL LETTER H WITH STROKE
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\u0125'   #  0xB6 -> LATIN SMALL LETTER H WITH CIRCUMFLEX
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\u0131'   #  0xB9 -> LATIN SMALL LETTER DOTLESS I
+    u'\u015f'   #  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\u011f'   #  0xBB -> LATIN SMALL LETTER G WITH BREVE
+    u'\u0135'   #  0xBC -> LATIN SMALL LETTER J WITH CIRCUMFLEX
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
     u'\ufffe'
-    u'\u017c'	#  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\xc0'	#  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u017c'   #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
     u'\ufffe'
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u010a'	#  0xC5 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
-    u'\u0108'	#  0xC6 -> LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'	#  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'	#  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u010a'   #  0xC5 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
+    u'\u0108'   #  0xC6 -> LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
     u'\ufffe'
-    u'\xd1'	#  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'	#  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0120'	#  0xD5 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\u011c'	#  0xD8 -> LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-    u'\xd9'	#  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u016c'	#  0xDD -> LATIN CAPITAL LETTER U WITH BREVE
-    u'\u015c'	#  0xDE -> LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0120'   #  0xD5 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\u011c'   #  0xD8 -> LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u016c'   #  0xDD -> LATIN CAPITAL LETTER U WITH BREVE
+    u'\u015c'   #  0xDE -> LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
     u'\ufffe'
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u010b'	#  0xE5 -> LATIN SMALL LETTER C WITH DOT ABOVE
-    u'\u0109'	#  0xE6 -> LATIN SMALL LETTER C WITH CIRCUMFLEX
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'	#  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u010b'   #  0xE5 -> LATIN SMALL LETTER C WITH DOT ABOVE
+    u'\u0109'   #  0xE6 -> LATIN SMALL LETTER C WITH CIRCUMFLEX
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
     u'\ufffe'
-    u'\xf1'	#  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'	#  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0121'	#  0xF5 -> LATIN SMALL LETTER G WITH DOT ABOVE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\u011d'	#  0xF8 -> LATIN SMALL LETTER G WITH CIRCUMFLEX
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u016d'	#  0xFD -> LATIN SMALL LETTER U WITH BREVE
-    u'\u015d'	#  0xFE -> LATIN SMALL LETTER S WITH CIRCUMFLEX
-    u'\u02d9'	#  0xFF -> DOT ABOVE
+    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\u0121'   #  0xF5 -> LATIN SMALL LETTER G WITH DOT ABOVE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\u011d'   #  0xF8 -> LATIN SMALL LETTER G WITH CIRCUMFLEX
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u016d'   #  0xFD -> LATIN SMALL LETTER U WITH BREVE
+    u'\u015d'   #  0xFE -> LATIN SMALL LETTER S WITH CIRCUMFLEX
+    u'\u02d9'   #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00C0: 0xC0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xC8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xCA,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xCC,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0xD1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xD2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D9: 0xD9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0xEC,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0xF1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xF2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0108: 0xC6,	#  LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-    0x0109: 0xE6,	#  LATIN SMALL LETTER C WITH CIRCUMFLEX
-    0x010A: 0xC5,	#  LATIN CAPITAL LETTER C WITH DOT ABOVE
-    0x010B: 0xE5,	#  LATIN SMALL LETTER C WITH DOT ABOVE
-    0x011C: 0xD8,	#  LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-    0x011D: 0xF8,	#  LATIN SMALL LETTER G WITH CIRCUMFLEX
-    0x011E: 0xAB,	#  LATIN CAPITAL LETTER G WITH BREVE
-    0x011F: 0xBB,	#  LATIN SMALL LETTER G WITH BREVE
-    0x0120: 0xD5,	#  LATIN CAPITAL LETTER G WITH DOT ABOVE
-    0x0121: 0xF5,	#  LATIN SMALL LETTER G WITH DOT ABOVE
-    0x0124: 0xA6,	#  LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-    0x0125: 0xB6,	#  LATIN SMALL LETTER H WITH CIRCUMFLEX
-    0x0126: 0xA1,	#  LATIN CAPITAL LETTER H WITH STROKE
-    0x0127: 0xB1,	#  LATIN SMALL LETTER H WITH STROKE
-    0x0130: 0xA9,	#  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0xB9,	#  LATIN SMALL LETTER DOTLESS I
-    0x0134: 0xAC,	#  LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-    0x0135: 0xBC,	#  LATIN SMALL LETTER J WITH CIRCUMFLEX
-    0x015C: 0xDE,	#  LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-    0x015D: 0xFE,	#  LATIN SMALL LETTER S WITH CIRCUMFLEX
-    0x015E: 0xAA,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015F: 0xBA,	#  LATIN SMALL LETTER S WITH CEDILLA
-    0x016C: 0xDD,	#  LATIN CAPITAL LETTER U WITH BREVE
-    0x016D: 0xFD,	#  LATIN SMALL LETTER U WITH BREVE
-    0x017B: 0xAF,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017C: 0xBF,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x02D8: 0xA2,	#  BREVE
-    0x02D9: 0xFF,	#  DOT ABOVE
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00C0: 0xC0,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D9: 0xD9,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0108: 0xC6,       #  LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+    0x0109: 0xE6,       #  LATIN SMALL LETTER C WITH CIRCUMFLEX
+    0x010A: 0xC5,       #  LATIN CAPITAL LETTER C WITH DOT ABOVE
+    0x010B: 0xE5,       #  LATIN SMALL LETTER C WITH DOT ABOVE
+    0x011C: 0xD8,       #  LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+    0x011D: 0xF8,       #  LATIN SMALL LETTER G WITH CIRCUMFLEX
+    0x011E: 0xAB,       #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xBB,       #  LATIN SMALL LETTER G WITH BREVE
+    0x0120: 0xD5,       #  LATIN CAPITAL LETTER G WITH DOT ABOVE
+    0x0121: 0xF5,       #  LATIN SMALL LETTER G WITH DOT ABOVE
+    0x0124: 0xA6,       #  LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+    0x0125: 0xB6,       #  LATIN SMALL LETTER H WITH CIRCUMFLEX
+    0x0126: 0xA1,       #  LATIN CAPITAL LETTER H WITH STROKE
+    0x0127: 0xB1,       #  LATIN SMALL LETTER H WITH STROKE
+    0x0130: 0xA9,       #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0xB9,       #  LATIN SMALL LETTER DOTLESS I
+    0x0134: 0xAC,       #  LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+    0x0135: 0xBC,       #  LATIN SMALL LETTER J WITH CIRCUMFLEX
+    0x015C: 0xDE,       #  LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+    0x015D: 0xFE,       #  LATIN SMALL LETTER S WITH CIRCUMFLEX
+    0x015E: 0xAA,       #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xBA,       #  LATIN SMALL LETTER S WITH CEDILLA
+    0x016C: 0xDD,       #  LATIN CAPITAL LETTER U WITH BREVE
+    0x016D: 0xFD,       #  LATIN SMALL LETTER U WITH BREVE
+    0x017B: 0xAF,       #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xBF,       #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x02D8: 0xA2,       #  BREVE
+    0x02D9: 0xFF,       #  DOT ABOVE
 }
-

Modified: python/trunk/Lib/encodings/iso8859_4.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_4.py	(original)
+++ python/trunk/Lib/encodings/iso8859_4.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u0104'	#  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0138'	#  0xA2 -> LATIN SMALL LETTER KRA
-    u'\u0156'	#  0xA3 -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\u0128'	#  0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
-    u'\u013b'	#  0xA6 -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\u0160'	#  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0112'	#  0xAA -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0122'	#  0xAB -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u0166'	#  0xAC -> LATIN CAPITAL LETTER T WITH STROKE
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\u017d'	#  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\u0105'	#  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u02db'	#  0xB2 -> OGONEK
-    u'\u0157'	#  0xB3 -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\u0129'	#  0xB5 -> LATIN SMALL LETTER I WITH TILDE
-    u'\u013c'	#  0xB6 -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u02c7'	#  0xB7 -> CARON
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\u0161'	#  0xB9 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0113'	#  0xBA -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0123'	#  0xBB -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u0167'	#  0xBC -> LATIN SMALL LETTER T WITH STROKE
-    u'\u014a'	#  0xBD -> LATIN CAPITAL LETTER ENG
-    u'\u017e'	#  0xBE -> LATIN SMALL LETTER Z WITH CARON
-    u'\u014b'	#  0xBF -> LATIN SMALL LETTER ENG
-    u'\u0100'	#  0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'	#  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\u012e'	#  0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u010c'	#  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'	#  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u0116'	#  0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u012a'	#  0xCF -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u0110'	#  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0145'	#  0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u014c'	#  0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\u0136'	#  0xD3 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'	#  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u0172'	#  0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0168'	#  0xDD -> LATIN CAPITAL LETTER U WITH TILDE
-    u'\u016a'	#  0xDE -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\u0101'	#  0xE0 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'	#  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\u012f'	#  0xE7 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u010d'	#  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'	#  0xEA -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0117'	#  0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u012b'	#  0xEF -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0111'	#  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0146'	#  0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u014d'	#  0xF2 -> LATIN SMALL LETTER O WITH MACRON
-    u'\u0137'	#  0xF3 -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\xf8'	#  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\u0173'	#  0xF9 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0169'	#  0xFD -> LATIN SMALL LETTER U WITH TILDE
-    u'\u016b'	#  0xFE -> LATIN SMALL LETTER U WITH MACRON
-    u'\u02d9'	#  0xFF -> DOT ABOVE
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u0104'   #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\u0138'   #  0xA2 -> LATIN SMALL LETTER KRA
+    u'\u0156'   #  0xA3 -> LATIN CAPITAL LETTER R WITH CEDILLA
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\u0128'   #  0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
+    u'\u013b'   #  0xA6 -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\u0160'   #  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u0112'   #  0xAA -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u0122'   #  0xAB -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u0166'   #  0xAC -> LATIN CAPITAL LETTER T WITH STROKE
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\u017d'   #  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\u0105'   #  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u02db'   #  0xB2 -> OGONEK
+    u'\u0157'   #  0xB3 -> LATIN SMALL LETTER R WITH CEDILLA
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\u0129'   #  0xB5 -> LATIN SMALL LETTER I WITH TILDE
+    u'\u013c'   #  0xB6 -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u02c7'   #  0xB7 -> CARON
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\u0161'   #  0xB9 -> LATIN SMALL LETTER S WITH CARON
+    u'\u0113'   #  0xBA -> LATIN SMALL LETTER E WITH MACRON
+    u'\u0123'   #  0xBB -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u0167'   #  0xBC -> LATIN SMALL LETTER T WITH STROKE
+    u'\u014a'   #  0xBD -> LATIN CAPITAL LETTER ENG
+    u'\u017e'   #  0xBE -> LATIN SMALL LETTER Z WITH CARON
+    u'\u014b'   #  0xBF -> LATIN SMALL LETTER ENG
+    u'\u0100'   #  0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\u012e'   #  0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0118'   #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u0116'   #  0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\u012a'   #  0xCF -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u0145'   #  0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\u014c'   #  0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\u0136'   #  0xD3 -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u0172'   #  0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0168'   #  0xDD -> LATIN CAPITAL LETTER U WITH TILDE
+    u'\u016a'   #  0xDE -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\u0101'   #  0xE0 -> LATIN SMALL LETTER A WITH MACRON
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\u012f'   #  0xE7 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0119'   #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\u0117'   #  0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\u012b'   #  0xEF -> LATIN SMALL LETTER I WITH MACRON
+    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\u0146'   #  0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\u014d'   #  0xF2 -> LATIN SMALL LETTER O WITH MACRON
+    u'\u0137'   #  0xF3 -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\u0173'   #  0xF9 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u0169'   #  0xFD -> LATIN SMALL LETTER U WITH TILDE
+    u'\u016b'   #  0xFE -> LATIN SMALL LETTER U WITH MACRON
+    u'\u02d9'   #  0xFF -> DOT ABOVE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xC3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D8: 0xD8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0xE3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F8: 0xF8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0100: 0xC0,	#  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0xE0,	#  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0xA1,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0xB1,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x010C: 0xC8,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010D: 0xE8,	#  LATIN SMALL LETTER C WITH CARON
-    0x0110: 0xD0,	#  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xF0,	#  LATIN SMALL LETTER D WITH STROKE
-    0x0112: 0xAA,	#  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0xBA,	#  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0xCC,	#  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0xEC,	#  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xCA,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xEA,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0xAB,	#  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xBB,	#  LATIN SMALL LETTER G WITH CEDILLA
-    0x0128: 0xA5,	#  LATIN CAPITAL LETTER I WITH TILDE
-    0x0129: 0xB5,	#  LATIN SMALL LETTER I WITH TILDE
-    0x012A: 0xCF,	#  LATIN CAPITAL LETTER I WITH MACRON
-    0x012B: 0xEF,	#  LATIN SMALL LETTER I WITH MACRON
-    0x012E: 0xC7,	#  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012F: 0xE7,	#  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xD3,	#  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xF3,	#  LATIN SMALL LETTER K WITH CEDILLA
-    0x0138: 0xA2,	#  LATIN SMALL LETTER KRA
-    0x013B: 0xA6,	#  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013C: 0xB6,	#  LATIN SMALL LETTER L WITH CEDILLA
-    0x0145: 0xD1,	#  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xF1,	#  LATIN SMALL LETTER N WITH CEDILLA
-    0x014A: 0xBD,	#  LATIN CAPITAL LETTER ENG
-    0x014B: 0xBF,	#  LATIN SMALL LETTER ENG
-    0x014C: 0xD2,	#  LATIN CAPITAL LETTER O WITH MACRON
-    0x014D: 0xF2,	#  LATIN SMALL LETTER O WITH MACRON
-    0x0156: 0xA3,	#  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0xB3,	#  LATIN SMALL LETTER R WITH CEDILLA
-    0x0160: 0xA9,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xB9,	#  LATIN SMALL LETTER S WITH CARON
-    0x0166: 0xAC,	#  LATIN CAPITAL LETTER T WITH STROKE
-    0x0167: 0xBC,	#  LATIN SMALL LETTER T WITH STROKE
-    0x0168: 0xDD,	#  LATIN CAPITAL LETTER U WITH TILDE
-    0x0169: 0xFD,	#  LATIN SMALL LETTER U WITH TILDE
-    0x016A: 0xDE,	#  LATIN CAPITAL LETTER U WITH MACRON
-    0x016B: 0xFE,	#  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0xD9,	#  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xF9,	#  LATIN SMALL LETTER U WITH OGONEK
-    0x017D: 0xAE,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0xBE,	#  LATIN SMALL LETTER Z WITH CARON
-    0x02C7: 0xB7,	#  CARON
-    0x02D9: 0xFF,	#  DOT ABOVE
-    0x02DB: 0xB2,	#  OGONEK
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F8: 0xF8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0100: 0xC0,       #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0xE0,       #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0xA1,       #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0xB1,       #  LATIN SMALL LETTER A WITH OGONEK
+    0x010C: 0xC8,       #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,       #  LATIN SMALL LETTER C WITH CARON
+    0x0110: 0xD0,       #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,       #  LATIN SMALL LETTER D WITH STROKE
+    0x0112: 0xAA,       #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0xBA,       #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0xCC,       #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0xEC,       #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0xCA,       #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xEA,       #  LATIN SMALL LETTER E WITH OGONEK
+    0x0122: 0xAB,       #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xBB,       #  LATIN SMALL LETTER G WITH CEDILLA
+    0x0128: 0xA5,       #  LATIN CAPITAL LETTER I WITH TILDE
+    0x0129: 0xB5,       #  LATIN SMALL LETTER I WITH TILDE
+    0x012A: 0xCF,       #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xEF,       #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xC7,       #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xE7,       #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xD3,       #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xF3,       #  LATIN SMALL LETTER K WITH CEDILLA
+    0x0138: 0xA2,       #  LATIN SMALL LETTER KRA
+    0x013B: 0xA6,       #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xB6,       #  LATIN SMALL LETTER L WITH CEDILLA
+    0x0145: 0xD1,       #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xF1,       #  LATIN SMALL LETTER N WITH CEDILLA
+    0x014A: 0xBD,       #  LATIN CAPITAL LETTER ENG
+    0x014B: 0xBF,       #  LATIN SMALL LETTER ENG
+    0x014C: 0xD2,       #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xF2,       #  LATIN SMALL LETTER O WITH MACRON
+    0x0156: 0xA3,       #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x0157: 0xB3,       #  LATIN SMALL LETTER R WITH CEDILLA
+    0x0160: 0xA9,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xB9,       #  LATIN SMALL LETTER S WITH CARON
+    0x0166: 0xAC,       #  LATIN CAPITAL LETTER T WITH STROKE
+    0x0167: 0xBC,       #  LATIN SMALL LETTER T WITH STROKE
+    0x0168: 0xDD,       #  LATIN CAPITAL LETTER U WITH TILDE
+    0x0169: 0xFD,       #  LATIN SMALL LETTER U WITH TILDE
+    0x016A: 0xDE,       #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xFE,       #  LATIN SMALL LETTER U WITH MACRON
+    0x0172: 0xD9,       #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF9,       #  LATIN SMALL LETTER U WITH OGONEK
+    0x017D: 0xAE,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xBE,       #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0xB7,       #  CARON
+    0x02D9: 0xFF,       #  DOT ABOVE
+    0x02DB: 0xB2,       #  OGONEK
 }
-

Modified: python/trunk/Lib/encodings/iso8859_5.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_5.py	(original)
+++ python/trunk/Lib/encodings/iso8859_5.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u0401'	#  0xA1 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0402'	#  0xA2 -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0403'	#  0xA3 -> CYRILLIC CAPITAL LETTER GJE
-    u'\u0404'	#  0xA4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0405'	#  0xA5 -> CYRILLIC CAPITAL LETTER DZE
-    u'\u0406'	#  0xA6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0407'	#  0xA7 -> CYRILLIC CAPITAL LETTER YI
-    u'\u0408'	#  0xA8 -> CYRILLIC CAPITAL LETTER JE
-    u'\u0409'	#  0xA9 -> CYRILLIC CAPITAL LETTER LJE
-    u'\u040a'	#  0xAA -> CYRILLIC CAPITAL LETTER NJE
-    u'\u040b'	#  0xAB -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u040c'	#  0xAC -> CYRILLIC CAPITAL LETTER KJE
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\u040e'	#  0xAE -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u040f'	#  0xAF -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u0410'	#  0xB0 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'	#  0xB1 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'	#  0xB2 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'	#  0xB3 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'	#  0xB4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'	#  0xB5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'	#  0xB6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'	#  0xB7 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'	#  0xB8 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'	#  0xB9 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'	#  0xBA -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'	#  0xBB -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'	#  0xBC -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'	#  0xBD -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'	#  0xBE -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'	#  0xBF -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'	#  0xC0 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'	#  0xC1 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'	#  0xC2 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'	#  0xC3 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'	#  0xC4 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'	#  0xC5 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'	#  0xC6 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'	#  0xC7 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'	#  0xC8 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'	#  0xC9 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'	#  0xCA -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'	#  0xCB -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'	#  0xCC -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'	#  0xCD -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'	#  0xCE -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'	#  0xCF -> CYRILLIC CAPITAL LETTER YA
-    u'\u0430'	#  0xD0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'	#  0xD1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'	#  0xD2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'	#  0xD3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'	#  0xD4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'	#  0xD5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'	#  0xD6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'	#  0xD7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'	#  0xD8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'	#  0xD9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'	#  0xDA -> CYRILLIC SMALL LETTER KA
-    u'\u043b'	#  0xDB -> CYRILLIC SMALL LETTER EL
-    u'\u043c'	#  0xDC -> CYRILLIC SMALL LETTER EM
-    u'\u043d'	#  0xDD -> CYRILLIC SMALL LETTER EN
-    u'\u043e'	#  0xDE -> CYRILLIC SMALL LETTER O
-    u'\u043f'	#  0xDF -> CYRILLIC SMALL LETTER PE
-    u'\u0440'	#  0xE0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'	#  0xE1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'	#  0xE2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'	#  0xE3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'	#  0xE4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'	#  0xE5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'	#  0xE6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'	#  0xE7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'	#  0xE8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'	#  0xE9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'	#  0xEA -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'	#  0xEB -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'	#  0xEC -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'	#  0xED -> CYRILLIC SMALL LETTER E
-    u'\u044e'	#  0xEE -> CYRILLIC SMALL LETTER YU
-    u'\u044f'	#  0xEF -> CYRILLIC SMALL LETTER YA
-    u'\u2116'	#  0xF0 -> NUMERO SIGN
-    u'\u0451'	#  0xF1 -> CYRILLIC SMALL LETTER IO
-    u'\u0452'	#  0xF2 -> CYRILLIC SMALL LETTER DJE
-    u'\u0453'	#  0xF3 -> CYRILLIC SMALL LETTER GJE
-    u'\u0454'	#  0xF4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0455'	#  0xF5 -> CYRILLIC SMALL LETTER DZE
-    u'\u0456'	#  0xF6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0457'	#  0xF7 -> CYRILLIC SMALL LETTER YI
-    u'\u0458'	#  0xF8 -> CYRILLIC SMALL LETTER JE
-    u'\u0459'	#  0xF9 -> CYRILLIC SMALL LETTER LJE
-    u'\u045a'	#  0xFA -> CYRILLIC SMALL LETTER NJE
-    u'\u045b'	#  0xFB -> CYRILLIC SMALL LETTER TSHE
-    u'\u045c'	#  0xFC -> CYRILLIC SMALL LETTER KJE
-    u'\xa7'	#  0xFD -> SECTION SIGN
-    u'\u045e'	#  0xFE -> CYRILLIC SMALL LETTER SHORT U
-    u'\u045f'	#  0xFF -> CYRILLIC SMALL LETTER DZHE
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u0401'   #  0xA1 -> CYRILLIC CAPITAL LETTER IO
+    u'\u0402'   #  0xA2 -> CYRILLIC CAPITAL LETTER DJE
+    u'\u0403'   #  0xA3 -> CYRILLIC CAPITAL LETTER GJE
+    u'\u0404'   #  0xA4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\u0405'   #  0xA5 -> CYRILLIC CAPITAL LETTER DZE
+    u'\u0406'   #  0xA6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0407'   #  0xA7 -> CYRILLIC CAPITAL LETTER YI
+    u'\u0408'   #  0xA8 -> CYRILLIC CAPITAL LETTER JE
+    u'\u0409'   #  0xA9 -> CYRILLIC CAPITAL LETTER LJE
+    u'\u040a'   #  0xAA -> CYRILLIC CAPITAL LETTER NJE
+    u'\u040b'   #  0xAB -> CYRILLIC CAPITAL LETTER TSHE
+    u'\u040c'   #  0xAC -> CYRILLIC CAPITAL LETTER KJE
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\u040e'   #  0xAE -> CYRILLIC CAPITAL LETTER SHORT U
+    u'\u040f'   #  0xAF -> CYRILLIC CAPITAL LETTER DZHE
+    u'\u0410'   #  0xB0 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'   #  0xB1 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0412'   #  0xB2 -> CYRILLIC CAPITAL LETTER VE
+    u'\u0413'   #  0xB3 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0414'   #  0xB4 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'   #  0xB5 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0416'   #  0xB6 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0417'   #  0xB7 -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0418'   #  0xB8 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'   #  0xB9 -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'   #  0xBA -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'   #  0xBB -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'   #  0xBC -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'   #  0xBD -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'   #  0xBE -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'   #  0xBF -> CYRILLIC CAPITAL LETTER PE
+    u'\u0420'   #  0xC0 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'   #  0xC1 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'   #  0xC2 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'   #  0xC3 -> CYRILLIC CAPITAL LETTER U
+    u'\u0424'   #  0xC4 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0425'   #  0xC5 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0426'   #  0xC6 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0427'   #  0xC7 -> CYRILLIC CAPITAL LETTER CHE
+    u'\u0428'   #  0xC8 -> CYRILLIC CAPITAL LETTER SHA
+    u'\u0429'   #  0xC9 -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u042a'   #  0xCA -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\u042b'   #  0xCB -> CYRILLIC CAPITAL LETTER YERU
+    u'\u042c'   #  0xCC -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042d'   #  0xCD -> CYRILLIC CAPITAL LETTER E
+    u'\u042e'   #  0xCE -> CYRILLIC CAPITAL LETTER YU
+    u'\u042f'   #  0xCF -> CYRILLIC CAPITAL LETTER YA
+    u'\u0430'   #  0xD0 -> CYRILLIC SMALL LETTER A
+    u'\u0431'   #  0xD1 -> CYRILLIC SMALL LETTER BE
+    u'\u0432'   #  0xD2 -> CYRILLIC SMALL LETTER VE
+    u'\u0433'   #  0xD3 -> CYRILLIC SMALL LETTER GHE
+    u'\u0434'   #  0xD4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'   #  0xD5 -> CYRILLIC SMALL LETTER IE
+    u'\u0436'   #  0xD6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0437'   #  0xD7 -> CYRILLIC SMALL LETTER ZE
+    u'\u0438'   #  0xD8 -> CYRILLIC SMALL LETTER I
+    u'\u0439'   #  0xD9 -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'   #  0xDA -> CYRILLIC SMALL LETTER KA
+    u'\u043b'   #  0xDB -> CYRILLIC SMALL LETTER EL
+    u'\u043c'   #  0xDC -> CYRILLIC SMALL LETTER EM
+    u'\u043d'   #  0xDD -> CYRILLIC SMALL LETTER EN
+    u'\u043e'   #  0xDE -> CYRILLIC SMALL LETTER O
+    u'\u043f'   #  0xDF -> CYRILLIC SMALL LETTER PE
+    u'\u0440'   #  0xE0 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'   #  0xE1 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'   #  0xE2 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'   #  0xE3 -> CYRILLIC SMALL LETTER U
+    u'\u0444'   #  0xE4 -> CYRILLIC SMALL LETTER EF
+    u'\u0445'   #  0xE5 -> CYRILLIC SMALL LETTER HA
+    u'\u0446'   #  0xE6 -> CYRILLIC SMALL LETTER TSE
+    u'\u0447'   #  0xE7 -> CYRILLIC SMALL LETTER CHE
+    u'\u0448'   #  0xE8 -> CYRILLIC SMALL LETTER SHA
+    u'\u0449'   #  0xE9 -> CYRILLIC SMALL LETTER SHCHA
+    u'\u044a'   #  0xEA -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u044b'   #  0xEB -> CYRILLIC SMALL LETTER YERU
+    u'\u044c'   #  0xEC -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044d'   #  0xED -> CYRILLIC SMALL LETTER E
+    u'\u044e'   #  0xEE -> CYRILLIC SMALL LETTER YU
+    u'\u044f'   #  0xEF -> CYRILLIC SMALL LETTER YA
+    u'\u2116'   #  0xF0 -> NUMERO SIGN
+    u'\u0451'   #  0xF1 -> CYRILLIC SMALL LETTER IO
+    u'\u0452'   #  0xF2 -> CYRILLIC SMALL LETTER DJE
+    u'\u0453'   #  0xF3 -> CYRILLIC SMALL LETTER GJE
+    u'\u0454'   #  0xF4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\u0455'   #  0xF5 -> CYRILLIC SMALL LETTER DZE
+    u'\u0456'   #  0xF6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0457'   #  0xF7 -> CYRILLIC SMALL LETTER YI
+    u'\u0458'   #  0xF8 -> CYRILLIC SMALL LETTER JE
+    u'\u0459'   #  0xF9 -> CYRILLIC SMALL LETTER LJE
+    u'\u045a'   #  0xFA -> CYRILLIC SMALL LETTER NJE
+    u'\u045b'   #  0xFB -> CYRILLIC SMALL LETTER TSHE
+    u'\u045c'   #  0xFC -> CYRILLIC SMALL LETTER KJE
+    u'\xa7'     #  0xFD -> SECTION SIGN
+    u'\u045e'   #  0xFE -> CYRILLIC SMALL LETTER SHORT U
+    u'\u045f'   #  0xFF -> CYRILLIC SMALL LETTER DZHE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A7: 0xFD,	#  SECTION SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x0401: 0xA1,	#  CYRILLIC CAPITAL LETTER IO
-    0x0402: 0xA2,	#  CYRILLIC CAPITAL LETTER DJE
-    0x0403: 0xA3,	#  CYRILLIC CAPITAL LETTER GJE
-    0x0404: 0xA4,	#  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0405: 0xA5,	#  CYRILLIC CAPITAL LETTER DZE
-    0x0406: 0xA6,	#  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0xA7,	#  CYRILLIC CAPITAL LETTER YI
-    0x0408: 0xA8,	#  CYRILLIC CAPITAL LETTER JE
-    0x0409: 0xA9,	#  CYRILLIC CAPITAL LETTER LJE
-    0x040A: 0xAA,	#  CYRILLIC CAPITAL LETTER NJE
-    0x040B: 0xAB,	#  CYRILLIC CAPITAL LETTER TSHE
-    0x040C: 0xAC,	#  CYRILLIC CAPITAL LETTER KJE
-    0x040E: 0xAE,	#  CYRILLIC CAPITAL LETTER SHORT U
-    0x040F: 0xAF,	#  CYRILLIC CAPITAL LETTER DZHE
-    0x0410: 0xB0,	#  CYRILLIC CAPITAL LETTER A
-    0x0411: 0xB1,	#  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0xB2,	#  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0xB3,	#  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0xB4,	#  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0xB5,	#  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0xB6,	#  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0xB7,	#  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0xB8,	#  CYRILLIC CAPITAL LETTER I
-    0x0419: 0xB9,	#  CYRILLIC CAPITAL LETTER SHORT I
-    0x041A: 0xBA,	#  CYRILLIC CAPITAL LETTER KA
-    0x041B: 0xBB,	#  CYRILLIC CAPITAL LETTER EL
-    0x041C: 0xBC,	#  CYRILLIC CAPITAL LETTER EM
-    0x041D: 0xBD,	#  CYRILLIC CAPITAL LETTER EN
-    0x041E: 0xBE,	#  CYRILLIC CAPITAL LETTER O
-    0x041F: 0xBF,	#  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0xC0,	#  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0xC1,	#  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0xC2,	#  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0xC3,	#  CYRILLIC CAPITAL LETTER U
-    0x0424: 0xC4,	#  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0xC5,	#  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0xC6,	#  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0xC7,	#  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0xC8,	#  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0xC9,	#  CYRILLIC CAPITAL LETTER SHCHA
-    0x042A: 0xCA,	#  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042B: 0xCB,	#  CYRILLIC CAPITAL LETTER YERU
-    0x042C: 0xCC,	#  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042D: 0xCD,	#  CYRILLIC CAPITAL LETTER E
-    0x042E: 0xCE,	#  CYRILLIC CAPITAL LETTER YU
-    0x042F: 0xCF,	#  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xD0,	#  CYRILLIC SMALL LETTER A
-    0x0431: 0xD1,	#  CYRILLIC SMALL LETTER BE
-    0x0432: 0xD2,	#  CYRILLIC SMALL LETTER VE
-    0x0433: 0xD3,	#  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xD4,	#  CYRILLIC SMALL LETTER DE
-    0x0435: 0xD5,	#  CYRILLIC SMALL LETTER IE
-    0x0436: 0xD6,	#  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xD7,	#  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xD8,	#  CYRILLIC SMALL LETTER I
-    0x0439: 0xD9,	#  CYRILLIC SMALL LETTER SHORT I
-    0x043A: 0xDA,	#  CYRILLIC SMALL LETTER KA
-    0x043B: 0xDB,	#  CYRILLIC SMALL LETTER EL
-    0x043C: 0xDC,	#  CYRILLIC SMALL LETTER EM
-    0x043D: 0xDD,	#  CYRILLIC SMALL LETTER EN
-    0x043E: 0xDE,	#  CYRILLIC SMALL LETTER O
-    0x043F: 0xDF,	#  CYRILLIC SMALL LETTER PE
-    0x0440: 0xE0,	#  CYRILLIC SMALL LETTER ER
-    0x0441: 0xE1,	#  CYRILLIC SMALL LETTER ES
-    0x0442: 0xE2,	#  CYRILLIC SMALL LETTER TE
-    0x0443: 0xE3,	#  CYRILLIC SMALL LETTER U
-    0x0444: 0xE4,	#  CYRILLIC SMALL LETTER EF
-    0x0445: 0xE5,	#  CYRILLIC SMALL LETTER HA
-    0x0446: 0xE6,	#  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xE7,	#  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xE8,	#  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xE9,	#  CYRILLIC SMALL LETTER SHCHA
-    0x044A: 0xEA,	#  CYRILLIC SMALL LETTER HARD SIGN
-    0x044B: 0xEB,	#  CYRILLIC SMALL LETTER YERU
-    0x044C: 0xEC,	#  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044D: 0xED,	#  CYRILLIC SMALL LETTER E
-    0x044E: 0xEE,	#  CYRILLIC SMALL LETTER YU
-    0x044F: 0xEF,	#  CYRILLIC SMALL LETTER YA
-    0x0451: 0xF1,	#  CYRILLIC SMALL LETTER IO
-    0x0452: 0xF2,	#  CYRILLIC SMALL LETTER DJE
-    0x0453: 0xF3,	#  CYRILLIC SMALL LETTER GJE
-    0x0454: 0xF4,	#  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0455: 0xF5,	#  CYRILLIC SMALL LETTER DZE
-    0x0456: 0xF6,	#  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0xF7,	#  CYRILLIC SMALL LETTER YI
-    0x0458: 0xF8,	#  CYRILLIC SMALL LETTER JE
-    0x0459: 0xF9,	#  CYRILLIC SMALL LETTER LJE
-    0x045A: 0xFA,	#  CYRILLIC SMALL LETTER NJE
-    0x045B: 0xFB,	#  CYRILLIC SMALL LETTER TSHE
-    0x045C: 0xFC,	#  CYRILLIC SMALL LETTER KJE
-    0x045E: 0xFE,	#  CYRILLIC SMALL LETTER SHORT U
-    0x045F: 0xFF,	#  CYRILLIC SMALL LETTER DZHE
-    0x2116: 0xF0,	#  NUMERO SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A7: 0xFD,       #  SECTION SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x0401: 0xA1,       #  CYRILLIC CAPITAL LETTER IO
+    0x0402: 0xA2,       #  CYRILLIC CAPITAL LETTER DJE
+    0x0403: 0xA3,       #  CYRILLIC CAPITAL LETTER GJE
+    0x0404: 0xA4,       #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0405: 0xA5,       #  CYRILLIC CAPITAL LETTER DZE
+    0x0406: 0xA6,       #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0407: 0xA7,       #  CYRILLIC CAPITAL LETTER YI
+    0x0408: 0xA8,       #  CYRILLIC CAPITAL LETTER JE
+    0x0409: 0xA9,       #  CYRILLIC CAPITAL LETTER LJE
+    0x040A: 0xAA,       #  CYRILLIC CAPITAL LETTER NJE
+    0x040B: 0xAB,       #  CYRILLIC CAPITAL LETTER TSHE
+    0x040C: 0xAC,       #  CYRILLIC CAPITAL LETTER KJE
+    0x040E: 0xAE,       #  CYRILLIC CAPITAL LETTER SHORT U
+    0x040F: 0xAF,       #  CYRILLIC CAPITAL LETTER DZHE
+    0x0410: 0xB0,       #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0xB1,       #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0xB2,       #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0xB3,       #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0xB4,       #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0xB5,       #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0xB6,       #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0xB7,       #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0xB8,       #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0xB9,       #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041A: 0xBA,       #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0xBB,       #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0xBC,       #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0xBD,       #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0xBE,       #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0xBF,       #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0xC0,       #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0xC1,       #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0xC2,       #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0xC3,       #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0xC4,       #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0xC5,       #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0xC6,       #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0xC7,       #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0xC8,       #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0xC9,       #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042A: 0xCA,       #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0xCB,       #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0xCC,       #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0xCD,       #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0xCE,       #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0xCF,       #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xD0,       #  CYRILLIC SMALL LETTER A
+    0x0431: 0xD1,       #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xD2,       #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xD3,       #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xD4,       #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xD5,       #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xD6,       #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xD7,       #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xD8,       #  CYRILLIC SMALL LETTER I
+    0x0439: 0xD9,       #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xDA,       #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xDB,       #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xDC,       #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xDD,       #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xDE,       #  CYRILLIC SMALL LETTER O
+    0x043F: 0xDF,       #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xE0,       #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xE1,       #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xE2,       #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xE3,       #  CYRILLIC SMALL LETTER U
+    0x0444: 0xE4,       #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xE5,       #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xE6,       #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xE7,       #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xE8,       #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xE9,       #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xEA,       #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xEB,       #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xEC,       #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xED,       #  CYRILLIC SMALL LETTER E
+    0x044E: 0xEE,       #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xEF,       #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xF1,       #  CYRILLIC SMALL LETTER IO
+    0x0452: 0xF2,       #  CYRILLIC SMALL LETTER DJE
+    0x0453: 0xF3,       #  CYRILLIC SMALL LETTER GJE
+    0x0454: 0xF4,       #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0455: 0xF5,       #  CYRILLIC SMALL LETTER DZE
+    0x0456: 0xF6,       #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0457: 0xF7,       #  CYRILLIC SMALL LETTER YI
+    0x0458: 0xF8,       #  CYRILLIC SMALL LETTER JE
+    0x0459: 0xF9,       #  CYRILLIC SMALL LETTER LJE
+    0x045A: 0xFA,       #  CYRILLIC SMALL LETTER NJE
+    0x045B: 0xFB,       #  CYRILLIC SMALL LETTER TSHE
+    0x045C: 0xFC,       #  CYRILLIC SMALL LETTER KJE
+    0x045E: 0xFE,       #  CYRILLIC SMALL LETTER SHORT U
+    0x045F: 0xFF,       #  CYRILLIC SMALL LETTER DZHE
+    0x2116: 0xF0,       #  NUMERO SIGN
 }
-

Modified: python/trunk/Lib/encodings/iso8859_6.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_6.py	(original)
+++ python/trunk/Lib/encodings/iso8859_6.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,171 +32,171 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\ufffe'
+    u'\ufffe'
+    u'\ufffe'
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -204,8 +204,8 @@
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u060c'	#  0xAC -> ARABIC COMMA
-    u'\xad'	#  0xAD -> SOFT HYPHEN
+    u'\u060c'   #  0xAC -> ARABIC COMMA
+    u'\xad'     #  0xAD -> SOFT HYPHEN
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -219,62 +219,62 @@
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u061b'	#  0xBB -> ARABIC SEMICOLON
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\u061f'	#  0xBF -> ARABIC QUESTION MARK
-    u'\ufffe'
-    u'\u0621'	#  0xC1 -> ARABIC LETTER HAMZA
-    u'\u0622'	#  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'	#  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'	#  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'	#  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'	#  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'	#  0xC7 -> ARABIC LETTER ALEF
-    u'\u0628'	#  0xC8 -> ARABIC LETTER BEH
-    u'\u0629'	#  0xC9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'	#  0xCA -> ARABIC LETTER TEH
-    u'\u062b'	#  0xCB -> ARABIC LETTER THEH
-    u'\u062c'	#  0xCC -> ARABIC LETTER JEEM
-    u'\u062d'	#  0xCD -> ARABIC LETTER HAH
-    u'\u062e'	#  0xCE -> ARABIC LETTER KHAH
-    u'\u062f'	#  0xCF -> ARABIC LETTER DAL
-    u'\u0630'	#  0xD0 -> ARABIC LETTER THAL
-    u'\u0631'	#  0xD1 -> ARABIC LETTER REH
-    u'\u0632'	#  0xD2 -> ARABIC LETTER ZAIN
-    u'\u0633'	#  0xD3 -> ARABIC LETTER SEEN
-    u'\u0634'	#  0xD4 -> ARABIC LETTER SHEEN
-    u'\u0635'	#  0xD5 -> ARABIC LETTER SAD
-    u'\u0636'	#  0xD6 -> ARABIC LETTER DAD
-    u'\u0637'	#  0xD7 -> ARABIC LETTER TAH
-    u'\u0638'	#  0xD8 -> ARABIC LETTER ZAH
-    u'\u0639'	#  0xD9 -> ARABIC LETTER AIN
-    u'\u063a'	#  0xDA -> ARABIC LETTER GHAIN
+    u'\u061b'   #  0xBB -> ARABIC SEMICOLON
+    u'\ufffe'
+    u'\ufffe'
+    u'\ufffe'
+    u'\u061f'   #  0xBF -> ARABIC QUESTION MARK
+    u'\ufffe'
+    u'\u0621'   #  0xC1 -> ARABIC LETTER HAMZA
+    u'\u0622'   #  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
+    u'\u0623'   #  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
+    u'\u0624'   #  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
+    u'\u0625'   #  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
+    u'\u0626'   #  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
+    u'\u0627'   #  0xC7 -> ARABIC LETTER ALEF
+    u'\u0628'   #  0xC8 -> ARABIC LETTER BEH
+    u'\u0629'   #  0xC9 -> ARABIC LETTER TEH MARBUTA
+    u'\u062a'   #  0xCA -> ARABIC LETTER TEH
+    u'\u062b'   #  0xCB -> ARABIC LETTER THEH
+    u'\u062c'   #  0xCC -> ARABIC LETTER JEEM
+    u'\u062d'   #  0xCD -> ARABIC LETTER HAH
+    u'\u062e'   #  0xCE -> ARABIC LETTER KHAH
+    u'\u062f'   #  0xCF -> ARABIC LETTER DAL
+    u'\u0630'   #  0xD0 -> ARABIC LETTER THAL
+    u'\u0631'   #  0xD1 -> ARABIC LETTER REH
+    u'\u0632'   #  0xD2 -> ARABIC LETTER ZAIN
+    u'\u0633'   #  0xD3 -> ARABIC LETTER SEEN
+    u'\u0634'   #  0xD4 -> ARABIC LETTER SHEEN
+    u'\u0635'   #  0xD5 -> ARABIC LETTER SAD
+    u'\u0636'   #  0xD6 -> ARABIC LETTER DAD
+    u'\u0637'   #  0xD7 -> ARABIC LETTER TAH
+    u'\u0638'   #  0xD8 -> ARABIC LETTER ZAH
+    u'\u0639'   #  0xD9 -> ARABIC LETTER AIN
+    u'\u063a'   #  0xDA -> ARABIC LETTER GHAIN
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u0640'	#  0xE0 -> ARABIC TATWEEL
-    u'\u0641'	#  0xE1 -> ARABIC LETTER FEH
-    u'\u0642'	#  0xE2 -> ARABIC LETTER QAF
-    u'\u0643'	#  0xE3 -> ARABIC LETTER KAF
-    u'\u0644'	#  0xE4 -> ARABIC LETTER LAM
-    u'\u0645'	#  0xE5 -> ARABIC LETTER MEEM
-    u'\u0646'	#  0xE6 -> ARABIC LETTER NOON
-    u'\u0647'	#  0xE7 -> ARABIC LETTER HEH
-    u'\u0648'	#  0xE8 -> ARABIC LETTER WAW
-    u'\u0649'	#  0xE9 -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'	#  0xEA -> ARABIC LETTER YEH
-    u'\u064b'	#  0xEB -> ARABIC FATHATAN
-    u'\u064c'	#  0xEC -> ARABIC DAMMATAN
-    u'\u064d'	#  0xED -> ARABIC KASRATAN
-    u'\u064e'	#  0xEE -> ARABIC FATHA
-    u'\u064f'	#  0xEF -> ARABIC DAMMA
-    u'\u0650'	#  0xF0 -> ARABIC KASRA
-    u'\u0651'	#  0xF1 -> ARABIC SHADDA
-    u'\u0652'	#  0xF2 -> ARABIC SUKUN
+    u'\u0640'   #  0xE0 -> ARABIC TATWEEL
+    u'\u0641'   #  0xE1 -> ARABIC LETTER FEH
+    u'\u0642'   #  0xE2 -> ARABIC LETTER QAF
+    u'\u0643'   #  0xE3 -> ARABIC LETTER KAF
+    u'\u0644'   #  0xE4 -> ARABIC LETTER LAM
+    u'\u0645'   #  0xE5 -> ARABIC LETTER MEEM
+    u'\u0646'   #  0xE6 -> ARABIC LETTER NOON
+    u'\u0647'   #  0xE7 -> ARABIC LETTER HEH
+    u'\u0648'   #  0xE8 -> ARABIC LETTER WAW
+    u'\u0649'   #  0xE9 -> ARABIC LETTER ALEF MAKSURA
+    u'\u064a'   #  0xEA -> ARABIC LETTER YEH
+    u'\u064b'   #  0xEB -> ARABIC FATHATAN
+    u'\u064c'   #  0xEC -> ARABIC DAMMATAN
+    u'\u064d'   #  0xED -> ARABIC KASRATAN
+    u'\u064e'   #  0xEE -> ARABIC FATHA
+    u'\u064f'   #  0xEF -> ARABIC DAMMA
+    u'\u0650'   #  0xF0 -> ARABIC KASRA
+    u'\u0651'   #  0xF1 -> ARABIC SHADDA
+    u'\u0652'   #  0xF2 -> ARABIC SUKUN
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -293,216 +293,215 @@
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x060C: 0xAC,	#  ARABIC COMMA
-    0x061B: 0xBB,	#  ARABIC SEMICOLON
-    0x061F: 0xBF,	#  ARABIC QUESTION MARK
-    0x0621: 0xC1,	#  ARABIC LETTER HAMZA
-    0x0622: 0xC2,	#  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x0623: 0xC3,	#  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x0624: 0xC4,	#  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x0625: 0xC5,	#  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x0626: 0xC6,	#  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x0627: 0xC7,	#  ARABIC LETTER ALEF
-    0x0628: 0xC8,	#  ARABIC LETTER BEH
-    0x0629: 0xC9,	#  ARABIC LETTER TEH MARBUTA
-    0x062A: 0xCA,	#  ARABIC LETTER TEH
-    0x062B: 0xCB,	#  ARABIC LETTER THEH
-    0x062C: 0xCC,	#  ARABIC LETTER JEEM
-    0x062D: 0xCD,	#  ARABIC LETTER HAH
-    0x062E: 0xCE,	#  ARABIC LETTER KHAH
-    0x062F: 0xCF,	#  ARABIC LETTER DAL
-    0x0630: 0xD0,	#  ARABIC LETTER THAL
-    0x0631: 0xD1,	#  ARABIC LETTER REH
-    0x0632: 0xD2,	#  ARABIC LETTER ZAIN
-    0x0633: 0xD3,	#  ARABIC LETTER SEEN
-    0x0634: 0xD4,	#  ARABIC LETTER SHEEN
-    0x0635: 0xD5,	#  ARABIC LETTER SAD
-    0x0636: 0xD6,	#  ARABIC LETTER DAD
-    0x0637: 0xD7,	#  ARABIC LETTER TAH
-    0x0638: 0xD8,	#  ARABIC LETTER ZAH
-    0x0639: 0xD9,	#  ARABIC LETTER AIN
-    0x063A: 0xDA,	#  ARABIC LETTER GHAIN
-    0x0640: 0xE0,	#  ARABIC TATWEEL
-    0x0641: 0xE1,	#  ARABIC LETTER FEH
-    0x0642: 0xE2,	#  ARABIC LETTER QAF
-    0x0643: 0xE3,	#  ARABIC LETTER KAF
-    0x0644: 0xE4,	#  ARABIC LETTER LAM
-    0x0645: 0xE5,	#  ARABIC LETTER MEEM
-    0x0646: 0xE6,	#  ARABIC LETTER NOON
-    0x0647: 0xE7,	#  ARABIC LETTER HEH
-    0x0648: 0xE8,	#  ARABIC LETTER WAW
-    0x0649: 0xE9,	#  ARABIC LETTER ALEF MAKSURA
-    0x064A: 0xEA,	#  ARABIC LETTER YEH
-    0x064B: 0xEB,	#  ARABIC FATHATAN
-    0x064C: 0xEC,	#  ARABIC DAMMATAN
-    0x064D: 0xED,	#  ARABIC KASRATAN
-    0x064E: 0xEE,	#  ARABIC FATHA
-    0x064F: 0xEF,	#  ARABIC DAMMA
-    0x0650: 0xF0,	#  ARABIC KASRA
-    0x0651: 0xF1,	#  ARABIC SHADDA
-    0x0652: 0xF2,	#  ARABIC SUKUN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x060C: 0xAC,       #  ARABIC COMMA
+    0x061B: 0xBB,       #  ARABIC SEMICOLON
+    0x061F: 0xBF,       #  ARABIC QUESTION MARK
+    0x0621: 0xC1,       #  ARABIC LETTER HAMZA
+    0x0622: 0xC2,       #  ARABIC LETTER ALEF WITH MADDA ABOVE
+    0x0623: 0xC3,       #  ARABIC LETTER ALEF WITH HAMZA ABOVE
+    0x0624: 0xC4,       #  ARABIC LETTER WAW WITH HAMZA ABOVE
+    0x0625: 0xC5,       #  ARABIC LETTER ALEF WITH HAMZA BELOW
+    0x0626: 0xC6,       #  ARABIC LETTER YEH WITH HAMZA ABOVE
+    0x0627: 0xC7,       #  ARABIC LETTER ALEF
+    0x0628: 0xC8,       #  ARABIC LETTER BEH
+    0x0629: 0xC9,       #  ARABIC LETTER TEH MARBUTA
+    0x062A: 0xCA,       #  ARABIC LETTER TEH
+    0x062B: 0xCB,       #  ARABIC LETTER THEH
+    0x062C: 0xCC,       #  ARABIC LETTER JEEM
+    0x062D: 0xCD,       #  ARABIC LETTER HAH
+    0x062E: 0xCE,       #  ARABIC LETTER KHAH
+    0x062F: 0xCF,       #  ARABIC LETTER DAL
+    0x0630: 0xD0,       #  ARABIC LETTER THAL
+    0x0631: 0xD1,       #  ARABIC LETTER REH
+    0x0632: 0xD2,       #  ARABIC LETTER ZAIN
+    0x0633: 0xD3,       #  ARABIC LETTER SEEN
+    0x0634: 0xD4,       #  ARABIC LETTER SHEEN
+    0x0635: 0xD5,       #  ARABIC LETTER SAD
+    0x0636: 0xD6,       #  ARABIC LETTER DAD
+    0x0637: 0xD7,       #  ARABIC LETTER TAH
+    0x0638: 0xD8,       #  ARABIC LETTER ZAH
+    0x0639: 0xD9,       #  ARABIC LETTER AIN
+    0x063A: 0xDA,       #  ARABIC LETTER GHAIN
+    0x0640: 0xE0,       #  ARABIC TATWEEL
+    0x0641: 0xE1,       #  ARABIC LETTER FEH
+    0x0642: 0xE2,       #  ARABIC LETTER QAF
+    0x0643: 0xE3,       #  ARABIC LETTER KAF
+    0x0644: 0xE4,       #  ARABIC LETTER LAM
+    0x0645: 0xE5,       #  ARABIC LETTER MEEM
+    0x0646: 0xE6,       #  ARABIC LETTER NOON
+    0x0647: 0xE7,       #  ARABIC LETTER HEH
+    0x0648: 0xE8,       #  ARABIC LETTER WAW
+    0x0649: 0xE9,       #  ARABIC LETTER ALEF MAKSURA
+    0x064A: 0xEA,       #  ARABIC LETTER YEH
+    0x064B: 0xEB,       #  ARABIC FATHATAN
+    0x064C: 0xEC,       #  ARABIC DAMMATAN
+    0x064D: 0xED,       #  ARABIC KASRATAN
+    0x064E: 0xEE,       #  ARABIC FATHA
+    0x064F: 0xEF,       #  ARABIC DAMMA
+    0x0650: 0xF0,       #  ARABIC KASRA
+    0x0651: 0xF1,       #  ARABIC SHADDA
+    0x0652: 0xF2,       #  ARABIC SUKUN
 }
-

Modified: python/trunk/Lib/encodings/iso8859_7.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_7.py	(original)
+++ python/trunk/Lib/encodings/iso8859_7.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,519 +32,518 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\u2018'	#  0xA1 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0xA2 -> RIGHT SINGLE QUOTATION MARK
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\u20ac'	#  0xA4 -> EURO SIGN
-    u'\u20af'	#  0xA5 -> DRACHMA SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u037a'	#  0xAA -> GREEK YPOGEGRAMMENI
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\u2018'   #  0xA1 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0xA2 -> RIGHT SINGLE QUOTATION MARK
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\u20ac'   #  0xA4 -> EURO SIGN
+    u'\u20af'   #  0xA5 -> DRACHMA SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u037a'   #  0xAA -> GREEK YPOGEGRAMMENI
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
     u'\ufffe'
-    u'\u2015'	#  0xAF -> HORIZONTAL BAR
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\u0384'	#  0xB4 -> GREEK TONOS
-    u'\u0385'	#  0xB5 -> GREEK DIALYTIKA TONOS
-    u'\u0386'	#  0xB6 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\u0388'	#  0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'	#  0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'	#  0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u038c'	#  0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\u038e'	#  0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'	#  0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\u0390'	#  0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u0391'	#  0xC1 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'	#  0xC2 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'	#  0xC3 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'	#  0xC4 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'	#  0xC5 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'	#  0xC6 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'	#  0xC7 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'	#  0xC8 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'	#  0xC9 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'	#  0xCA -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'	#  0xCB -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'	#  0xCC -> GREEK CAPITAL LETTER MU
-    u'\u039d'	#  0xCD -> GREEK CAPITAL LETTER NU
-    u'\u039e'	#  0xCE -> GREEK CAPITAL LETTER XI
-    u'\u039f'	#  0xCF -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'	#  0xD0 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'	#  0xD1 -> GREEK CAPITAL LETTER RHO
+    u'\u2015'   #  0xAF -> HORIZONTAL BAR
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\u0384'   #  0xB4 -> GREEK TONOS
+    u'\u0385'   #  0xB5 -> GREEK DIALYTIKA TONOS
+    u'\u0386'   #  0xB6 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\u0388'   #  0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
+    u'\u0389'   #  0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
+    u'\u038a'   #  0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u038c'   #  0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\u038e'   #  0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
+    u'\u038f'   #  0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
+    u'\u0390'   #  0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    u'\u0391'   #  0xC1 -> GREEK CAPITAL LETTER ALPHA
+    u'\u0392'   #  0xC2 -> GREEK CAPITAL LETTER BETA
+    u'\u0393'   #  0xC3 -> GREEK CAPITAL LETTER GAMMA
+    u'\u0394'   #  0xC4 -> GREEK CAPITAL LETTER DELTA
+    u'\u0395'   #  0xC5 -> GREEK CAPITAL LETTER EPSILON
+    u'\u0396'   #  0xC6 -> GREEK CAPITAL LETTER ZETA
+    u'\u0397'   #  0xC7 -> GREEK CAPITAL LETTER ETA
+    u'\u0398'   #  0xC8 -> GREEK CAPITAL LETTER THETA
+    u'\u0399'   #  0xC9 -> GREEK CAPITAL LETTER IOTA
+    u'\u039a'   #  0xCA -> GREEK CAPITAL LETTER KAPPA
+    u'\u039b'   #  0xCB -> GREEK CAPITAL LETTER LAMDA
+    u'\u039c'   #  0xCC -> GREEK CAPITAL LETTER MU
+    u'\u039d'   #  0xCD -> GREEK CAPITAL LETTER NU
+    u'\u039e'   #  0xCE -> GREEK CAPITAL LETTER XI
+    u'\u039f'   #  0xCF -> GREEK CAPITAL LETTER OMICRON
+    u'\u03a0'   #  0xD0 -> GREEK CAPITAL LETTER PI
+    u'\u03a1'   #  0xD1 -> GREEK CAPITAL LETTER RHO
     u'\ufffe'
-    u'\u03a3'	#  0xD3 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'	#  0xD4 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'	#  0xD5 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'	#  0xD6 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'	#  0xD7 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'	#  0xD8 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'	#  0xD9 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03aa'	#  0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'	#  0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ac'	#  0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'	#  0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'	#  0xDE -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'	#  0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03b0'	#  0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u03b1'	#  0xE1 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'	#  0xE2 -> GREEK SMALL LETTER BETA
-    u'\u03b3'	#  0xE3 -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'	#  0xE4 -> GREEK SMALL LETTER DELTA
-    u'\u03b5'	#  0xE5 -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'	#  0xE6 -> GREEK SMALL LETTER ZETA
-    u'\u03b7'	#  0xE7 -> GREEK SMALL LETTER ETA
-    u'\u03b8'	#  0xE8 -> GREEK SMALL LETTER THETA
-    u'\u03b9'	#  0xE9 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'	#  0xEA -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'	#  0xEB -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'	#  0xEC -> GREEK SMALL LETTER MU
-    u'\u03bd'	#  0xED -> GREEK SMALL LETTER NU
-    u'\u03be'	#  0xEE -> GREEK SMALL LETTER XI
-    u'\u03bf'	#  0xEF -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'	#  0xF0 -> GREEK SMALL LETTER PI
-    u'\u03c1'	#  0xF1 -> GREEK SMALL LETTER RHO
-    u'\u03c2'	#  0xF2 -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c3'	#  0xF3 -> GREEK SMALL LETTER SIGMA
-    u'\u03c4'	#  0xF4 -> GREEK SMALL LETTER TAU
-    u'\u03c5'	#  0xF5 -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'	#  0xF6 -> GREEK SMALL LETTER PHI
-    u'\u03c7'	#  0xF7 -> GREEK SMALL LETTER CHI
-    u'\u03c8'	#  0xF8 -> GREEK SMALL LETTER PSI
-    u'\u03c9'	#  0xF9 -> GREEK SMALL LETTER OMEGA
-    u'\u03ca'	#  0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03cb'	#  0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03cc'	#  0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'	#  0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03ce'	#  0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\u03a3'   #  0xD3 -> GREEK CAPITAL LETTER SIGMA
+    u'\u03a4'   #  0xD4 -> GREEK CAPITAL LETTER TAU
+    u'\u03a5'   #  0xD5 -> GREEK CAPITAL LETTER UPSILON
+    u'\u03a6'   #  0xD6 -> GREEK CAPITAL LETTER PHI
+    u'\u03a7'   #  0xD7 -> GREEK CAPITAL LETTER CHI
+    u'\u03a8'   #  0xD8 -> GREEK CAPITAL LETTER PSI
+    u'\u03a9'   #  0xD9 -> GREEK CAPITAL LETTER OMEGA
+    u'\u03aa'   #  0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    u'\u03ab'   #  0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    u'\u03ac'   #  0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\u03ad'   #  0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'   #  0xDE -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03af'   #  0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03b0'   #  0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    u'\u03b1'   #  0xE1 -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'   #  0xE2 -> GREEK SMALL LETTER BETA
+    u'\u03b3'   #  0xE3 -> GREEK SMALL LETTER GAMMA
+    u'\u03b4'   #  0xE4 -> GREEK SMALL LETTER DELTA
+    u'\u03b5'   #  0xE5 -> GREEK SMALL LETTER EPSILON
+    u'\u03b6'   #  0xE6 -> GREEK SMALL LETTER ZETA
+    u'\u03b7'   #  0xE7 -> GREEK SMALL LETTER ETA
+    u'\u03b8'   #  0xE8 -> GREEK SMALL LETTER THETA
+    u'\u03b9'   #  0xE9 -> GREEK SMALL LETTER IOTA
+    u'\u03ba'   #  0xEA -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'   #  0xEB -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'   #  0xEC -> GREEK SMALL LETTER MU
+    u'\u03bd'   #  0xED -> GREEK SMALL LETTER NU
+    u'\u03be'   #  0xEE -> GREEK SMALL LETTER XI
+    u'\u03bf'   #  0xEF -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'   #  0xF0 -> GREEK SMALL LETTER PI
+    u'\u03c1'   #  0xF1 -> GREEK SMALL LETTER RHO
+    u'\u03c2'   #  0xF2 -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c3'   #  0xF3 -> GREEK SMALL LETTER SIGMA
+    u'\u03c4'   #  0xF4 -> GREEK SMALL LETTER TAU
+    u'\u03c5'   #  0xF5 -> GREEK SMALL LETTER UPSILON
+    u'\u03c6'   #  0xF6 -> GREEK SMALL LETTER PHI
+    u'\u03c7'   #  0xF7 -> GREEK SMALL LETTER CHI
+    u'\u03c8'   #  0xF8 -> GREEK SMALL LETTER PSI
+    u'\u03c9'   #  0xF9 -> GREEK SMALL LETTER OMEGA
+    u'\u03ca'   #  0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u03cb'   #  0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u03cc'   #  0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u03cd'   #  0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u03ce'   #  0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
     u'\ufffe'
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x037A: 0xAA,	#  GREEK YPOGEGRAMMENI
-    0x0384: 0xB4,	#  GREEK TONOS
-    0x0385: 0xB5,	#  GREEK DIALYTIKA TONOS
-    0x0386: 0xB6,	#  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0xB8,	#  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0xB9,	#  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038A: 0xBA,	#  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038C: 0xBC,	#  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038E: 0xBE,	#  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038F: 0xBF,	#  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0xC0,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x0391: 0xC1,	#  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0xC2,	#  GREEK CAPITAL LETTER BETA
-    0x0393: 0xC3,	#  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0xC4,	#  GREEK CAPITAL LETTER DELTA
-    0x0395: 0xC5,	#  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0xC6,	#  GREEK CAPITAL LETTER ZETA
-    0x0397: 0xC7,	#  GREEK CAPITAL LETTER ETA
-    0x0398: 0xC8,	#  GREEK CAPITAL LETTER THETA
-    0x0399: 0xC9,	#  GREEK CAPITAL LETTER IOTA
-    0x039A: 0xCA,	#  GREEK CAPITAL LETTER KAPPA
-    0x039B: 0xCB,	#  GREEK CAPITAL LETTER LAMDA
-    0x039C: 0xCC,	#  GREEK CAPITAL LETTER MU
-    0x039D: 0xCD,	#  GREEK CAPITAL LETTER NU
-    0x039E: 0xCE,	#  GREEK CAPITAL LETTER XI
-    0x039F: 0xCF,	#  GREEK CAPITAL LETTER OMICRON
-    0x03A0: 0xD0,	#  GREEK CAPITAL LETTER PI
-    0x03A1: 0xD1,	#  GREEK CAPITAL LETTER RHO
-    0x03A3: 0xD3,	#  GREEK CAPITAL LETTER SIGMA
-    0x03A4: 0xD4,	#  GREEK CAPITAL LETTER TAU
-    0x03A5: 0xD5,	#  GREEK CAPITAL LETTER UPSILON
-    0x03A6: 0xD6,	#  GREEK CAPITAL LETTER PHI
-    0x03A7: 0xD7,	#  GREEK CAPITAL LETTER CHI
-    0x03A8: 0xD8,	#  GREEK CAPITAL LETTER PSI
-    0x03A9: 0xD9,	#  GREEK CAPITAL LETTER OMEGA
-    0x03AA: 0xDA,	#  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03AB: 0xDB,	#  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03AC: 0xDC,	#  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03AD: 0xDD,	#  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03AE: 0xDE,	#  GREEK SMALL LETTER ETA WITH TONOS
-    0x03AF: 0xDF,	#  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03B0: 0xE0,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03B1: 0xE1,	#  GREEK SMALL LETTER ALPHA
-    0x03B2: 0xE2,	#  GREEK SMALL LETTER BETA
-    0x03B3: 0xE3,	#  GREEK SMALL LETTER GAMMA
-    0x03B4: 0xE4,	#  GREEK SMALL LETTER DELTA
-    0x03B5: 0xE5,	#  GREEK SMALL LETTER EPSILON
-    0x03B6: 0xE6,	#  GREEK SMALL LETTER ZETA
-    0x03B7: 0xE7,	#  GREEK SMALL LETTER ETA
-    0x03B8: 0xE8,	#  GREEK SMALL LETTER THETA
-    0x03B9: 0xE9,	#  GREEK SMALL LETTER IOTA
-    0x03BA: 0xEA,	#  GREEK SMALL LETTER KAPPA
-    0x03BB: 0xEB,	#  GREEK SMALL LETTER LAMDA
-    0x03BC: 0xEC,	#  GREEK SMALL LETTER MU
-    0x03BD: 0xED,	#  GREEK SMALL LETTER NU
-    0x03BE: 0xEE,	#  GREEK SMALL LETTER XI
-    0x03BF: 0xEF,	#  GREEK SMALL LETTER OMICRON
-    0x03C0: 0xF0,	#  GREEK SMALL LETTER PI
-    0x03C1: 0xF1,	#  GREEK SMALL LETTER RHO
-    0x03C2: 0xF2,	#  GREEK SMALL LETTER FINAL SIGMA
-    0x03C3: 0xF3,	#  GREEK SMALL LETTER SIGMA
-    0x03C4: 0xF4,	#  GREEK SMALL LETTER TAU
-    0x03C5: 0xF5,	#  GREEK SMALL LETTER UPSILON
-    0x03C6: 0xF6,	#  GREEK SMALL LETTER PHI
-    0x03C7: 0xF7,	#  GREEK SMALL LETTER CHI
-    0x03C8: 0xF8,	#  GREEK SMALL LETTER PSI
-    0x03C9: 0xF9,	#  GREEK SMALL LETTER OMEGA
-    0x03CA: 0xFA,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03CB: 0xFB,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03CC: 0xFC,	#  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03CD: 0xFD,	#  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03CE: 0xFE,	#  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x2015: 0xAF,	#  HORIZONTAL BAR
-    0x2018: 0xA1,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xA2,	#  RIGHT SINGLE QUOTATION MARK
-    0x20AC: 0xA4,	#  EURO SIGN
-    0x20AF: 0xA5,	#  DRACHMA SIGN
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x037A: 0xAA,       #  GREEK YPOGEGRAMMENI
+    0x0384: 0xB4,       #  GREEK TONOS
+    0x0385: 0xB5,       #  GREEK DIALYTIKA TONOS
+    0x0386: 0xB6,       #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0388: 0xB8,       #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x0389: 0xB9,       #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x038A: 0xBA,       #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038C: 0xBC,       #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038E: 0xBE,       #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038F: 0xBF,       #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0390: 0xC0,       #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x0391: 0xC1,       #  GREEK CAPITAL LETTER ALPHA
+    0x0392: 0xC2,       #  GREEK CAPITAL LETTER BETA
+    0x0393: 0xC3,       #  GREEK CAPITAL LETTER GAMMA
+    0x0394: 0xC4,       #  GREEK CAPITAL LETTER DELTA
+    0x0395: 0xC5,       #  GREEK CAPITAL LETTER EPSILON
+    0x0396: 0xC6,       #  GREEK CAPITAL LETTER ZETA
+    0x0397: 0xC7,       #  GREEK CAPITAL LETTER ETA
+    0x0398: 0xC8,       #  GREEK CAPITAL LETTER THETA
+    0x0399: 0xC9,       #  GREEK CAPITAL LETTER IOTA
+    0x039A: 0xCA,       #  GREEK CAPITAL LETTER KAPPA
+    0x039B: 0xCB,       #  GREEK CAPITAL LETTER LAMDA
+    0x039C: 0xCC,       #  GREEK CAPITAL LETTER MU
+    0x039D: 0xCD,       #  GREEK CAPITAL LETTER NU
+    0x039E: 0xCE,       #  GREEK CAPITAL LETTER XI
+    0x039F: 0xCF,       #  GREEK CAPITAL LETTER OMICRON
+    0x03A0: 0xD0,       #  GREEK CAPITAL LETTER PI
+    0x03A1: 0xD1,       #  GREEK CAPITAL LETTER RHO
+    0x03A3: 0xD3,       #  GREEK CAPITAL LETTER SIGMA
+    0x03A4: 0xD4,       #  GREEK CAPITAL LETTER TAU
+    0x03A5: 0xD5,       #  GREEK CAPITAL LETTER UPSILON
+    0x03A6: 0xD6,       #  GREEK CAPITAL LETTER PHI
+    0x03A7: 0xD7,       #  GREEK CAPITAL LETTER CHI
+    0x03A8: 0xD8,       #  GREEK CAPITAL LETTER PSI
+    0x03A9: 0xD9,       #  GREEK CAPITAL LETTER OMEGA
+    0x03AA: 0xDA,       #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03AB: 0xDB,       #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03AC: 0xDC,       #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03AD: 0xDD,       #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03AE: 0xDE,       #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03AF: 0xDF,       #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03B0: 0xE0,       #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x03B1: 0xE1,       #  GREEK SMALL LETTER ALPHA
+    0x03B2: 0xE2,       #  GREEK SMALL LETTER BETA
+    0x03B3: 0xE3,       #  GREEK SMALL LETTER GAMMA
+    0x03B4: 0xE4,       #  GREEK SMALL LETTER DELTA
+    0x03B5: 0xE5,       #  GREEK SMALL LETTER EPSILON
+    0x03B6: 0xE6,       #  GREEK SMALL LETTER ZETA
+    0x03B7: 0xE7,       #  GREEK SMALL LETTER ETA
+    0x03B8: 0xE8,       #  GREEK SMALL LETTER THETA
+    0x03B9: 0xE9,       #  GREEK SMALL LETTER IOTA
+    0x03BA: 0xEA,       #  GREEK SMALL LETTER KAPPA
+    0x03BB: 0xEB,       #  GREEK SMALL LETTER LAMDA
+    0x03BC: 0xEC,       #  GREEK SMALL LETTER MU
+    0x03BD: 0xED,       #  GREEK SMALL LETTER NU
+    0x03BE: 0xEE,       #  GREEK SMALL LETTER XI
+    0x03BF: 0xEF,       #  GREEK SMALL LETTER OMICRON
+    0x03C0: 0xF0,       #  GREEK SMALL LETTER PI
+    0x03C1: 0xF1,       #  GREEK SMALL LETTER RHO
+    0x03C2: 0xF2,       #  GREEK SMALL LETTER FINAL SIGMA
+    0x03C3: 0xF3,       #  GREEK SMALL LETTER SIGMA
+    0x03C4: 0xF4,       #  GREEK SMALL LETTER TAU
+    0x03C5: 0xF5,       #  GREEK SMALL LETTER UPSILON
+    0x03C6: 0xF6,       #  GREEK SMALL LETTER PHI
+    0x03C7: 0xF7,       #  GREEK SMALL LETTER CHI
+    0x03C8: 0xF8,       #  GREEK SMALL LETTER PSI
+    0x03C9: 0xF9,       #  GREEK SMALL LETTER OMEGA
+    0x03CA: 0xFA,       #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03CB: 0xFB,       #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03CC: 0xFC,       #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03CD: 0xFD,       #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03CE: 0xFE,       #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x2015: 0xAF,       #  HORIZONTAL BAR
+    0x2018: 0xA1,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xA2,       #  RIGHT SINGLE QUOTATION MARK
+    0x20AC: 0xA4,       #  EURO SIGN
+    0x20AF: 0xA5,       #  DRACHMA SIGN
 }
-

Modified: python/trunk/Lib/encodings/iso8859_8.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_8.py	(original)
+++ python/trunk/Lib/encodings/iso8859_8.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,197 +32,197 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\ufffe'
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\xd7'	#  0xAA -> MULTIPLICATION SIGN
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\xf7'	#  0xBA -> DIVISION SIGN
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\ufffe'
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\xd7'     #  0xAA -> MULTIPLICATION SIGN
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\xf7'     #  0xBA -> DIVISION SIGN
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -255,263 +255,262 @@
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u2017'	#  0xDF -> DOUBLE LOW LINE
-    u'\u05d0'	#  0xE0 -> HEBREW LETTER ALEF
-    u'\u05d1'	#  0xE1 -> HEBREW LETTER BET
-    u'\u05d2'	#  0xE2 -> HEBREW LETTER GIMEL
-    u'\u05d3'	#  0xE3 -> HEBREW LETTER DALET
-    u'\u05d4'	#  0xE4 -> HEBREW LETTER HE
-    u'\u05d5'	#  0xE5 -> HEBREW LETTER VAV
-    u'\u05d6'	#  0xE6 -> HEBREW LETTER ZAYIN
-    u'\u05d7'	#  0xE7 -> HEBREW LETTER HET
-    u'\u05d8'	#  0xE8 -> HEBREW LETTER TET
-    u'\u05d9'	#  0xE9 -> HEBREW LETTER YOD
-    u'\u05da'	#  0xEA -> HEBREW LETTER FINAL KAF
-    u'\u05db'	#  0xEB -> HEBREW LETTER KAF
-    u'\u05dc'	#  0xEC -> HEBREW LETTER LAMED
-    u'\u05dd'	#  0xED -> HEBREW LETTER FINAL MEM
-    u'\u05de'	#  0xEE -> HEBREW LETTER MEM
-    u'\u05df'	#  0xEF -> HEBREW LETTER FINAL NUN
-    u'\u05e0'	#  0xF0 -> HEBREW LETTER NUN
-    u'\u05e1'	#  0xF1 -> HEBREW LETTER SAMEKH
-    u'\u05e2'	#  0xF2 -> HEBREW LETTER AYIN
-    u'\u05e3'	#  0xF3 -> HEBREW LETTER FINAL PE
-    u'\u05e4'	#  0xF4 -> HEBREW LETTER PE
-    u'\u05e5'	#  0xF5 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'	#  0xF6 -> HEBREW LETTER TSADI
-    u'\u05e7'	#  0xF7 -> HEBREW LETTER QOF
-    u'\u05e8'	#  0xF8 -> HEBREW LETTER RESH
-    u'\u05e9'	#  0xF9 -> HEBREW LETTER SHIN
-    u'\u05ea'	#  0xFA -> HEBREW LETTER TAV
+    u'\u2017'   #  0xDF -> DOUBLE LOW LINE
+    u'\u05d0'   #  0xE0 -> HEBREW LETTER ALEF
+    u'\u05d1'   #  0xE1 -> HEBREW LETTER BET
+    u'\u05d2'   #  0xE2 -> HEBREW LETTER GIMEL
+    u'\u05d3'   #  0xE3 -> HEBREW LETTER DALET
+    u'\u05d4'   #  0xE4 -> HEBREW LETTER HE
+    u'\u05d5'   #  0xE5 -> HEBREW LETTER VAV
+    u'\u05d6'   #  0xE6 -> HEBREW LETTER ZAYIN
+    u'\u05d7'   #  0xE7 -> HEBREW LETTER HET
+    u'\u05d8'   #  0xE8 -> HEBREW LETTER TET
+    u'\u05d9'   #  0xE9 -> HEBREW LETTER YOD
+    u'\u05da'   #  0xEA -> HEBREW LETTER FINAL KAF
+    u'\u05db'   #  0xEB -> HEBREW LETTER KAF
+    u'\u05dc'   #  0xEC -> HEBREW LETTER LAMED
+    u'\u05dd'   #  0xED -> HEBREW LETTER FINAL MEM
+    u'\u05de'   #  0xEE -> HEBREW LETTER MEM
+    u'\u05df'   #  0xEF -> HEBREW LETTER FINAL NUN
+    u'\u05e0'   #  0xF0 -> HEBREW LETTER NUN
+    u'\u05e1'   #  0xF1 -> HEBREW LETTER SAMEKH
+    u'\u05e2'   #  0xF2 -> HEBREW LETTER AYIN
+    u'\u05e3'   #  0xF3 -> HEBREW LETTER FINAL PE
+    u'\u05e4'   #  0xF4 -> HEBREW LETTER PE
+    u'\u05e5'   #  0xF5 -> HEBREW LETTER FINAL TSADI
+    u'\u05e6'   #  0xF6 -> HEBREW LETTER TSADI
+    u'\u05e7'   #  0xF7 -> HEBREW LETTER QOF
+    u'\u05e8'   #  0xF8 -> HEBREW LETTER RESH
+    u'\u05e9'   #  0xF9 -> HEBREW LETTER SHIN
+    u'\u05ea'   #  0xFA -> HEBREW LETTER TAV
     u'\ufffe'
     u'\ufffe'
-    u'\u200e'	#  0xFD -> LEFT-TO-RIGHT MARK
-    u'\u200f'	#  0xFE -> RIGHT-TO-LEFT MARK
+    u'\u200e'   #  0xFD -> LEFT-TO-RIGHT MARK
+    u'\u200f'   #  0xFE -> RIGHT-TO-LEFT MARK
     u'\ufffe'
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00D7: 0xAA,	#  MULTIPLICATION SIGN
-    0x00F7: 0xBA,	#  DIVISION SIGN
-    0x05D0: 0xE0,	#  HEBREW LETTER ALEF
-    0x05D1: 0xE1,	#  HEBREW LETTER BET
-    0x05D2: 0xE2,	#  HEBREW LETTER GIMEL
-    0x05D3: 0xE3,	#  HEBREW LETTER DALET
-    0x05D4: 0xE4,	#  HEBREW LETTER HE
-    0x05D5: 0xE5,	#  HEBREW LETTER VAV
-    0x05D6: 0xE6,	#  HEBREW LETTER ZAYIN
-    0x05D7: 0xE7,	#  HEBREW LETTER HET
-    0x05D8: 0xE8,	#  HEBREW LETTER TET
-    0x05D9: 0xE9,	#  HEBREW LETTER YOD
-    0x05DA: 0xEA,	#  HEBREW LETTER FINAL KAF
-    0x05DB: 0xEB,	#  HEBREW LETTER KAF
-    0x05DC: 0xEC,	#  HEBREW LETTER LAMED
-    0x05DD: 0xED,	#  HEBREW LETTER FINAL MEM
-    0x05DE: 0xEE,	#  HEBREW LETTER MEM
-    0x05DF: 0xEF,	#  HEBREW LETTER FINAL NUN
-    0x05E0: 0xF0,	#  HEBREW LETTER NUN
-    0x05E1: 0xF1,	#  HEBREW LETTER SAMEKH
-    0x05E2: 0xF2,	#  HEBREW LETTER AYIN
-    0x05E3: 0xF3,	#  HEBREW LETTER FINAL PE
-    0x05E4: 0xF4,	#  HEBREW LETTER PE
-    0x05E5: 0xF5,	#  HEBREW LETTER FINAL TSADI
-    0x05E6: 0xF6,	#  HEBREW LETTER TSADI
-    0x05E7: 0xF7,	#  HEBREW LETTER QOF
-    0x05E8: 0xF8,	#  HEBREW LETTER RESH
-    0x05E9: 0xF9,	#  HEBREW LETTER SHIN
-    0x05EA: 0xFA,	#  HEBREW LETTER TAV
-    0x200E: 0xFD,	#  LEFT-TO-RIGHT MARK
-    0x200F: 0xFE,	#  RIGHT-TO-LEFT MARK
-    0x2017: 0xDF,	#  DOUBLE LOW LINE
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00D7: 0xAA,       #  MULTIPLICATION SIGN
+    0x00F7: 0xBA,       #  DIVISION SIGN
+    0x05D0: 0xE0,       #  HEBREW LETTER ALEF
+    0x05D1: 0xE1,       #  HEBREW LETTER BET
+    0x05D2: 0xE2,       #  HEBREW LETTER GIMEL
+    0x05D3: 0xE3,       #  HEBREW LETTER DALET
+    0x05D4: 0xE4,       #  HEBREW LETTER HE
+    0x05D5: 0xE5,       #  HEBREW LETTER VAV
+    0x05D6: 0xE6,       #  HEBREW LETTER ZAYIN
+    0x05D7: 0xE7,       #  HEBREW LETTER HET
+    0x05D8: 0xE8,       #  HEBREW LETTER TET
+    0x05D9: 0xE9,       #  HEBREW LETTER YOD
+    0x05DA: 0xEA,       #  HEBREW LETTER FINAL KAF
+    0x05DB: 0xEB,       #  HEBREW LETTER KAF
+    0x05DC: 0xEC,       #  HEBREW LETTER LAMED
+    0x05DD: 0xED,       #  HEBREW LETTER FINAL MEM
+    0x05DE: 0xEE,       #  HEBREW LETTER MEM
+    0x05DF: 0xEF,       #  HEBREW LETTER FINAL NUN
+    0x05E0: 0xF0,       #  HEBREW LETTER NUN
+    0x05E1: 0xF1,       #  HEBREW LETTER SAMEKH
+    0x05E2: 0xF2,       #  HEBREW LETTER AYIN
+    0x05E3: 0xF3,       #  HEBREW LETTER FINAL PE
+    0x05E4: 0xF4,       #  HEBREW LETTER PE
+    0x05E5: 0xF5,       #  HEBREW LETTER FINAL TSADI
+    0x05E6: 0xF6,       #  HEBREW LETTER TSADI
+    0x05E7: 0xF7,       #  HEBREW LETTER QOF
+    0x05E8: 0xF8,       #  HEBREW LETTER RESH
+    0x05E9: 0xF9,       #  HEBREW LETTER SHIN
+    0x05EA: 0xFA,       #  HEBREW LETTER TAV
+    0x200E: 0xFD,       #  LEFT-TO-RIGHT MARK
+    0x200F: 0xFE,       #  RIGHT-TO-LEFT MARK
+    0x2017: 0xDF,       #  DOUBLE LOW LINE
 }
-

Modified: python/trunk/Lib/encodings/iso8859_9.py
==============================================================================
--- python/trunk/Lib/encodings/iso8859_9.py	(original)
+++ python/trunk/Lib/encodings/iso8859_9.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
-    u'\xa0'	#  0xA0 -> NO-BREAK SPACE
-    u'\xa1'	#  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa4'	#  0xA4 -> CURRENCY SIGN
-    u'\xa5'	#  0xA5 -> YEN SIGN
-    u'\xa6'	#  0xA6 -> BROKEN BAR
-    u'\xa7'	#  0xA7 -> SECTION SIGN
-    u'\xa8'	#  0xA8 -> DIAERESIS
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'	#  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'	#  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'	#  0xAC -> NOT SIGN
-    u'\xad'	#  0xAD -> SOFT HYPHEN
-    u'\xae'	#  0xAE -> REGISTERED SIGN
-    u'\xaf'	#  0xAF -> MACRON
-    u'\xb0'	#  0xB0 -> DEGREE SIGN
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'	#  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'	#  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'	#  0xB4 -> ACUTE ACCENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\xb6'	#  0xB6 -> PILCROW SIGN
-    u'\xb7'	#  0xB7 -> MIDDLE DOT
-    u'\xb8'	#  0xB8 -> CEDILLA
-    u'\xb9'	#  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'	#  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'	#  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'	#  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'	#  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'	#  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'	#  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'	#  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'	#  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'	#  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'	#  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'	#  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'	#  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'	#  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'	#  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'	#  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'	#  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'	#  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'	#  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'	#  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u011e'	#  0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\xd1'	#  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'	#  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'	#  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'	#  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'	#  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'	#  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'	#  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'	#  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'	#  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'	#  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0130'	#  0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u015e'	#  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\xdf'	#  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'	#  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'	#  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'	#  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'	#  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'	#  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'	#  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'	#  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'	#  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'	#  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'	#  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'	#  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'	#  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'	#  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'	#  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u011f'	#  0xF0 -> LATIN SMALL LETTER G WITH BREVE
-    u'\xf1'	#  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'	#  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'	#  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'	#  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'	#  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'	#  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0xF7 -> DIVISION SIGN
-    u'\xf8'	#  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'	#  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'	#  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'	#  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0131'	#  0xFD -> LATIN SMALL LETTER DOTLESS I
-    u'\u015f'	#  0xFE -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xff'	#  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
+    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
+    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa4'     #  0xA4 -> CURRENCY SIGN
+    u'\xa5'     #  0xA5 -> YEN SIGN
+    u'\xa6'     #  0xA6 -> BROKEN BAR
+    u'\xa7'     #  0xA7 -> SECTION SIGN
+    u'\xa8'     #  0xA8 -> DIAERESIS
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
+    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xac'     #  0xAC -> NOT SIGN
+    u'\xad'     #  0xAD -> SOFT HYPHEN
+    u'\xae'     #  0xAE -> REGISTERED SIGN
+    u'\xaf'     #  0xAF -> MACRON
+    u'\xb0'     #  0xB0 -> DEGREE SIGN
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
+    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
+    u'\xb4'     #  0xB4 -> ACUTE ACCENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\xb6'     #  0xB6 -> PILCROW SIGN
+    u'\xb7'     #  0xB7 -> MIDDLE DOT
+    u'\xb8'     #  0xB8 -> CEDILLA
+    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
+    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
+    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
+    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
+    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
+    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
+    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
+    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\u011e'   #  0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
+    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0130'   #  0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'\u015e'   #  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
+    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
+    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u011f'   #  0xF0 -> LATIN SMALL LETTER G WITH BREVE
+    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
+    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0xF7 -> DIVISION SIGN
+    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
+    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u0131'   #  0xFD -> LATIN SMALL LETTER DOTLESS I
+    u'\u015f'   #  0xFE -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x00A0: 0xA0,	#  NO-BREAK SPACE
-    0x00A1: 0xA1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A4: 0xA4,	#  CURRENCY SIGN
-    0x00A5: 0xA5,	#  YEN SIGN
-    0x00A6: 0xA6,	#  BROKEN BAR
-    0x00A7: 0xA7,	#  SECTION SIGN
-    0x00A8: 0xA8,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xAA,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xAB,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xAC,	#  NOT SIGN
-    0x00AD: 0xAD,	#  SOFT HYPHEN
-    0x00AE: 0xAE,	#  REGISTERED SIGN
-    0x00AF: 0xAF,	#  MACRON
-    0x00B0: 0xB0,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0xB2,	#  SUPERSCRIPT TWO
-    0x00B3: 0xB3,	#  SUPERSCRIPT THREE
-    0x00B4: 0xB4,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xB6,	#  PILCROW SIGN
-    0x00B7: 0xB7,	#  MIDDLE DOT
-    0x00B8: 0xB8,	#  CEDILLA
-    0x00B9: 0xB9,	#  SUPERSCRIPT ONE
-    0x00BA: 0xBA,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xBB,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BC: 0xBC,	#  VULGAR FRACTION ONE QUARTER
-    0x00BD: 0xBD,	#  VULGAR FRACTION ONE HALF
-    0x00BE: 0xBE,	#  VULGAR FRACTION THREE QUARTERS
-    0x00BF: 0xBF,	#  INVERTED QUESTION MARK
-    0x00C0: 0xC0,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xC1,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xC2,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xC3,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0xC4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0xC5,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xC6,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0xC7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xC8,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0xC9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xCA,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xCB,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xCC,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xCD,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xCE,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xCF,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0xD1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xD2,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xD3,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xD4,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xD5,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0xD6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D7: 0xD7,	#  MULTIPLICATION SIGN
-    0x00D8: 0xD8,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xD9,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xDA,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xDB,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0xDC,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xDF,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0xE0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0xE1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0xE2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0xE3,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0xE4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0xE5,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xE6,	#  LATIN SMALL LETTER AE
-    0x00E7: 0xE7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0xE8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0xE9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0xEA,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0xEB,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0xEC,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0xED,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0xEE,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0xEF,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0xF1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0xF2,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0xF3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0xF4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0xF5,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0xF6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xF7,	#  DIVISION SIGN
-    0x00F8: 0xF8,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0xF9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0xFA,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0xFB,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0xFC,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FF: 0xFF,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011E: 0xD0,	#  LATIN CAPITAL LETTER G WITH BREVE
-    0x011F: 0xF0,	#  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0xDD,	#  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0xFD,	#  LATIN SMALL LETTER DOTLESS I
-    0x015E: 0xDE,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015F: 0xFE,	#  LATIN SMALL LETTER S WITH CEDILLA
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x00A0: 0xA0,       #  NO-BREAK SPACE
+    0x00A1: 0xA1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A4: 0xA4,       #  CURRENCY SIGN
+    0x00A5: 0xA5,       #  YEN SIGN
+    0x00A6: 0xA6,       #  BROKEN BAR
+    0x00A7: 0xA7,       #  SECTION SIGN
+    0x00A8: 0xA8,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xAA,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xAB,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xAC,       #  NOT SIGN
+    0x00AD: 0xAD,       #  SOFT HYPHEN
+    0x00AE: 0xAE,       #  REGISTERED SIGN
+    0x00AF: 0xAF,       #  MACRON
+    0x00B0: 0xB0,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0xB2,       #  SUPERSCRIPT TWO
+    0x00B3: 0xB3,       #  SUPERSCRIPT THREE
+    0x00B4: 0xB4,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xB6,       #  PILCROW SIGN
+    0x00B7: 0xB7,       #  MIDDLE DOT
+    0x00B8: 0xB8,       #  CEDILLA
+    0x00B9: 0xB9,       #  SUPERSCRIPT ONE
+    0x00BA: 0xBA,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xBB,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BC: 0xBC,       #  VULGAR FRACTION ONE QUARTER
+    0x00BD: 0xBD,       #  VULGAR FRACTION ONE HALF
+    0x00BE: 0xBE,       #  VULGAR FRACTION THREE QUARTERS
+    0x00BF: 0xBF,       #  INVERTED QUESTION MARK
+    0x00C0: 0xC0,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xC1,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xC2,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xC3,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0xC4,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0xC5,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xC6,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0xC7,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xC8,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0xC9,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xCA,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xCB,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xCC,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xCD,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xCE,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xCF,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0xD1,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xD2,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xD3,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xD4,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xD5,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0xD6,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D7: 0xD7,       #  MULTIPLICATION SIGN
+    0x00D8: 0xD8,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xD9,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xDA,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xDB,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0xDC,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xDF,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0xE0,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0xE1,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0xE2,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0xE3,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0xE4,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0xE5,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xE6,       #  LATIN SMALL LETTER AE
+    0x00E7: 0xE7,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0xE8,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0xE9,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0xEA,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0xEB,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0xEC,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0xED,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0xEE,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0xEF,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0xF1,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0xF2,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0xF3,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0xF4,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0xF5,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0xF6,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xF7,       #  DIVISION SIGN
+    0x00F8: 0xF8,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0xF9,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0xFA,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0xFB,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0xFC,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xFF,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x011E: 0xD0,       #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xF0,       #  LATIN SMALL LETTER G WITH BREVE
+    0x0130: 0xDD,       #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0xFD,       #  LATIN SMALL LETTER DOTLESS I
+    0x015E: 0xDE,       #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xFE,       #  LATIN SMALL LETTER S WITH CEDILLA
 }
-

Modified: python/trunk/Lib/encodings/koi8_r.py
==============================================================================
--- python/trunk/Lib/encodings/koi8_r.py	(original)
+++ python/trunk/Lib/encodings/koi8_r.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u2500'	#  0x80 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u2502'	#  0x81 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u250c'	#  0x82 -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2510'	#  0x83 -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x84 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2518'	#  0x85 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u251c'	#  0x86 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2524'	#  0x87 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u252c'	#  0x88 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u2534'	#  0x89 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u253c'	#  0x8A -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u2580'	#  0x8B -> UPPER HALF BLOCK
-    u'\u2584'	#  0x8C -> LOWER HALF BLOCK
-    u'\u2588'	#  0x8D -> FULL BLOCK
-    u'\u258c'	#  0x8E -> LEFT HALF BLOCK
-    u'\u2590'	#  0x8F -> RIGHT HALF BLOCK
-    u'\u2591'	#  0x90 -> LIGHT SHADE
-    u'\u2592'	#  0x91 -> MEDIUM SHADE
-    u'\u2593'	#  0x92 -> DARK SHADE
-    u'\u2320'	#  0x93 -> TOP HALF INTEGRAL
-    u'\u25a0'	#  0x94 -> BLACK SQUARE
-    u'\u2219'	#  0x95 -> BULLET OPERATOR
-    u'\u221a'	#  0x96 -> SQUARE ROOT
-    u'\u2248'	#  0x97 -> ALMOST EQUAL TO
-    u'\u2264'	#  0x98 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0x99 -> GREATER-THAN OR EQUAL TO
-    u'\xa0'	#  0x9A -> NO-BREAK SPACE
-    u'\u2321'	#  0x9B -> BOTTOM HALF INTEGRAL
-    u'\xb0'	#  0x9C -> DEGREE SIGN
-    u'\xb2'	#  0x9D -> SUPERSCRIPT TWO
-    u'\xb7'	#  0x9E -> MIDDLE DOT
-    u'\xf7'	#  0x9F -> DIVISION SIGN
-    u'\u2550'	#  0xA0 -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u2551'	#  0xA1 -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2552'	#  0xA2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u0451'	#  0xA3 -> CYRILLIC SMALL LETTER IO
-    u'\u2553'	#  0xA4 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u2554'	#  0xA5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2555'	#  0xA6 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2556'	#  0xA7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2557'	#  0xA8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u2558'	#  0xA9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2559'	#  0xAA -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0xAB -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u255b'	#  0xAC -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u255c'	#  0xAD -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255d'	#  0xAE -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255e'	#  0xAF -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0xB0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u2560'	#  0xB1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2561'	#  0xB2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u0401'	#  0xB3 -> CYRILLIC CAPITAL LETTER IO
-    u'\u2562'	#  0xB4 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2563'	#  0xB5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2564'	#  0xB6 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'	#  0xB7 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2566'	#  0xB8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2567'	#  0xB9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0xBA -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2569'	#  0xBB -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u256a'	#  0xBC -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u256b'	#  0xBD -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256c'	#  0xBE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa9'	#  0xBF -> COPYRIGHT SIGN
-    u'\u044e'	#  0xC0 -> CYRILLIC SMALL LETTER YU
-    u'\u0430'	#  0xC1 -> CYRILLIC SMALL LETTER A
-    u'\u0431'	#  0xC2 -> CYRILLIC SMALL LETTER BE
-    u'\u0446'	#  0xC3 -> CYRILLIC SMALL LETTER TSE
-    u'\u0434'	#  0xC4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'	#  0xC5 -> CYRILLIC SMALL LETTER IE
-    u'\u0444'	#  0xC6 -> CYRILLIC SMALL LETTER EF
-    u'\u0433'	#  0xC7 -> CYRILLIC SMALL LETTER GHE
-    u'\u0445'	#  0xC8 -> CYRILLIC SMALL LETTER HA
-    u'\u0438'	#  0xC9 -> CYRILLIC SMALL LETTER I
-    u'\u0439'	#  0xCA -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'	#  0xCB -> CYRILLIC SMALL LETTER KA
-    u'\u043b'	#  0xCC -> CYRILLIC SMALL LETTER EL
-    u'\u043c'	#  0xCD -> CYRILLIC SMALL LETTER EM
-    u'\u043d'	#  0xCE -> CYRILLIC SMALL LETTER EN
-    u'\u043e'	#  0xCF -> CYRILLIC SMALL LETTER O
-    u'\u043f'	#  0xD0 -> CYRILLIC SMALL LETTER PE
-    u'\u044f'	#  0xD1 -> CYRILLIC SMALL LETTER YA
-    u'\u0440'	#  0xD2 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'	#  0xD3 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'	#  0xD4 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'	#  0xD5 -> CYRILLIC SMALL LETTER U
-    u'\u0436'	#  0xD6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0432'	#  0xD7 -> CYRILLIC SMALL LETTER VE
-    u'\u044c'	#  0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044b'	#  0xD9 -> CYRILLIC SMALL LETTER YERU
-    u'\u0437'	#  0xDA -> CYRILLIC SMALL LETTER ZE
-    u'\u0448'	#  0xDB -> CYRILLIC SMALL LETTER SHA
-    u'\u044d'	#  0xDC -> CYRILLIC SMALL LETTER E
-    u'\u0449'	#  0xDD -> CYRILLIC SMALL LETTER SHCHA
-    u'\u0447'	#  0xDE -> CYRILLIC SMALL LETTER CHE
-    u'\u044a'	#  0xDF -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u042e'	#  0xE0 -> CYRILLIC CAPITAL LETTER YU
-    u'\u0410'	#  0xE1 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'	#  0xE2 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0426'	#  0xE3 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0414'	#  0xE4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'	#  0xE5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0424'	#  0xE6 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0413'	#  0xE7 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0425'	#  0xE8 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0418'	#  0xE9 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'	#  0xEA -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'	#  0xEB -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'	#  0xEC -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'	#  0xED -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'	#  0xEE -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'	#  0xEF -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'	#  0xF0 -> CYRILLIC CAPITAL LETTER PE
-    u'\u042f'	#  0xF1 -> CYRILLIC CAPITAL LETTER YA
-    u'\u0420'	#  0xF2 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'	#  0xF3 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'	#  0xF4 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'	#  0xF5 -> CYRILLIC CAPITAL LETTER U
-    u'\u0416'	#  0xF6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0412'	#  0xF7 -> CYRILLIC CAPITAL LETTER VE
-    u'\u042c'	#  0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042b'	#  0xF9 -> CYRILLIC CAPITAL LETTER YERU
-    u'\u0417'	#  0xFA -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0428'	#  0xFB -> CYRILLIC CAPITAL LETTER SHA
-    u'\u042d'	#  0xFC -> CYRILLIC CAPITAL LETTER E
-    u'\u0429'	#  0xFD -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u0427'	#  0xFE -> CYRILLIC CAPITAL LETTER CHE
-    u'\u042a'	#  0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u2500'   #  0x80 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u2502'   #  0x81 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u250c'   #  0x82 -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2510'   #  0x83 -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x84 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2518'   #  0x85 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u251c'   #  0x86 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2524'   #  0x87 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u252c'   #  0x88 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u2534'   #  0x89 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u253c'   #  0x8A -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u2580'   #  0x8B -> UPPER HALF BLOCK
+    u'\u2584'   #  0x8C -> LOWER HALF BLOCK
+    u'\u2588'   #  0x8D -> FULL BLOCK
+    u'\u258c'   #  0x8E -> LEFT HALF BLOCK
+    u'\u2590'   #  0x8F -> RIGHT HALF BLOCK
+    u'\u2591'   #  0x90 -> LIGHT SHADE
+    u'\u2592'   #  0x91 -> MEDIUM SHADE
+    u'\u2593'   #  0x92 -> DARK SHADE
+    u'\u2320'   #  0x93 -> TOP HALF INTEGRAL
+    u'\u25a0'   #  0x94 -> BLACK SQUARE
+    u'\u2219'   #  0x95 -> BULLET OPERATOR
+    u'\u221a'   #  0x96 -> SQUARE ROOT
+    u'\u2248'   #  0x97 -> ALMOST EQUAL TO
+    u'\u2264'   #  0x98 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0x99 -> GREATER-THAN OR EQUAL TO
+    u'\xa0'     #  0x9A -> NO-BREAK SPACE
+    u'\u2321'   #  0x9B -> BOTTOM HALF INTEGRAL
+    u'\xb0'     #  0x9C -> DEGREE SIGN
+    u'\xb2'     #  0x9D -> SUPERSCRIPT TWO
+    u'\xb7'     #  0x9E -> MIDDLE DOT
+    u'\xf7'     #  0x9F -> DIVISION SIGN
+    u'\u2550'   #  0xA0 -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u2551'   #  0xA1 -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2552'   #  0xA2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u0451'   #  0xA3 -> CYRILLIC SMALL LETTER IO
+    u'\u2553'   #  0xA4 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    u'\u2554'   #  0xA5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u2555'   #  0xA6 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    u'\u2556'   #  0xA7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    u'\u2557'   #  0xA8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u2558'   #  0xA9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2559'   #  0xAA -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0xAB -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u255b'   #  0xAC -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u255c'   #  0xAD -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    u'\u255d'   #  0xAE -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255e'   #  0xAF -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0xB0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u2560'   #  0xB1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2561'   #  0xB2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u0401'   #  0xB3 -> CYRILLIC CAPITAL LETTER IO
+    u'\u2562'   #  0xB4 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    u'\u2563'   #  0xB5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u2564'   #  0xB6 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    u'\u2565'   #  0xB7 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    u'\u2566'   #  0xB8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2567'   #  0xB9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0xBA -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2569'   #  0xBB -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u256a'   #  0xBC -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u256b'   #  0xBD -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    u'\u256c'   #  0xBE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa9'     #  0xBF -> COPYRIGHT SIGN
+    u'\u044e'   #  0xC0 -> CYRILLIC SMALL LETTER YU
+    u'\u0430'   #  0xC1 -> CYRILLIC SMALL LETTER A
+    u'\u0431'   #  0xC2 -> CYRILLIC SMALL LETTER BE
+    u'\u0446'   #  0xC3 -> CYRILLIC SMALL LETTER TSE
+    u'\u0434'   #  0xC4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'   #  0xC5 -> CYRILLIC SMALL LETTER IE
+    u'\u0444'   #  0xC6 -> CYRILLIC SMALL LETTER EF
+    u'\u0433'   #  0xC7 -> CYRILLIC SMALL LETTER GHE
+    u'\u0445'   #  0xC8 -> CYRILLIC SMALL LETTER HA
+    u'\u0438'   #  0xC9 -> CYRILLIC SMALL LETTER I
+    u'\u0439'   #  0xCA -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'   #  0xCB -> CYRILLIC SMALL LETTER KA
+    u'\u043b'   #  0xCC -> CYRILLIC SMALL LETTER EL
+    u'\u043c'   #  0xCD -> CYRILLIC SMALL LETTER EM
+    u'\u043d'   #  0xCE -> CYRILLIC SMALL LETTER EN
+    u'\u043e'   #  0xCF -> CYRILLIC SMALL LETTER O
+    u'\u043f'   #  0xD0 -> CYRILLIC SMALL LETTER PE
+    u'\u044f'   #  0xD1 -> CYRILLIC SMALL LETTER YA
+    u'\u0440'   #  0xD2 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'   #  0xD3 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'   #  0xD4 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'   #  0xD5 -> CYRILLIC SMALL LETTER U
+    u'\u0436'   #  0xD6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0432'   #  0xD7 -> CYRILLIC SMALL LETTER VE
+    u'\u044c'   #  0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044b'   #  0xD9 -> CYRILLIC SMALL LETTER YERU
+    u'\u0437'   #  0xDA -> CYRILLIC SMALL LETTER ZE
+    u'\u0448'   #  0xDB -> CYRILLIC SMALL LETTER SHA
+    u'\u044d'   #  0xDC -> CYRILLIC SMALL LETTER E
+    u'\u0449'   #  0xDD -> CYRILLIC SMALL LETTER SHCHA
+    u'\u0447'   #  0xDE -> CYRILLIC SMALL LETTER CHE
+    u'\u044a'   #  0xDF -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u042e'   #  0xE0 -> CYRILLIC CAPITAL LETTER YU
+    u'\u0410'   #  0xE1 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'   #  0xE2 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0426'   #  0xE3 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0414'   #  0xE4 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'   #  0xE5 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0424'   #  0xE6 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0413'   #  0xE7 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0425'   #  0xE8 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0418'   #  0xE9 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'   #  0xEA -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'   #  0xEB -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'   #  0xEC -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'   #  0xED -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'   #  0xEE -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'   #  0xEF -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'   #  0xF0 -> CYRILLIC CAPITAL LETTER PE
+    u'\u042f'   #  0xF1 -> CYRILLIC CAPITAL LETTER YA
+    u'\u0420'   #  0xF2 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'   #  0xF3 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'   #  0xF4 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'   #  0xF5 -> CYRILLIC CAPITAL LETTER U
+    u'\u0416'   #  0xF6 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0412'   #  0xF7 -> CYRILLIC CAPITAL LETTER VE
+    u'\u042c'   #  0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042b'   #  0xF9 -> CYRILLIC CAPITAL LETTER YERU
+    u'\u0417'   #  0xFA -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0428'   #  0xFB -> CYRILLIC CAPITAL LETTER SHA
+    u'\u042d'   #  0xFC -> CYRILLIC CAPITAL LETTER E
+    u'\u0429'   #  0xFD -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u0427'   #  0xFE -> CYRILLIC CAPITAL LETTER CHE
+    u'\u042a'   #  0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0x9A,	#  NO-BREAK SPACE
-    0x00A9: 0xBF,	#  COPYRIGHT SIGN
-    0x00B0: 0x9C,	#  DEGREE SIGN
-    0x00B2: 0x9D,	#  SUPERSCRIPT TWO
-    0x00B7: 0x9E,	#  MIDDLE DOT
-    0x00F7: 0x9F,	#  DIVISION SIGN
-    0x0401: 0xB3,	#  CYRILLIC CAPITAL LETTER IO
-    0x0410: 0xE1,	#  CYRILLIC CAPITAL LETTER A
-    0x0411: 0xE2,	#  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0xF7,	#  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0xE7,	#  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0xE4,	#  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0xE5,	#  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0xF6,	#  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0xFA,	#  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0xE9,	#  CYRILLIC CAPITAL LETTER I
-    0x0419: 0xEA,	#  CYRILLIC CAPITAL LETTER SHORT I
-    0x041A: 0xEB,	#  CYRILLIC CAPITAL LETTER KA
-    0x041B: 0xEC,	#  CYRILLIC CAPITAL LETTER EL
-    0x041C: 0xED,	#  CYRILLIC CAPITAL LETTER EM
-    0x041D: 0xEE,	#  CYRILLIC CAPITAL LETTER EN
-    0x041E: 0xEF,	#  CYRILLIC CAPITAL LETTER O
-    0x041F: 0xF0,	#  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0xF2,	#  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0xF3,	#  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0xF4,	#  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0xF5,	#  CYRILLIC CAPITAL LETTER U
-    0x0424: 0xE6,	#  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0xE8,	#  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0xE3,	#  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0xFE,	#  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0xFB,	#  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0xFD,	#  CYRILLIC CAPITAL LETTER SHCHA
-    0x042A: 0xFF,	#  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042B: 0xF9,	#  CYRILLIC CAPITAL LETTER YERU
-    0x042C: 0xF8,	#  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042D: 0xFC,	#  CYRILLIC CAPITAL LETTER E
-    0x042E: 0xE0,	#  CYRILLIC CAPITAL LETTER YU
-    0x042F: 0xF1,	#  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xC1,	#  CYRILLIC SMALL LETTER A
-    0x0431: 0xC2,	#  CYRILLIC SMALL LETTER BE
-    0x0432: 0xD7,	#  CYRILLIC SMALL LETTER VE
-    0x0433: 0xC7,	#  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xC4,	#  CYRILLIC SMALL LETTER DE
-    0x0435: 0xC5,	#  CYRILLIC SMALL LETTER IE
-    0x0436: 0xD6,	#  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xDA,	#  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xC9,	#  CYRILLIC SMALL LETTER I
-    0x0439: 0xCA,	#  CYRILLIC SMALL LETTER SHORT I
-    0x043A: 0xCB,	#  CYRILLIC SMALL LETTER KA
-    0x043B: 0xCC,	#  CYRILLIC SMALL LETTER EL
-    0x043C: 0xCD,	#  CYRILLIC SMALL LETTER EM
-    0x043D: 0xCE,	#  CYRILLIC SMALL LETTER EN
-    0x043E: 0xCF,	#  CYRILLIC SMALL LETTER O
-    0x043F: 0xD0,	#  CYRILLIC SMALL LETTER PE
-    0x0440: 0xD2,	#  CYRILLIC SMALL LETTER ER
-    0x0441: 0xD3,	#  CYRILLIC SMALL LETTER ES
-    0x0442: 0xD4,	#  CYRILLIC SMALL LETTER TE
-    0x0443: 0xD5,	#  CYRILLIC SMALL LETTER U
-    0x0444: 0xC6,	#  CYRILLIC SMALL LETTER EF
-    0x0445: 0xC8,	#  CYRILLIC SMALL LETTER HA
-    0x0446: 0xC3,	#  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xDE,	#  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xDB,	#  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xDD,	#  CYRILLIC SMALL LETTER SHCHA
-    0x044A: 0xDF,	#  CYRILLIC SMALL LETTER HARD SIGN
-    0x044B: 0xD9,	#  CYRILLIC SMALL LETTER YERU
-    0x044C: 0xD8,	#  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044D: 0xDC,	#  CYRILLIC SMALL LETTER E
-    0x044E: 0xC0,	#  CYRILLIC SMALL LETTER YU
-    0x044F: 0xD1,	#  CYRILLIC SMALL LETTER YA
-    0x0451: 0xA3,	#  CYRILLIC SMALL LETTER IO
-    0x2219: 0x95,	#  BULLET OPERATOR
-    0x221A: 0x96,	#  SQUARE ROOT
-    0x2248: 0x97,	#  ALMOST EQUAL TO
-    0x2264: 0x98,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0x99,	#  GREATER-THAN OR EQUAL TO
-    0x2320: 0x93,	#  TOP HALF INTEGRAL
-    0x2321: 0x9B,	#  BOTTOM HALF INTEGRAL
-    0x2500: 0x80,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x81,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250C: 0x82,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x83,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x84,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x85,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251C: 0x86,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x87,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252C: 0x88,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x89,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253C: 0x8A,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0xA0,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0xA1,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0xA2,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0xA4,	#  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0xA5,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0xA6,	#  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0xA7,	#  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0xA8,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0xA9,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0xAA,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255A: 0xAB,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255B: 0xAC,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255C: 0xAD,	#  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255D: 0xAE,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255E: 0xAF,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255F: 0xB0,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0xB1,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0xB2,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0xB4,	#  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0xB5,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0xB6,	#  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0xB7,	#  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0xB8,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0xB9,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0xBA,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0xBB,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256A: 0xBC,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256B: 0xBD,	#  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256C: 0xBE,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x8B,	#  UPPER HALF BLOCK
-    0x2584: 0x8C,	#  LOWER HALF BLOCK
-    0x2588: 0x8D,	#  FULL BLOCK
-    0x258C: 0x8E,	#  LEFT HALF BLOCK
-    0x2590: 0x8F,	#  RIGHT HALF BLOCK
-    0x2591: 0x90,	#  LIGHT SHADE
-    0x2592: 0x91,	#  MEDIUM SHADE
-    0x2593: 0x92,	#  DARK SHADE
-    0x25A0: 0x94,	#  BLACK SQUARE
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0x9A,       #  NO-BREAK SPACE
+    0x00A9: 0xBF,       #  COPYRIGHT SIGN
+    0x00B0: 0x9C,       #  DEGREE SIGN
+    0x00B2: 0x9D,       #  SUPERSCRIPT TWO
+    0x00B7: 0x9E,       #  MIDDLE DOT
+    0x00F7: 0x9F,       #  DIVISION SIGN
+    0x0401: 0xB3,       #  CYRILLIC CAPITAL LETTER IO
+    0x0410: 0xE1,       #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0xE2,       #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0xF7,       #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0xE7,       #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0xE4,       #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0xE5,       #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0xF6,       #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0xFA,       #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0xE9,       #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0xEA,       #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041A: 0xEB,       #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0xEC,       #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0xED,       #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0xEE,       #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0xEF,       #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0xF0,       #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0xF2,       #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0xF3,       #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0xF4,       #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0xF5,       #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0xE6,       #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0xE8,       #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0xE3,       #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0xFE,       #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0xFB,       #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0xFD,       #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042A: 0xFF,       #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0xF9,       #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0xF8,       #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0xFC,       #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0xE0,       #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0xF1,       #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xC1,       #  CYRILLIC SMALL LETTER A
+    0x0431: 0xC2,       #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xD7,       #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xC7,       #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xC4,       #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xC5,       #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xD6,       #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xDA,       #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xC9,       #  CYRILLIC SMALL LETTER I
+    0x0439: 0xCA,       #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xCB,       #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xCC,       #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xCD,       #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xCE,       #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xCF,       #  CYRILLIC SMALL LETTER O
+    0x043F: 0xD0,       #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xD2,       #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xD3,       #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xD4,       #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xD5,       #  CYRILLIC SMALL LETTER U
+    0x0444: 0xC6,       #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xC8,       #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xC3,       #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xDE,       #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xDB,       #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xDD,       #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xDF,       #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xD9,       #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xD8,       #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xDC,       #  CYRILLIC SMALL LETTER E
+    0x044E: 0xC0,       #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xD1,       #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xA3,       #  CYRILLIC SMALL LETTER IO
+    0x2219: 0x95,       #  BULLET OPERATOR
+    0x221A: 0x96,       #  SQUARE ROOT
+    0x2248: 0x97,       #  ALMOST EQUAL TO
+    0x2264: 0x98,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0x99,       #  GREATER-THAN OR EQUAL TO
+    0x2320: 0x93,       #  TOP HALF INTEGRAL
+    0x2321: 0x9B,       #  BOTTOM HALF INTEGRAL
+    0x2500: 0x80,       #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x81,       #  BOX DRAWINGS LIGHT VERTICAL
+    0x250C: 0x82,       #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x83,       #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x84,       #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x85,       #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251C: 0x86,       #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x87,       #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252C: 0x88,       #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x89,       #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253C: 0x8A,       #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0xA0,       #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0xA1,       #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0xA2,       #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2553: 0xA4,       #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+    0x2554: 0xA5,       #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2555: 0xA6,       #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+    0x2556: 0xA7,       #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+    0x2557: 0xA8,       #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0xA9,       #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0xAA,       #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255A: 0xAB,       #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255B: 0xAC,       #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255C: 0xAD,       #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+    0x255D: 0xAE,       #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255E: 0xAF,       #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255F: 0xB0,       #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0xB1,       #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0xB2,       #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2562: 0xB4,       #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+    0x2563: 0xB5,       #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2564: 0xB6,       #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+    0x2565: 0xB7,       #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+    0x2566: 0xB8,       #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0xB9,       #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0xBA,       #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0xBB,       #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256A: 0xBC,       #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256B: 0xBD,       #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+    0x256C: 0xBE,       #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x8B,       #  UPPER HALF BLOCK
+    0x2584: 0x8C,       #  LOWER HALF BLOCK
+    0x2588: 0x8D,       #  FULL BLOCK
+    0x258C: 0x8E,       #  LEFT HALF BLOCK
+    0x2590: 0x8F,       #  RIGHT HALF BLOCK
+    0x2591: 0x90,       #  LIGHT SHADE
+    0x2592: 0x91,       #  MEDIUM SHADE
+    0x2593: 0x92,       #  DARK SHADE
+    0x25A0: 0x94,       #  BLACK SQUARE
 }
-

Modified: python/trunk/Lib/encodings/koi8_u.py
==============================================================================
--- python/trunk/Lib/encodings/koi8_u.py	(original)
+++ python/trunk/Lib/encodings/koi8_u.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\u2500'	#  0x80 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u2502'	#  0x81 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u250c'	#  0x82 -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2510'	#  0x83 -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'	#  0x84 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2518'	#  0x85 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u251c'	#  0x86 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2524'	#  0x87 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u252c'	#  0x88 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u2534'	#  0x89 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u253c'	#  0x8A -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u2580'	#  0x8B -> UPPER HALF BLOCK
-    u'\u2584'	#  0x8C -> LOWER HALF BLOCK
-    u'\u2588'	#  0x8D -> FULL BLOCK
-    u'\u258c'	#  0x8E -> LEFT HALF BLOCK
-    u'\u2590'	#  0x8F -> RIGHT HALF BLOCK
-    u'\u2591'	#  0x90 -> LIGHT SHADE
-    u'\u2592'	#  0x91 -> MEDIUM SHADE
-    u'\u2593'	#  0x92 -> DARK SHADE
-    u'\u2320'	#  0x93 -> TOP HALF INTEGRAL
-    u'\u25a0'	#  0x94 -> BLACK SQUARE
-    u'\u2219'	#  0x95 -> BULLET OPERATOR
-    u'\u221a'	#  0x96 -> SQUARE ROOT
-    u'\u2248'	#  0x97 -> ALMOST EQUAL TO
-    u'\u2264'	#  0x98 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0x99 -> GREATER-THAN OR EQUAL TO
-    u'\xa0'	#  0x9A -> NO-BREAK SPACE
-    u'\u2321'	#  0x9B -> BOTTOM HALF INTEGRAL
-    u'\xb0'	#  0x9C -> DEGREE SIGN
-    u'\xb2'	#  0x9D -> SUPERSCRIPT TWO
-    u'\xb7'	#  0x9E -> MIDDLE DOT
-    u'\xf7'	#  0x9F -> DIVISION SIGN
-    u'\u2550'	#  0xA0 -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u2551'	#  0xA1 -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2552'	#  0xA2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u0451'	#  0xA3 -> CYRILLIC SMALL LETTER IO
-    u'\u0454'	#  0xA4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u2554'	#  0xA5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u0456'	#  0xA6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0457'	#  0xA7 -> CYRILLIC SMALL LETTER YI (UKRAINIAN)
-    u'\u2557'	#  0xA8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u2558'	#  0xA9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2559'	#  0xAA -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u255a'	#  0xAB -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u255b'	#  0xAC -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u0491'	#  0xAD -> CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
-    u'\u255d'	#  0xAE -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255e'	#  0xAF -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'	#  0xB0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u2560'	#  0xB1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2561'	#  0xB2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u0401'	#  0xB3 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0404'	#  0xB4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u2563'	#  0xB5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u0406'	#  0xB6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0407'	#  0xB7 -> CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
-    u'\u2566'	#  0xB8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2567'	#  0xB9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'	#  0xBA -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2569'	#  0xBB -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u256a'	#  0xBC -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u0490'	#  0xBD -> CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
-    u'\u256c'	#  0xBE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa9'	#  0xBF -> COPYRIGHT SIGN
-    u'\u044e'	#  0xC0 -> CYRILLIC SMALL LETTER YU
-    u'\u0430'	#  0xC1 -> CYRILLIC SMALL LETTER A
-    u'\u0431'	#  0xC2 -> CYRILLIC SMALL LETTER BE
-    u'\u0446'	#  0xC3 -> CYRILLIC SMALL LETTER TSE
-    u'\u0434'	#  0xC4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'	#  0xC5 -> CYRILLIC SMALL LETTER IE
-    u'\u0444'	#  0xC6 -> CYRILLIC SMALL LETTER EF
-    u'\u0433'	#  0xC7 -> CYRILLIC SMALL LETTER GHE
-    u'\u0445'	#  0xC8 -> CYRILLIC SMALL LETTER HA
-    u'\u0438'	#  0xC9 -> CYRILLIC SMALL LETTER I
-    u'\u0439'	#  0xCA -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'	#  0xCB -> CYRILLIC SMALL LETTER KA
-    u'\u043b'	#  0xCC -> CYRILLIC SMALL LETTER EL
-    u'\u043c'	#  0xCD -> CYRILLIC SMALL LETTER EM
-    u'\u043d'	#  0xCE -> CYRILLIC SMALL LETTER EN
-    u'\u043e'	#  0xCF -> CYRILLIC SMALL LETTER O
-    u'\u043f'	#  0xD0 -> CYRILLIC SMALL LETTER PE
-    u'\u044f'	#  0xD1 -> CYRILLIC SMALL LETTER YA
-    u'\u0440'	#  0xD2 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'	#  0xD3 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'	#  0xD4 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'	#  0xD5 -> CYRILLIC SMALL LETTER U
-    u'\u0436'	#  0xD6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0432'	#  0xD7 -> CYRILLIC SMALL LETTER VE
-    u'\u044c'	#  0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044b'	#  0xD9 -> CYRILLIC SMALL LETTER YERU
-    u'\u0437'	#  0xDA -> CYRILLIC SMALL LETTER ZE
-    u'\u0448'	#  0xDB -> CYRILLIC SMALL LETTER SHA
-    u'\u044d'	#  0xDC -> CYRILLIC SMALL LETTER E
-    u'\u0449'	#  0xDD -> CYRILLIC SMALL LETTER SHCHA
-    u'\u0447'	#  0xDE -> CYRILLIC SMALL LETTER CHE
-    u'\u044a'	#  0xDF -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u042e'	#  0xE0 -> CYRILLIC CAPITAL LETTER YU
-    u'\u0410'	#  0xE1 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'	#  0xE2 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0426'	#  0xE3 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0414'	#  0xE4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'	#  0xE5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0424'	#  0xE6 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0413'	#  0xE7 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0425'	#  0xE8 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0418'	#  0xE9 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'	#  0xEA -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'	#  0xEB -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'	#  0xEC -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'	#  0xED -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'	#  0xEE -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'	#  0xEF -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'	#  0xF0 -> CYRILLIC CAPITAL LETTER PE
-    u'\u042f'	#  0xF1 -> CYRILLIC CAPITAL LETTER YA
-    u'\u0420'	#  0xF2 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'	#  0xF3 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'	#  0xF4 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'	#  0xF5 -> CYRILLIC CAPITAL LETTER U
-    u'\u0416'	#  0xF6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0412'	#  0xF7 -> CYRILLIC CAPITAL LETTER VE
-    u'\u042c'	#  0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042b'	#  0xF9 -> CYRILLIC CAPITAL LETTER YERU
-    u'\u0417'	#  0xFA -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0428'	#  0xFB -> CYRILLIC CAPITAL LETTER SHA
-    u'\u042d'	#  0xFC -> CYRILLIC CAPITAL LETTER E
-    u'\u0429'	#  0xFD -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u0427'	#  0xFE -> CYRILLIC CAPITAL LETTER CHE
-    u'\u042a'	#  0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\u2500'   #  0x80 -> BOX DRAWINGS LIGHT HORIZONTAL
+    u'\u2502'   #  0x81 -> BOX DRAWINGS LIGHT VERTICAL
+    u'\u250c'   #  0x82 -> BOX DRAWINGS LIGHT DOWN AND RIGHT
+    u'\u2510'   #  0x83 -> BOX DRAWINGS LIGHT DOWN AND LEFT
+    u'\u2514'   #  0x84 -> BOX DRAWINGS LIGHT UP AND RIGHT
+    u'\u2518'   #  0x85 -> BOX DRAWINGS LIGHT UP AND LEFT
+    u'\u251c'   #  0x86 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    u'\u2524'   #  0x87 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    u'\u252c'   #  0x88 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    u'\u2534'   #  0x89 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    u'\u253c'   #  0x8A -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    u'\u2580'   #  0x8B -> UPPER HALF BLOCK
+    u'\u2584'   #  0x8C -> LOWER HALF BLOCK
+    u'\u2588'   #  0x8D -> FULL BLOCK
+    u'\u258c'   #  0x8E -> LEFT HALF BLOCK
+    u'\u2590'   #  0x8F -> RIGHT HALF BLOCK
+    u'\u2591'   #  0x90 -> LIGHT SHADE
+    u'\u2592'   #  0x91 -> MEDIUM SHADE
+    u'\u2593'   #  0x92 -> DARK SHADE
+    u'\u2320'   #  0x93 -> TOP HALF INTEGRAL
+    u'\u25a0'   #  0x94 -> BLACK SQUARE
+    u'\u2219'   #  0x95 -> BULLET OPERATOR
+    u'\u221a'   #  0x96 -> SQUARE ROOT
+    u'\u2248'   #  0x97 -> ALMOST EQUAL TO
+    u'\u2264'   #  0x98 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0x99 -> GREATER-THAN OR EQUAL TO
+    u'\xa0'     #  0x9A -> NO-BREAK SPACE
+    u'\u2321'   #  0x9B -> BOTTOM HALF INTEGRAL
+    u'\xb0'     #  0x9C -> DEGREE SIGN
+    u'\xb2'     #  0x9D -> SUPERSCRIPT TWO
+    u'\xb7'     #  0x9E -> MIDDLE DOT
+    u'\xf7'     #  0x9F -> DIVISION SIGN
+    u'\u2550'   #  0xA0 -> BOX DRAWINGS DOUBLE HORIZONTAL
+    u'\u2551'   #  0xA1 -> BOX DRAWINGS DOUBLE VERTICAL
+    u'\u2552'   #  0xA2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    u'\u0451'   #  0xA3 -> CYRILLIC SMALL LETTER IO
+    u'\u0454'   #  0xA4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\u2554'   #  0xA5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    u'\u0456'   #  0xA6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0457'   #  0xA7 -> CYRILLIC SMALL LETTER YI (UKRAINIAN)
+    u'\u2557'   #  0xA8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
+    u'\u2558'   #  0xA9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    u'\u2559'   #  0xAA -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    u'\u255a'   #  0xAB -> BOX DRAWINGS DOUBLE UP AND RIGHT
+    u'\u255b'   #  0xAC -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    u'\u0491'   #  0xAD -> CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
+    u'\u255d'   #  0xAE -> BOX DRAWINGS DOUBLE UP AND LEFT
+    u'\u255e'   #  0xAF -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    u'\u255f'   #  0xB0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    u'\u2560'   #  0xB1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    u'\u2561'   #  0xB2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    u'\u0401'   #  0xB3 -> CYRILLIC CAPITAL LETTER IO
+    u'\u0404'   #  0xB4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\u2563'   #  0xB5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    u'\u0406'   #  0xB6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\u0407'   #  0xB7 -> CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
+    u'\u2566'   #  0xB8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    u'\u2567'   #  0xB9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    u'\u2568'   #  0xBA -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    u'\u2569'   #  0xBB -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    u'\u256a'   #  0xBC -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    u'\u0490'   #  0xBD -> CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
+    u'\u256c'   #  0xBE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    u'\xa9'     #  0xBF -> COPYRIGHT SIGN
+    u'\u044e'   #  0xC0 -> CYRILLIC SMALL LETTER YU
+    u'\u0430'   #  0xC1 -> CYRILLIC SMALL LETTER A
+    u'\u0431'   #  0xC2 -> CYRILLIC SMALL LETTER BE
+    u'\u0446'   #  0xC3 -> CYRILLIC SMALL LETTER TSE
+    u'\u0434'   #  0xC4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'   #  0xC5 -> CYRILLIC SMALL LETTER IE
+    u'\u0444'   #  0xC6 -> CYRILLIC SMALL LETTER EF
+    u'\u0433'   #  0xC7 -> CYRILLIC SMALL LETTER GHE
+    u'\u0445'   #  0xC8 -> CYRILLIC SMALL LETTER HA
+    u'\u0438'   #  0xC9 -> CYRILLIC SMALL LETTER I
+    u'\u0439'   #  0xCA -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'   #  0xCB -> CYRILLIC SMALL LETTER KA
+    u'\u043b'   #  0xCC -> CYRILLIC SMALL LETTER EL
+    u'\u043c'   #  0xCD -> CYRILLIC SMALL LETTER EM
+    u'\u043d'   #  0xCE -> CYRILLIC SMALL LETTER EN
+    u'\u043e'   #  0xCF -> CYRILLIC SMALL LETTER O
+    u'\u043f'   #  0xD0 -> CYRILLIC SMALL LETTER PE
+    u'\u044f'   #  0xD1 -> CYRILLIC SMALL LETTER YA
+    u'\u0440'   #  0xD2 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'   #  0xD3 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'   #  0xD4 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'   #  0xD5 -> CYRILLIC SMALL LETTER U
+    u'\u0436'   #  0xD6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0432'   #  0xD7 -> CYRILLIC SMALL LETTER VE
+    u'\u044c'   #  0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044b'   #  0xD9 -> CYRILLIC SMALL LETTER YERU
+    u'\u0437'   #  0xDA -> CYRILLIC SMALL LETTER ZE
+    u'\u0448'   #  0xDB -> CYRILLIC SMALL LETTER SHA
+    u'\u044d'   #  0xDC -> CYRILLIC SMALL LETTER E
+    u'\u0449'   #  0xDD -> CYRILLIC SMALL LETTER SHCHA
+    u'\u0447'   #  0xDE -> CYRILLIC SMALL LETTER CHE
+    u'\u044a'   #  0xDF -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u042e'   #  0xE0 -> CYRILLIC CAPITAL LETTER YU
+    u'\u0410'   #  0xE1 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'   #  0xE2 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0426'   #  0xE3 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0414'   #  0xE4 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'   #  0xE5 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0424'   #  0xE6 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0413'   #  0xE7 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0425'   #  0xE8 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0418'   #  0xE9 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'   #  0xEA -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'   #  0xEB -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'   #  0xEC -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'   #  0xED -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'   #  0xEE -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'   #  0xEF -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'   #  0xF0 -> CYRILLIC CAPITAL LETTER PE
+    u'\u042f'   #  0xF1 -> CYRILLIC CAPITAL LETTER YA
+    u'\u0420'   #  0xF2 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'   #  0xF3 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'   #  0xF4 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'   #  0xF5 -> CYRILLIC CAPITAL LETTER U
+    u'\u0416'   #  0xF6 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0412'   #  0xF7 -> CYRILLIC CAPITAL LETTER VE
+    u'\u042c'   #  0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042b'   #  0xF9 -> CYRILLIC CAPITAL LETTER YERU
+    u'\u0417'   #  0xFA -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0428'   #  0xFB -> CYRILLIC CAPITAL LETTER SHA
+    u'\u042d'   #  0xFC -> CYRILLIC CAPITAL LETTER E
+    u'\u0429'   #  0xFD -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u0427'   #  0xFE -> CYRILLIC CAPITAL LETTER CHE
+    u'\u042a'   #  0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x00A0: 0x9A,	#  NO-BREAK SPACE
-    0x00A9: 0xBF,	#  COPYRIGHT SIGN
-    0x00B0: 0x9C,	#  DEGREE SIGN
-    0x00B2: 0x9D,	#  SUPERSCRIPT TWO
-    0x00B7: 0x9E,	#  MIDDLE DOT
-    0x00F7: 0x9F,	#  DIVISION SIGN
-    0x0401: 0xB3,	#  CYRILLIC CAPITAL LETTER IO
-    0x0404: 0xB4,	#  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0406: 0xB6,	#  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0xB7,	#  CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
-    0x0410: 0xE1,	#  CYRILLIC CAPITAL LETTER A
-    0x0411: 0xE2,	#  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0xF7,	#  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0xE7,	#  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0xE4,	#  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0xE5,	#  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0xF6,	#  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0xFA,	#  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0xE9,	#  CYRILLIC CAPITAL LETTER I
-    0x0419: 0xEA,	#  CYRILLIC CAPITAL LETTER SHORT I
-    0x041A: 0xEB,	#  CYRILLIC CAPITAL LETTER KA
-    0x041B: 0xEC,	#  CYRILLIC CAPITAL LETTER EL
-    0x041C: 0xED,	#  CYRILLIC CAPITAL LETTER EM
-    0x041D: 0xEE,	#  CYRILLIC CAPITAL LETTER EN
-    0x041E: 0xEF,	#  CYRILLIC CAPITAL LETTER O
-    0x041F: 0xF0,	#  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0xF2,	#  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0xF3,	#  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0xF4,	#  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0xF5,	#  CYRILLIC CAPITAL LETTER U
-    0x0424: 0xE6,	#  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0xE8,	#  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0xE3,	#  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0xFE,	#  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0xFB,	#  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0xFD,	#  CYRILLIC CAPITAL LETTER SHCHA
-    0x042A: 0xFF,	#  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042B: 0xF9,	#  CYRILLIC CAPITAL LETTER YERU
-    0x042C: 0xF8,	#  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042D: 0xFC,	#  CYRILLIC CAPITAL LETTER E
-    0x042E: 0xE0,	#  CYRILLIC CAPITAL LETTER YU
-    0x042F: 0xF1,	#  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xC1,	#  CYRILLIC SMALL LETTER A
-    0x0431: 0xC2,	#  CYRILLIC SMALL LETTER BE
-    0x0432: 0xD7,	#  CYRILLIC SMALL LETTER VE
-    0x0433: 0xC7,	#  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xC4,	#  CYRILLIC SMALL LETTER DE
-    0x0435: 0xC5,	#  CYRILLIC SMALL LETTER IE
-    0x0436: 0xD6,	#  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xDA,	#  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xC9,	#  CYRILLIC SMALL LETTER I
-    0x0439: 0xCA,	#  CYRILLIC SMALL LETTER SHORT I
-    0x043A: 0xCB,	#  CYRILLIC SMALL LETTER KA
-    0x043B: 0xCC,	#  CYRILLIC SMALL LETTER EL
-    0x043C: 0xCD,	#  CYRILLIC SMALL LETTER EM
-    0x043D: 0xCE,	#  CYRILLIC SMALL LETTER EN
-    0x043E: 0xCF,	#  CYRILLIC SMALL LETTER O
-    0x043F: 0xD0,	#  CYRILLIC SMALL LETTER PE
-    0x0440: 0xD2,	#  CYRILLIC SMALL LETTER ER
-    0x0441: 0xD3,	#  CYRILLIC SMALL LETTER ES
-    0x0442: 0xD4,	#  CYRILLIC SMALL LETTER TE
-    0x0443: 0xD5,	#  CYRILLIC SMALL LETTER U
-    0x0444: 0xC6,	#  CYRILLIC SMALL LETTER EF
-    0x0445: 0xC8,	#  CYRILLIC SMALL LETTER HA
-    0x0446: 0xC3,	#  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xDE,	#  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xDB,	#  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xDD,	#  CYRILLIC SMALL LETTER SHCHA
-    0x044A: 0xDF,	#  CYRILLIC SMALL LETTER HARD SIGN
-    0x044B: 0xD9,	#  CYRILLIC SMALL LETTER YERU
-    0x044C: 0xD8,	#  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044D: 0xDC,	#  CYRILLIC SMALL LETTER E
-    0x044E: 0xC0,	#  CYRILLIC SMALL LETTER YU
-    0x044F: 0xD1,	#  CYRILLIC SMALL LETTER YA
-    0x0451: 0xA3,	#  CYRILLIC SMALL LETTER IO
-    0x0454: 0xA4,	#  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0456: 0xA6,	#  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0xA7,	#  CYRILLIC SMALL LETTER YI (UKRAINIAN)
-    0x0490: 0xBD,	#  CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
-    0x0491: 0xAD,	#  CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
-    0x2219: 0x95,	#  BULLET OPERATOR
-    0x221A: 0x96,	#  SQUARE ROOT
-    0x2248: 0x97,	#  ALMOST EQUAL TO
-    0x2264: 0x98,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0x99,	#  GREATER-THAN OR EQUAL TO
-    0x2320: 0x93,	#  TOP HALF INTEGRAL
-    0x2321: 0x9B,	#  BOTTOM HALF INTEGRAL
-    0x2500: 0x80,	#  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x81,	#  BOX DRAWINGS LIGHT VERTICAL
-    0x250C: 0x82,	#  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x83,	#  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x84,	#  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x85,	#  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251C: 0x86,	#  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x87,	#  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252C: 0x88,	#  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x89,	#  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253C: 0x8A,	#  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0xA0,	#  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0xA1,	#  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0xA2,	#  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2554: 0xA5,	#  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0xA8,	#  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0xA9,	#  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0xAA,	#  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255A: 0xAB,	#  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255B: 0xAC,	#  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255D: 0xAE,	#  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255E: 0xAF,	#  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255F: 0xB0,	#  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0xB1,	#  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0xB2,	#  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2563: 0xB5,	#  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0xB8,	#  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0xB9,	#  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0xBA,	#  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0xBB,	#  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256A: 0xBC,	#  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256C: 0xBE,	#  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x8B,	#  UPPER HALF BLOCK
-    0x2584: 0x8C,	#  LOWER HALF BLOCK
-    0x2588: 0x8D,	#  FULL BLOCK
-    0x258C: 0x8E,	#  LEFT HALF BLOCK
-    0x2590: 0x8F,	#  RIGHT HALF BLOCK
-    0x2591: 0x90,	#  LIGHT SHADE
-    0x2592: 0x91,	#  MEDIUM SHADE
-    0x2593: 0x92,	#  DARK SHADE
-    0x25A0: 0x94,	#  BLACK SQUARE
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x00A0: 0x9A,       #  NO-BREAK SPACE
+    0x00A9: 0xBF,       #  COPYRIGHT SIGN
+    0x00B0: 0x9C,       #  DEGREE SIGN
+    0x00B2: 0x9D,       #  SUPERSCRIPT TWO
+    0x00B7: 0x9E,       #  MIDDLE DOT
+    0x00F7: 0x9F,       #  DIVISION SIGN
+    0x0401: 0xB3,       #  CYRILLIC CAPITAL LETTER IO
+    0x0404: 0xB4,       #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0406: 0xB6,       #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0407: 0xB7,       #  CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
+    0x0410: 0xE1,       #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0xE2,       #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0xF7,       #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0xE7,       #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0xE4,       #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0xE5,       #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0xF6,       #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0xFA,       #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0xE9,       #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0xEA,       #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041A: 0xEB,       #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0xEC,       #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0xED,       #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0xEE,       #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0xEF,       #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0xF0,       #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0xF2,       #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0xF3,       #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0xF4,       #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0xF5,       #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0xE6,       #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0xE8,       #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0xE3,       #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0xFE,       #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0xFB,       #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0xFD,       #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042A: 0xFF,       #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0xF9,       #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0xF8,       #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0xFC,       #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0xE0,       #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0xF1,       #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xC1,       #  CYRILLIC SMALL LETTER A
+    0x0431: 0xC2,       #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xD7,       #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xC7,       #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xC4,       #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xC5,       #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xD6,       #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xDA,       #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xC9,       #  CYRILLIC SMALL LETTER I
+    0x0439: 0xCA,       #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xCB,       #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xCC,       #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xCD,       #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xCE,       #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xCF,       #  CYRILLIC SMALL LETTER O
+    0x043F: 0xD0,       #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xD2,       #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xD3,       #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xD4,       #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xD5,       #  CYRILLIC SMALL LETTER U
+    0x0444: 0xC6,       #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xC8,       #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xC3,       #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xDE,       #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xDB,       #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xDD,       #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xDF,       #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xD9,       #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xD8,       #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xDC,       #  CYRILLIC SMALL LETTER E
+    0x044E: 0xC0,       #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xD1,       #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xA3,       #  CYRILLIC SMALL LETTER IO
+    0x0454: 0xA4,       #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0456: 0xA6,       #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0457: 0xA7,       #  CYRILLIC SMALL LETTER YI (UKRAINIAN)
+    0x0490: 0xBD,       #  CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
+    0x0491: 0xAD,       #  CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
+    0x2219: 0x95,       #  BULLET OPERATOR
+    0x221A: 0x96,       #  SQUARE ROOT
+    0x2248: 0x97,       #  ALMOST EQUAL TO
+    0x2264: 0x98,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0x99,       #  GREATER-THAN OR EQUAL TO
+    0x2320: 0x93,       #  TOP HALF INTEGRAL
+    0x2321: 0x9B,       #  BOTTOM HALF INTEGRAL
+    0x2500: 0x80,       #  BOX DRAWINGS LIGHT HORIZONTAL
+    0x2502: 0x81,       #  BOX DRAWINGS LIGHT VERTICAL
+    0x250C: 0x82,       #  BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: 0x83,       #  BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: 0x84,       #  BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: 0x85,       #  BOX DRAWINGS LIGHT UP AND LEFT
+    0x251C: 0x86,       #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+    0x2524: 0x87,       #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
+    0x252C: 0x88,       #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+    0x2534: 0x89,       #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
+    0x253C: 0x8A,       #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+    0x2550: 0xA0,       #  BOX DRAWINGS DOUBLE HORIZONTAL
+    0x2551: 0xA1,       #  BOX DRAWINGS DOUBLE VERTICAL
+    0x2552: 0xA2,       #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+    0x2554: 0xA5,       #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
+    0x2557: 0xA8,       #  BOX DRAWINGS DOUBLE DOWN AND LEFT
+    0x2558: 0xA9,       #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+    0x2559: 0xAA,       #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+    0x255A: 0xAB,       #  BOX DRAWINGS DOUBLE UP AND RIGHT
+    0x255B: 0xAC,       #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+    0x255D: 0xAE,       #  BOX DRAWINGS DOUBLE UP AND LEFT
+    0x255E: 0xAF,       #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+    0x255F: 0xB0,       #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+    0x2560: 0xB1,       #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+    0x2561: 0xB2,       #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+    0x2563: 0xB5,       #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+    0x2566: 0xB8,       #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+    0x2567: 0xB9,       #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+    0x2568: 0xBA,       #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+    0x2569: 0xBB,       #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+    0x256A: 0xBC,       #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+    0x256C: 0xBE,       #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+    0x2580: 0x8B,       #  UPPER HALF BLOCK
+    0x2584: 0x8C,       #  LOWER HALF BLOCK
+    0x2588: 0x8D,       #  FULL BLOCK
+    0x258C: 0x8E,       #  LEFT HALF BLOCK
+    0x2590: 0x8F,       #  RIGHT HALF BLOCK
+    0x2591: 0x90,       #  LIGHT SHADE
+    0x2592: 0x91,       #  MEDIUM SHADE
+    0x2593: 0x92,       #  DARK SHADE
+    0x25A0: 0x94,       #  BLACK SQUARE
 }
-

Modified: python/trunk/Lib/encodings/mac_arabic.py
==============================================================================
--- python/trunk/Lib/encodings/mac_arabic.py	(original)
+++ python/trunk/Lib/encodings/mac_arabic.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,654 +32,654 @@
 
 decoding_map = codecs.make_identity_dict(range(256))
 decoding_map.update({
-    0x0080: 0x00c4,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x0081: 0x00a0,	#  NO-BREAK SPACE, right-left
-    0x0082: 0x00c7,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0083: 0x00c9,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0084: 0x00d1,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x0085: 0x00d6,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x0086: 0x00dc,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x0087: 0x00e1,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x0088: 0x00e0,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x0089: 0x00e2,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x008a: 0x00e4,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x008b: 0x06ba,	#  ARABIC LETTER NOON GHUNNA
-    0x008c: 0x00ab,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x008d: 0x00e7,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x008e: 0x00e9,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x008f: 0x00e8,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x0090: 0x00ea,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0091: 0x00eb,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x0092: 0x00ed,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x0093: 0x2026,	#  HORIZONTAL ELLIPSIS, right-left
-    0x0094: 0x00ee,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x0095: 0x00ef,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x0096: 0x00f1,	#  LATIN SMALL LETTER N WITH TILDE
-    0x0097: 0x00f3,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x0098: 0x00bb,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x0099: 0x00f4,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x009a: 0x00f6,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x009b: 0x00f7,	#  DIVISION SIGN, right-left
-    0x009c: 0x00fa,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x009d: 0x00f9,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x009e: 0x00fb,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x009f: 0x00fc,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00a0: 0x0020,	#  SPACE, right-left
-    0x00a1: 0x0021,	#  EXCLAMATION MARK, right-left
-    0x00a2: 0x0022,	#  QUOTATION MARK, right-left
-    0x00a3: 0x0023,	#  NUMBER SIGN, right-left
-    0x00a4: 0x0024,	#  DOLLAR SIGN, right-left
-    0x00a5: 0x066a,	#  ARABIC PERCENT SIGN
-    0x00a6: 0x0026,	#  AMPERSAND, right-left
-    0x00a7: 0x0027,	#  APOSTROPHE, right-left
-    0x00a8: 0x0028,	#  LEFT PARENTHESIS, right-left
-    0x00a9: 0x0029,	#  RIGHT PARENTHESIS, right-left
-    0x00aa: 0x002a,	#  ASTERISK, right-left
-    0x00ab: 0x002b,	#  PLUS SIGN, right-left
-    0x00ac: 0x060c,	#  ARABIC COMMA
-    0x00ad: 0x002d,	#  HYPHEN-MINUS, right-left
-    0x00ae: 0x002e,	#  FULL STOP, right-left
-    0x00af: 0x002f,	#  SOLIDUS, right-left
-    0x00b0: 0x0660,	#  ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    0x00b1: 0x0661,	#  ARABIC-INDIC DIGIT ONE, right-left (need override)
-    0x00b2: 0x0662,	#  ARABIC-INDIC DIGIT TWO, right-left (need override)
-    0x00b3: 0x0663,	#  ARABIC-INDIC DIGIT THREE, right-left (need override)
-    0x00b4: 0x0664,	#  ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    0x00b5: 0x0665,	#  ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    0x00b6: 0x0666,	#  ARABIC-INDIC DIGIT SIX, right-left (need override)
-    0x00b7: 0x0667,	#  ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    0x00b8: 0x0668,	#  ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    0x00b9: 0x0669,	#  ARABIC-INDIC DIGIT NINE, right-left (need override)
-    0x00ba: 0x003a,	#  COLON, right-left
-    0x00bb: 0x061b,	#  ARABIC SEMICOLON
-    0x00bc: 0x003c,	#  LESS-THAN SIGN, right-left
-    0x00bd: 0x003d,	#  EQUALS SIGN, right-left
-    0x00be: 0x003e,	#  GREATER-THAN SIGN, right-left
-    0x00bf: 0x061f,	#  ARABIC QUESTION MARK
-    0x00c0: 0x274a,	#  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-    0x00c1: 0x0621,	#  ARABIC LETTER HAMZA
-    0x00c2: 0x0622,	#  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x00c3: 0x0623,	#  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x00c4: 0x0624,	#  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x00c5: 0x0625,	#  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x00c6: 0x0626,	#  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x00c7: 0x0627,	#  ARABIC LETTER ALEF
-    0x00c8: 0x0628,	#  ARABIC LETTER BEH
-    0x00c9: 0x0629,	#  ARABIC LETTER TEH MARBUTA
-    0x00ca: 0x062a,	#  ARABIC LETTER TEH
-    0x00cb: 0x062b,	#  ARABIC LETTER THEH
-    0x00cc: 0x062c,	#  ARABIC LETTER JEEM
-    0x00cd: 0x062d,	#  ARABIC LETTER HAH
-    0x00ce: 0x062e,	#  ARABIC LETTER KHAH
-    0x00cf: 0x062f,	#  ARABIC LETTER DAL
-    0x00d0: 0x0630,	#  ARABIC LETTER THAL
-    0x00d1: 0x0631,	#  ARABIC LETTER REH
-    0x00d2: 0x0632,	#  ARABIC LETTER ZAIN
-    0x00d3: 0x0633,	#  ARABIC LETTER SEEN
-    0x00d4: 0x0634,	#  ARABIC LETTER SHEEN
-    0x00d5: 0x0635,	#  ARABIC LETTER SAD
-    0x00d6: 0x0636,	#  ARABIC LETTER DAD
-    0x00d7: 0x0637,	#  ARABIC LETTER TAH
-    0x00d8: 0x0638,	#  ARABIC LETTER ZAH
-    0x00d9: 0x0639,	#  ARABIC LETTER AIN
-    0x00da: 0x063a,	#  ARABIC LETTER GHAIN
-    0x00db: 0x005b,	#  LEFT SQUARE BRACKET, right-left
-    0x00dc: 0x005c,	#  REVERSE SOLIDUS, right-left
-    0x00dd: 0x005d,	#  RIGHT SQUARE BRACKET, right-left
-    0x00de: 0x005e,	#  CIRCUMFLEX ACCENT, right-left
-    0x00df: 0x005f,	#  LOW LINE, right-left
-    0x00e0: 0x0640,	#  ARABIC TATWEEL
-    0x00e1: 0x0641,	#  ARABIC LETTER FEH
-    0x00e2: 0x0642,	#  ARABIC LETTER QAF
-    0x00e3: 0x0643,	#  ARABIC LETTER KAF
-    0x00e4: 0x0644,	#  ARABIC LETTER LAM
-    0x00e5: 0x0645,	#  ARABIC LETTER MEEM
-    0x00e6: 0x0646,	#  ARABIC LETTER NOON
-    0x00e7: 0x0647,	#  ARABIC LETTER HEH
-    0x00e8: 0x0648,	#  ARABIC LETTER WAW
-    0x00e9: 0x0649,	#  ARABIC LETTER ALEF MAKSURA
-    0x00ea: 0x064a,	#  ARABIC LETTER YEH
-    0x00eb: 0x064b,	#  ARABIC FATHATAN
-    0x00ec: 0x064c,	#  ARABIC DAMMATAN
-    0x00ed: 0x064d,	#  ARABIC KASRATAN
-    0x00ee: 0x064e,	#  ARABIC FATHA
-    0x00ef: 0x064f,	#  ARABIC DAMMA
-    0x00f0: 0x0650,	#  ARABIC KASRA
-    0x00f1: 0x0651,	#  ARABIC SHADDA
-    0x00f2: 0x0652,	#  ARABIC SUKUN
-    0x00f3: 0x067e,	#  ARABIC LETTER PEH
-    0x00f4: 0x0679,	#  ARABIC LETTER TTEH
-    0x00f5: 0x0686,	#  ARABIC LETTER TCHEH
-    0x00f6: 0x06d5,	#  ARABIC LETTER AE
-    0x00f7: 0x06a4,	#  ARABIC LETTER VEH
-    0x00f8: 0x06af,	#  ARABIC LETTER GAF
-    0x00f9: 0x0688,	#  ARABIC LETTER DDAL
-    0x00fa: 0x0691,	#  ARABIC LETTER RREH
-    0x00fb: 0x007b,	#  LEFT CURLY BRACKET, right-left
-    0x00fc: 0x007c,	#  VERTICAL LINE, right-left
-    0x00fd: 0x007d,	#  RIGHT CURLY BRACKET, right-left
-    0x00fe: 0x0698,	#  ARABIC LETTER JEH
-    0x00ff: 0x06d2,	#  ARABIC LETTER YEH BARREE
+    0x0080: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x0081: 0x00a0,     #  NO-BREAK SPACE, right-left
+    0x0082: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x0083: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x0084: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x0085: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x0086: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x0087: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x0088: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x0089: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x008a: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x008b: 0x06ba,     #  ARABIC LETTER NOON GHUNNA
+    0x008c: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    0x008d: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x008e: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x008f: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x0090: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x0091: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x0092: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x0093: 0x2026,     #  HORIZONTAL ELLIPSIS, right-left
+    0x0094: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x0095: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x0096: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
+    0x0097: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x0098: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    0x0099: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x009a: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x009b: 0x00f7,     #  DIVISION SIGN, right-left
+    0x009c: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x009d: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x009e: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x009f: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00a0: 0x0020,     #  SPACE, right-left
+    0x00a1: 0x0021,     #  EXCLAMATION MARK, right-left
+    0x00a2: 0x0022,     #  QUOTATION MARK, right-left
+    0x00a3: 0x0023,     #  NUMBER SIGN, right-left
+    0x00a4: 0x0024,     #  DOLLAR SIGN, right-left
+    0x00a5: 0x066a,     #  ARABIC PERCENT SIGN
+    0x00a6: 0x0026,     #  AMPERSAND, right-left
+    0x00a7: 0x0027,     #  APOSTROPHE, right-left
+    0x00a8: 0x0028,     #  LEFT PARENTHESIS, right-left
+    0x00a9: 0x0029,     #  RIGHT PARENTHESIS, right-left
+    0x00aa: 0x002a,     #  ASTERISK, right-left
+    0x00ab: 0x002b,     #  PLUS SIGN, right-left
+    0x00ac: 0x060c,     #  ARABIC COMMA
+    0x00ad: 0x002d,     #  HYPHEN-MINUS, right-left
+    0x00ae: 0x002e,     #  FULL STOP, right-left
+    0x00af: 0x002f,     #  SOLIDUS, right-left
+    0x00b0: 0x0660,     #  ARABIC-INDIC DIGIT ZERO, right-left (need override)
+    0x00b1: 0x0661,     #  ARABIC-INDIC DIGIT ONE, right-left (need override)
+    0x00b2: 0x0662,     #  ARABIC-INDIC DIGIT TWO, right-left (need override)
+    0x00b3: 0x0663,     #  ARABIC-INDIC DIGIT THREE, right-left (need override)
+    0x00b4: 0x0664,     #  ARABIC-INDIC DIGIT FOUR, right-left (need override)
+    0x00b5: 0x0665,     #  ARABIC-INDIC DIGIT FIVE, right-left (need override)
+    0x00b6: 0x0666,     #  ARABIC-INDIC DIGIT SIX, right-left (need override)
+    0x00b7: 0x0667,     #  ARABIC-INDIC DIGIT SEVEN, right-left (need override)
+    0x00b8: 0x0668,     #  ARABIC-INDIC DIGIT EIGHT, right-left (need override)
+    0x00b9: 0x0669,     #  ARABIC-INDIC DIGIT NINE, right-left (need override)
+    0x00ba: 0x003a,     #  COLON, right-left
+    0x00bb: 0x061b,     #  ARABIC SEMICOLON
+    0x00bc: 0x003c,     #  LESS-THAN SIGN, right-left
+    0x00bd: 0x003d,     #  EQUALS SIGN, right-left
+    0x00be: 0x003e,     #  GREATER-THAN SIGN, right-left
+    0x00bf: 0x061f,     #  ARABIC QUESTION MARK
+    0x00c0: 0x274a,     #  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
+    0x00c1: 0x0621,     #  ARABIC LETTER HAMZA
+    0x00c2: 0x0622,     #  ARABIC LETTER ALEF WITH MADDA ABOVE
+    0x00c3: 0x0623,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE
+    0x00c4: 0x0624,     #  ARABIC LETTER WAW WITH HAMZA ABOVE
+    0x00c5: 0x0625,     #  ARABIC LETTER ALEF WITH HAMZA BELOW
+    0x00c6: 0x0626,     #  ARABIC LETTER YEH WITH HAMZA ABOVE
+    0x00c7: 0x0627,     #  ARABIC LETTER ALEF
+    0x00c8: 0x0628,     #  ARABIC LETTER BEH
+    0x00c9: 0x0629,     #  ARABIC LETTER TEH MARBUTA
+    0x00ca: 0x062a,     #  ARABIC LETTER TEH
+    0x00cb: 0x062b,     #  ARABIC LETTER THEH
+    0x00cc: 0x062c,     #  ARABIC LETTER JEEM
+    0x00cd: 0x062d,     #  ARABIC LETTER HAH
+    0x00ce: 0x062e,     #  ARABIC LETTER KHAH
+    0x00cf: 0x062f,     #  ARABIC LETTER DAL
+    0x00d0: 0x0630,     #  ARABIC LETTER THAL
+    0x00d1: 0x0631,     #  ARABIC LETTER REH
+    0x00d2: 0x0632,     #  ARABIC LETTER ZAIN
+    0x00d3: 0x0633,     #  ARABIC LETTER SEEN
+    0x00d4: 0x0634,     #  ARABIC LETTER SHEEN
+    0x00d5: 0x0635,     #  ARABIC LETTER SAD
+    0x00d6: 0x0636,     #  ARABIC LETTER DAD
+    0x00d7: 0x0637,     #  ARABIC LETTER TAH
+    0x00d8: 0x0638,     #  ARABIC LETTER ZAH
+    0x00d9: 0x0639,     #  ARABIC LETTER AIN
+    0x00da: 0x063a,     #  ARABIC LETTER GHAIN
+    0x00db: 0x005b,     #  LEFT SQUARE BRACKET, right-left
+    0x00dc: 0x005c,     #  REVERSE SOLIDUS, right-left
+    0x00dd: 0x005d,     #  RIGHT SQUARE BRACKET, right-left
+    0x00de: 0x005e,     #  CIRCUMFLEX ACCENT, right-left
+    0x00df: 0x005f,     #  LOW LINE, right-left
+    0x00e0: 0x0640,     #  ARABIC TATWEEL
+    0x00e1: 0x0641,     #  ARABIC LETTER FEH
+    0x00e2: 0x0642,     #  ARABIC LETTER QAF
+    0x00e3: 0x0643,     #  ARABIC LETTER KAF
+    0x00e4: 0x0644,     #  ARABIC LETTER LAM
+    0x00e5: 0x0645,     #  ARABIC LETTER MEEM
+    0x00e6: 0x0646,     #  ARABIC LETTER NOON
+    0x00e7: 0x0647,     #  ARABIC LETTER HEH
+    0x00e8: 0x0648,     #  ARABIC LETTER WAW
+    0x00e9: 0x0649,     #  ARABIC LETTER ALEF MAKSURA
+    0x00ea: 0x064a,     #  ARABIC LETTER YEH
+    0x00eb: 0x064b,     #  ARABIC FATHATAN
+    0x00ec: 0x064c,     #  ARABIC DAMMATAN
+    0x00ed: 0x064d,     #  ARABIC KASRATAN
+    0x00ee: 0x064e,     #  ARABIC FATHA
+    0x00ef: 0x064f,     #  ARABIC DAMMA
+    0x00f0: 0x0650,     #  ARABIC KASRA
+    0x00f1: 0x0651,     #  ARABIC SHADDA
+    0x00f2: 0x0652,     #  ARABIC SUKUN
+    0x00f3: 0x067e,     #  ARABIC LETTER PEH
+    0x00f4: 0x0679,     #  ARABIC LETTER TTEH
+    0x00f5: 0x0686,     #  ARABIC LETTER TCHEH
+    0x00f6: 0x06d5,     #  ARABIC LETTER AE
+    0x00f7: 0x06a4,     #  ARABIC LETTER VEH
+    0x00f8: 0x06af,     #  ARABIC LETTER GAF
+    0x00f9: 0x0688,     #  ARABIC LETTER DDAL
+    0x00fa: 0x0691,     #  ARABIC LETTER RREH
+    0x00fb: 0x007b,     #  LEFT CURLY BRACKET, right-left
+    0x00fc: 0x007c,     #  VERTICAL LINE, right-left
+    0x00fd: 0x007d,     #  RIGHT CURLY BRACKET, right-left
+    0x00fe: 0x0698,     #  ARABIC LETTER JEH
+    0x00ff: 0x06d2,     #  ARABIC LETTER YEH BARREE
 })
 
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x0000 -> CONTROL CHARACTER
-    u'\x01'	#  0x0001 -> CONTROL CHARACTER
-    u'\x02'	#  0x0002 -> CONTROL CHARACTER
-    u'\x03'	#  0x0003 -> CONTROL CHARACTER
-    u'\x04'	#  0x0004 -> CONTROL CHARACTER
-    u'\x05'	#  0x0005 -> CONTROL CHARACTER
-    u'\x06'	#  0x0006 -> CONTROL CHARACTER
-    u'\x07'	#  0x0007 -> CONTROL CHARACTER
-    u'\x08'	#  0x0008 -> CONTROL CHARACTER
-    u'\t'	#  0x0009 -> CONTROL CHARACTER
-    u'\n'	#  0x000a -> CONTROL CHARACTER
-    u'\x0b'	#  0x000b -> CONTROL CHARACTER
-    u'\x0c'	#  0x000c -> CONTROL CHARACTER
-    u'\r'	#  0x000d -> CONTROL CHARACTER
-    u'\x0e'	#  0x000e -> CONTROL CHARACTER
-    u'\x0f'	#  0x000f -> CONTROL CHARACTER
-    u'\x10'	#  0x0010 -> CONTROL CHARACTER
-    u'\x11'	#  0x0011 -> CONTROL CHARACTER
-    u'\x12'	#  0x0012 -> CONTROL CHARACTER
-    u'\x13'	#  0x0013 -> CONTROL CHARACTER
-    u'\x14'	#  0x0014 -> CONTROL CHARACTER
-    u'\x15'	#  0x0015 -> CONTROL CHARACTER
-    u'\x16'	#  0x0016 -> CONTROL CHARACTER
-    u'\x17'	#  0x0017 -> CONTROL CHARACTER
-    u'\x18'	#  0x0018 -> CONTROL CHARACTER
-    u'\x19'	#  0x0019 -> CONTROL CHARACTER
-    u'\x1a'	#  0x001a -> CONTROL CHARACTER
-    u'\x1b'	#  0x001b -> CONTROL CHARACTER
-    u'\x1c'	#  0x001c -> CONTROL CHARACTER
-    u'\x1d'	#  0x001d -> CONTROL CHARACTER
-    u'\x1e'	#  0x001e -> CONTROL CHARACTER
-    u'\x1f'	#  0x001f -> CONTROL CHARACTER
-    u' '	#  0x0020 -> SPACE, left-right
-    u'!'	#  0x0021 -> EXCLAMATION MARK, left-right
-    u'"'	#  0x0022 -> QUOTATION MARK, left-right
-    u'#'	#  0x0023 -> NUMBER SIGN, left-right
-    u'$'	#  0x0024 -> DOLLAR SIGN, left-right
-    u'%'	#  0x0025 -> PERCENT SIGN, left-right
-    u'&'	#  0x0026 -> AMPERSAND, left-right
-    u"'"	#  0x0027 -> APOSTROPHE, left-right
-    u'('	#  0x0028 -> LEFT PARENTHESIS, left-right
-    u')'	#  0x0029 -> RIGHT PARENTHESIS, left-right
-    u'*'	#  0x002a -> ASTERISK, left-right
-    u'+'	#  0x002b -> PLUS SIGN, left-right
-    u','	#  0x002c -> COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-    u'-'	#  0x002d -> HYPHEN-MINUS, left-right
-    u'.'	#  0x002e -> FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-    u'/'	#  0x002f -> SOLIDUS, left-right
-    u'0'	#  0x0030 -> DIGIT ZERO;  in Arabic-script context, displayed as 0x0660 ARABIC-INDIC DIGIT ZERO
-    u'1'	#  0x0031 -> DIGIT ONE;   in Arabic-script context, displayed as 0x0661 ARABIC-INDIC DIGIT ONE
-    u'2'	#  0x0032 -> DIGIT TWO;   in Arabic-script context, displayed as 0x0662 ARABIC-INDIC DIGIT TWO
-    u'3'	#  0x0033 -> DIGIT THREE; in Arabic-script context, displayed as 0x0663 ARABIC-INDIC DIGIT THREE
-    u'4'	#  0x0034 -> DIGIT FOUR;  in Arabic-script context, displayed as 0x0664 ARABIC-INDIC DIGIT FOUR
-    u'5'	#  0x0035 -> DIGIT FIVE;  in Arabic-script context, displayed as 0x0665 ARABIC-INDIC DIGIT FIVE
-    u'6'	#  0x0036 -> DIGIT SIX;   in Arabic-script context, displayed as 0x0666 ARABIC-INDIC DIGIT SIX
-    u'7'	#  0x0037 -> DIGIT SEVEN; in Arabic-script context, displayed as 0x0667 ARABIC-INDIC DIGIT SEVEN
-    u'8'	#  0x0038 -> DIGIT EIGHT; in Arabic-script context, displayed as 0x0668 ARABIC-INDIC DIGIT EIGHT
-    u'9'	#  0x0039 -> DIGIT NINE;  in Arabic-script context, displayed as 0x0669 ARABIC-INDIC DIGIT NINE
-    u':'	#  0x003a -> COLON, left-right
-    u';'	#  0x003b -> SEMICOLON, left-right
-    u'<'	#  0x003c -> LESS-THAN SIGN, left-right
-    u'='	#  0x003d -> EQUALS SIGN, left-right
-    u'>'	#  0x003e -> GREATER-THAN SIGN, left-right
-    u'?'	#  0x003f -> QUESTION MARK, left-right
-    u'@'	#  0x0040 -> COMMERCIAL AT
-    u'A'	#  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x004a -> LATIN CAPITAL LETTER J
-    u'K'	#  0x004b -> LATIN CAPITAL LETTER K
-    u'L'	#  0x004c -> LATIN CAPITAL LETTER L
-    u'M'	#  0x004d -> LATIN CAPITAL LETTER M
-    u'N'	#  0x004e -> LATIN CAPITAL LETTER N
-    u'O'	#  0x004f -> LATIN CAPITAL LETTER O
-    u'P'	#  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x005a -> LATIN CAPITAL LETTER Z
-    u'['	#  0x005b -> LEFT SQUARE BRACKET, left-right
-    u'\\'	#  0x005c -> REVERSE SOLIDUS, left-right
-    u']'	#  0x005d -> RIGHT SQUARE BRACKET, left-right
-    u'^'	#  0x005e -> CIRCUMFLEX ACCENT, left-right
-    u'_'	#  0x005f -> LOW LINE, left-right
-    u'`'	#  0x0060 -> GRAVE ACCENT
-    u'a'	#  0x0061 -> LATIN SMALL LETTER A
-    u'b'	#  0x0062 -> LATIN SMALL LETTER B
-    u'c'	#  0x0063 -> LATIN SMALL LETTER C
-    u'd'	#  0x0064 -> LATIN SMALL LETTER D
-    u'e'	#  0x0065 -> LATIN SMALL LETTER E
-    u'f'	#  0x0066 -> LATIN SMALL LETTER F
-    u'g'	#  0x0067 -> LATIN SMALL LETTER G
-    u'h'	#  0x0068 -> LATIN SMALL LETTER H
-    u'i'	#  0x0069 -> LATIN SMALL LETTER I
-    u'j'	#  0x006a -> LATIN SMALL LETTER J
-    u'k'	#  0x006b -> LATIN SMALL LETTER K
-    u'l'	#  0x006c -> LATIN SMALL LETTER L
-    u'm'	#  0x006d -> LATIN SMALL LETTER M
-    u'n'	#  0x006e -> LATIN SMALL LETTER N
-    u'o'	#  0x006f -> LATIN SMALL LETTER O
-    u'p'	#  0x0070 -> LATIN SMALL LETTER P
-    u'q'	#  0x0071 -> LATIN SMALL LETTER Q
-    u'r'	#  0x0072 -> LATIN SMALL LETTER R
-    u's'	#  0x0073 -> LATIN SMALL LETTER S
-    u't'	#  0x0074 -> LATIN SMALL LETTER T
-    u'u'	#  0x0075 -> LATIN SMALL LETTER U
-    u'v'	#  0x0076 -> LATIN SMALL LETTER V
-    u'w'	#  0x0077 -> LATIN SMALL LETTER W
-    u'x'	#  0x0078 -> LATIN SMALL LETTER X
-    u'y'	#  0x0079 -> LATIN SMALL LETTER Y
-    u'z'	#  0x007a -> LATIN SMALL LETTER Z
-    u'{'	#  0x007b -> LEFT CURLY BRACKET, left-right
-    u'|'	#  0x007c -> VERTICAL LINE, left-right
-    u'}'	#  0x007d -> RIGHT CURLY BRACKET, left-right
-    u'~'	#  0x007e -> TILDE
-    u'\x7f'	#  0x007f -> CONTROL CHARACTER
-    u'\xc4'	#  0x0080 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xa0'	#  0x0081 -> NO-BREAK SPACE, right-left
-    u'\xc7'	#  0x0082 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'	#  0x0083 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'	#  0x0084 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'	#  0x0085 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x0086 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'	#  0x0087 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'	#  0x0088 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'	#  0x0089 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x008a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u06ba'	#  0x008b -> ARABIC LETTER NOON GHUNNA
-    u'\xab'	#  0x008c -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    u'\xe7'	#  0x008d -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'	#  0x008e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'	#  0x008f -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'	#  0x0090 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x0091 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'	#  0x0092 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\u2026'	#  0x0093 -> HORIZONTAL ELLIPSIS, right-left
-    u'\xee'	#  0x0094 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x0095 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'	#  0x0096 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'	#  0x0097 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xbb'	#  0x0098 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    u'\xf4'	#  0x0099 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x009a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0x009b -> DIVISION SIGN, right-left
-    u'\xfa'	#  0x009c -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'	#  0x009d -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'	#  0x009e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0x009f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u' '	#  0x00a0 -> SPACE, right-left
-    u'!'	#  0x00a1 -> EXCLAMATION MARK, right-left
-    u'"'	#  0x00a2 -> QUOTATION MARK, right-left
-    u'#'	#  0x00a3 -> NUMBER SIGN, right-left
-    u'$'	#  0x00a4 -> DOLLAR SIGN, right-left
-    u'\u066a'	#  0x00a5 -> ARABIC PERCENT SIGN
-    u'&'	#  0x00a6 -> AMPERSAND, right-left
-    u"'"	#  0x00a7 -> APOSTROPHE, right-left
-    u'('	#  0x00a8 -> LEFT PARENTHESIS, right-left
-    u')'	#  0x00a9 -> RIGHT PARENTHESIS, right-left
-    u'*'	#  0x00aa -> ASTERISK, right-left
-    u'+'	#  0x00ab -> PLUS SIGN, right-left
-    u'\u060c'	#  0x00ac -> ARABIC COMMA
-    u'-'	#  0x00ad -> HYPHEN-MINUS, right-left
-    u'.'	#  0x00ae -> FULL STOP, right-left
-    u'/'	#  0x00af -> SOLIDUS, right-left
-    u'\u0660'	#  0x00b0 -> ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    u'\u0661'	#  0x00b1 -> ARABIC-INDIC DIGIT ONE, right-left (need override)
-    u'\u0662'	#  0x00b2 -> ARABIC-INDIC DIGIT TWO, right-left (need override)
-    u'\u0663'	#  0x00b3 -> ARABIC-INDIC DIGIT THREE, right-left (need override)
-    u'\u0664'	#  0x00b4 -> ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    u'\u0665'	#  0x00b5 -> ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    u'\u0666'	#  0x00b6 -> ARABIC-INDIC DIGIT SIX, right-left (need override)
-    u'\u0667'	#  0x00b7 -> ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    u'\u0668'	#  0x00b8 -> ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    u'\u0669'	#  0x00b9 -> ARABIC-INDIC DIGIT NINE, right-left (need override)
-    u':'	#  0x00ba -> COLON, right-left
-    u'\u061b'	#  0x00bb -> ARABIC SEMICOLON
-    u'<'	#  0x00bc -> LESS-THAN SIGN, right-left
-    u'='	#  0x00bd -> EQUALS SIGN, right-left
-    u'>'	#  0x00be -> GREATER-THAN SIGN, right-left
-    u'\u061f'	#  0x00bf -> ARABIC QUESTION MARK
-    u'\u274a'	#  0x00c0 -> EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-    u'\u0621'	#  0x00c1 -> ARABIC LETTER HAMZA
-    u'\u0622'	#  0x00c2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'	#  0x00c3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'	#  0x00c4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'	#  0x00c5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'	#  0x00c6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'	#  0x00c7 -> ARABIC LETTER ALEF
-    u'\u0628'	#  0x00c8 -> ARABIC LETTER BEH
-    u'\u0629'	#  0x00c9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'	#  0x00ca -> ARABIC LETTER TEH
-    u'\u062b'	#  0x00cb -> ARABIC LETTER THEH
-    u'\u062c'	#  0x00cc -> ARABIC LETTER JEEM
-    u'\u062d'	#  0x00cd -> ARABIC LETTER HAH
-    u'\u062e'	#  0x00ce -> ARABIC LETTER KHAH
-    u'\u062f'	#  0x00cf -> ARABIC LETTER DAL
-    u'\u0630'	#  0x00d0 -> ARABIC LETTER THAL
-    u'\u0631'	#  0x00d1 -> ARABIC LETTER REH
-    u'\u0632'	#  0x00d2 -> ARABIC LETTER ZAIN
-    u'\u0633'	#  0x00d3 -> ARABIC LETTER SEEN
-    u'\u0634'	#  0x00d4 -> ARABIC LETTER SHEEN
-    u'\u0635'	#  0x00d5 -> ARABIC LETTER SAD
-    u'\u0636'	#  0x00d6 -> ARABIC LETTER DAD
-    u'\u0637'	#  0x00d7 -> ARABIC LETTER TAH
-    u'\u0638'	#  0x00d8 -> ARABIC LETTER ZAH
-    u'\u0639'	#  0x00d9 -> ARABIC LETTER AIN
-    u'\u063a'	#  0x00da -> ARABIC LETTER GHAIN
-    u'['	#  0x00db -> LEFT SQUARE BRACKET, right-left
-    u'\\'	#  0x00dc -> REVERSE SOLIDUS, right-left
-    u']'	#  0x00dd -> RIGHT SQUARE BRACKET, right-left
-    u'^'	#  0x00de -> CIRCUMFLEX ACCENT, right-left
-    u'_'	#  0x00df -> LOW LINE, right-left
-    u'\u0640'	#  0x00e0 -> ARABIC TATWEEL
-    u'\u0641'	#  0x00e1 -> ARABIC LETTER FEH
-    u'\u0642'	#  0x00e2 -> ARABIC LETTER QAF
-    u'\u0643'	#  0x00e3 -> ARABIC LETTER KAF
-    u'\u0644'	#  0x00e4 -> ARABIC LETTER LAM
-    u'\u0645'	#  0x00e5 -> ARABIC LETTER MEEM
-    u'\u0646'	#  0x00e6 -> ARABIC LETTER NOON
-    u'\u0647'	#  0x00e7 -> ARABIC LETTER HEH
-    u'\u0648'	#  0x00e8 -> ARABIC LETTER WAW
-    u'\u0649'	#  0x00e9 -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'	#  0x00ea -> ARABIC LETTER YEH
-    u'\u064b'	#  0x00eb -> ARABIC FATHATAN
-    u'\u064c'	#  0x00ec -> ARABIC DAMMATAN
-    u'\u064d'	#  0x00ed -> ARABIC KASRATAN
-    u'\u064e'	#  0x00ee -> ARABIC FATHA
-    u'\u064f'	#  0x00ef -> ARABIC DAMMA
-    u'\u0650'	#  0x00f0 -> ARABIC KASRA
-    u'\u0651'	#  0x00f1 -> ARABIC SHADDA
-    u'\u0652'	#  0x00f2 -> ARABIC SUKUN
-    u'\u067e'	#  0x00f3 -> ARABIC LETTER PEH
-    u'\u0679'	#  0x00f4 -> ARABIC LETTER TTEH
-    u'\u0686'	#  0x00f5 -> ARABIC LETTER TCHEH
-    u'\u06d5'	#  0x00f6 -> ARABIC LETTER AE
-    u'\u06a4'	#  0x00f7 -> ARABIC LETTER VEH
-    u'\u06af'	#  0x00f8 -> ARABIC LETTER GAF
-    u'\u0688'	#  0x00f9 -> ARABIC LETTER DDAL
-    u'\u0691'	#  0x00fa -> ARABIC LETTER RREH
-    u'{'	#  0x00fb -> LEFT CURLY BRACKET, right-left
-    u'|'	#  0x00fc -> VERTICAL LINE, right-left
-    u'}'	#  0x00fd -> RIGHT CURLY BRACKET, right-left
-    u'\u0698'	#  0x00fe -> ARABIC LETTER JEH
-    u'\u06d2'	#  0x00ff -> ARABIC LETTER YEH BARREE
+    u'\x00'     #  0x0000 -> CONTROL CHARACTER
+    u'\x01'     #  0x0001 -> CONTROL CHARACTER
+    u'\x02'     #  0x0002 -> CONTROL CHARACTER
+    u'\x03'     #  0x0003 -> CONTROL CHARACTER
+    u'\x04'     #  0x0004 -> CONTROL CHARACTER
+    u'\x05'     #  0x0005 -> CONTROL CHARACTER
+    u'\x06'     #  0x0006 -> CONTROL CHARACTER
+    u'\x07'     #  0x0007 -> CONTROL CHARACTER
+    u'\x08'     #  0x0008 -> CONTROL CHARACTER
+    u'\t'       #  0x0009 -> CONTROL CHARACTER
+    u'\n'       #  0x000a -> CONTROL CHARACTER
+    u'\x0b'     #  0x000b -> CONTROL CHARACTER
+    u'\x0c'     #  0x000c -> CONTROL CHARACTER
+    u'\r'       #  0x000d -> CONTROL CHARACTER
+    u'\x0e'     #  0x000e -> CONTROL CHARACTER
+    u'\x0f'     #  0x000f -> CONTROL CHARACTER
+    u'\x10'     #  0x0010 -> CONTROL CHARACTER
+    u'\x11'     #  0x0011 -> CONTROL CHARACTER
+    u'\x12'     #  0x0012 -> CONTROL CHARACTER
+    u'\x13'     #  0x0013 -> CONTROL CHARACTER
+    u'\x14'     #  0x0014 -> CONTROL CHARACTER
+    u'\x15'     #  0x0015 -> CONTROL CHARACTER
+    u'\x16'     #  0x0016 -> CONTROL CHARACTER
+    u'\x17'     #  0x0017 -> CONTROL CHARACTER
+    u'\x18'     #  0x0018 -> CONTROL CHARACTER
+    u'\x19'     #  0x0019 -> CONTROL CHARACTER
+    u'\x1a'     #  0x001a -> CONTROL CHARACTER
+    u'\x1b'     #  0x001b -> CONTROL CHARACTER
+    u'\x1c'     #  0x001c -> CONTROL CHARACTER
+    u'\x1d'     #  0x001d -> CONTROL CHARACTER
+    u'\x1e'     #  0x001e -> CONTROL CHARACTER
+    u'\x1f'     #  0x001f -> CONTROL CHARACTER
+    u' '        #  0x0020 -> SPACE, left-right
+    u'!'        #  0x0021 -> EXCLAMATION MARK, left-right
+    u'"'        #  0x0022 -> QUOTATION MARK, left-right
+    u'#'        #  0x0023 -> NUMBER SIGN, left-right
+    u'$'        #  0x0024 -> DOLLAR SIGN, left-right
+    u'%'        #  0x0025 -> PERCENT SIGN, left-right
+    u'&'        #  0x0026 -> AMPERSAND, left-right
+    u"'"        #  0x0027 -> APOSTROPHE, left-right
+    u'('        #  0x0028 -> LEFT PARENTHESIS, left-right
+    u')'        #  0x0029 -> RIGHT PARENTHESIS, left-right
+    u'*'        #  0x002a -> ASTERISK, left-right
+    u'+'        #  0x002b -> PLUS SIGN, left-right
+    u','        #  0x002c -> COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
+    u'-'        #  0x002d -> HYPHEN-MINUS, left-right
+    u'.'        #  0x002e -> FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
+    u'/'        #  0x002f -> SOLIDUS, left-right
+    u'0'        #  0x0030 -> DIGIT ZERO;  in Arabic-script context, displayed as 0x0660 ARABIC-INDIC DIGIT ZERO
+    u'1'        #  0x0031 -> DIGIT ONE;   in Arabic-script context, displayed as 0x0661 ARABIC-INDIC DIGIT ONE
+    u'2'        #  0x0032 -> DIGIT TWO;   in Arabic-script context, displayed as 0x0662 ARABIC-INDIC DIGIT TWO
+    u'3'        #  0x0033 -> DIGIT THREE; in Arabic-script context, displayed as 0x0663 ARABIC-INDIC DIGIT THREE
+    u'4'        #  0x0034 -> DIGIT FOUR;  in Arabic-script context, displayed as 0x0664 ARABIC-INDIC DIGIT FOUR
+    u'5'        #  0x0035 -> DIGIT FIVE;  in Arabic-script context, displayed as 0x0665 ARABIC-INDIC DIGIT FIVE
+    u'6'        #  0x0036 -> DIGIT SIX;   in Arabic-script context, displayed as 0x0666 ARABIC-INDIC DIGIT SIX
+    u'7'        #  0x0037 -> DIGIT SEVEN; in Arabic-script context, displayed as 0x0667 ARABIC-INDIC DIGIT SEVEN
+    u'8'        #  0x0038 -> DIGIT EIGHT; in Arabic-script context, displayed as 0x0668 ARABIC-INDIC DIGIT EIGHT
+    u'9'        #  0x0039 -> DIGIT NINE;  in Arabic-script context, displayed as 0x0669 ARABIC-INDIC DIGIT NINE
+    u':'        #  0x003a -> COLON, left-right
+    u';'        #  0x003b -> SEMICOLON, left-right
+    u'<'        #  0x003c -> LESS-THAN SIGN, left-right
+    u'='        #  0x003d -> EQUALS SIGN, left-right
+    u'>'        #  0x003e -> GREATER-THAN SIGN, left-right
+    u'?'        #  0x003f -> QUESTION MARK, left-right
+    u'@'        #  0x0040 -> COMMERCIAL AT
+    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
+    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
+    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
+    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
+    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
+    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
+    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
+    u'['        #  0x005b -> LEFT SQUARE BRACKET, left-right
+    u'\\'       #  0x005c -> REVERSE SOLIDUS, left-right
+    u']'        #  0x005d -> RIGHT SQUARE BRACKET, left-right
+    u'^'        #  0x005e -> CIRCUMFLEX ACCENT, left-right
+    u'_'        #  0x005f -> LOW LINE, left-right
+    u'`'        #  0x0060 -> GRAVE ACCENT
+    u'a'        #  0x0061 -> LATIN SMALL LETTER A
+    u'b'        #  0x0062 -> LATIN SMALL LETTER B
+    u'c'        #  0x0063 -> LATIN SMALL LETTER C
+    u'd'        #  0x0064 -> LATIN SMALL LETTER D
+    u'e'        #  0x0065 -> LATIN SMALL LETTER E
+    u'f'        #  0x0066 -> LATIN SMALL LETTER F
+    u'g'        #  0x0067 -> LATIN SMALL LETTER G
+    u'h'        #  0x0068 -> LATIN SMALL LETTER H
+    u'i'        #  0x0069 -> LATIN SMALL LETTER I
+    u'j'        #  0x006a -> LATIN SMALL LETTER J
+    u'k'        #  0x006b -> LATIN SMALL LETTER K
+    u'l'        #  0x006c -> LATIN SMALL LETTER L
+    u'm'        #  0x006d -> LATIN SMALL LETTER M
+    u'n'        #  0x006e -> LATIN SMALL LETTER N
+    u'o'        #  0x006f -> LATIN SMALL LETTER O
+    u'p'        #  0x0070 -> LATIN SMALL LETTER P
+    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
+    u'r'        #  0x0072 -> LATIN SMALL LETTER R
+    u's'        #  0x0073 -> LATIN SMALL LETTER S
+    u't'        #  0x0074 -> LATIN SMALL LETTER T
+    u'u'        #  0x0075 -> LATIN SMALL LETTER U
+    u'v'        #  0x0076 -> LATIN SMALL LETTER V
+    u'w'        #  0x0077 -> LATIN SMALL LETTER W
+    u'x'        #  0x0078 -> LATIN SMALL LETTER X
+    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
+    u'z'        #  0x007a -> LATIN SMALL LETTER Z
+    u'{'        #  0x007b -> LEFT CURLY BRACKET, left-right
+    u'|'        #  0x007c -> VERTICAL LINE, left-right
+    u'}'        #  0x007d -> RIGHT CURLY BRACKET, left-right
+    u'~'        #  0x007e -> TILDE
+    u'\x7f'     #  0x007f -> CONTROL CHARACTER
+    u'\xc4'     #  0x0080 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xa0'     #  0x0081 -> NO-BREAK SPACE, right-left
+    u'\xc7'     #  0x0082 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc9'     #  0x0083 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xd1'     #  0x0084 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd6'     #  0x0085 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x0086 -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xe1'     #  0x0087 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe0'     #  0x0088 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe2'     #  0x0089 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x008a -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u06ba'   #  0x008b -> ARABIC LETTER NOON GHUNNA
+    u'\xab'     #  0x008c -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    u'\xe7'     #  0x008d -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'     #  0x008e -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'     #  0x008f -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xea'     #  0x0090 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x0091 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xed'     #  0x0092 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\u2026'   #  0x0093 -> HORIZONTAL ELLIPSIS, right-left
+    u'\xee'     #  0x0094 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x0095 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf1'     #  0x0096 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf3'     #  0x0097 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xbb'     #  0x0098 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    u'\xf4'     #  0x0099 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x009a -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0x009b -> DIVISION SIGN, right-left
+    u'\xfa'     #  0x009c -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'     #  0x009d -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'     #  0x009e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0x009f -> LATIN SMALL LETTER U WITH DIAERESIS
+    u' '        #  0x00a0 -> SPACE, right-left
+    u'!'        #  0x00a1 -> EXCLAMATION MARK, right-left
+    u'"'        #  0x00a2 -> QUOTATION MARK, right-left
+    u'#'        #  0x00a3 -> NUMBER SIGN, right-left
+    u'$'        #  0x00a4 -> DOLLAR SIGN, right-left
+    u'\u066a'   #  0x00a5 -> ARABIC PERCENT SIGN
+    u'&'        #  0x00a6 -> AMPERSAND, right-left
+    u"'"        #  0x00a7 -> APOSTROPHE, right-left
+    u'('        #  0x00a8 -> LEFT PARENTHESIS, right-left
+    u')'        #  0x00a9 -> RIGHT PARENTHESIS, right-left
+    u'*'        #  0x00aa -> ASTERISK, right-left
+    u'+'        #  0x00ab -> PLUS SIGN, right-left
+    u'\u060c'   #  0x00ac -> ARABIC COMMA
+    u'-'        #  0x00ad -> HYPHEN-MINUS, right-left
+    u'.'        #  0x00ae -> FULL STOP, right-left
+    u'/'        #  0x00af -> SOLIDUS, right-left
+    u'\u0660'   #  0x00b0 -> ARABIC-INDIC DIGIT ZERO, right-left (need override)
+    u'\u0661'   #  0x00b1 -> ARABIC-INDIC DIGIT ONE, right-left (need override)
+    u'\u0662'   #  0x00b2 -> ARABIC-INDIC DIGIT TWO, right-left (need override)
+    u'\u0663'   #  0x00b3 -> ARABIC-INDIC DIGIT THREE, right-left (need override)
+    u'\u0664'   #  0x00b4 -> ARABIC-INDIC DIGIT FOUR, right-left (need override)
+    u'\u0665'   #  0x00b5 -> ARABIC-INDIC DIGIT FIVE, right-left (need override)
+    u'\u0666'   #  0x00b6 -> ARABIC-INDIC DIGIT SIX, right-left (need override)
+    u'\u0667'   #  0x00b7 -> ARABIC-INDIC DIGIT SEVEN, right-left (need override)
+    u'\u0668'   #  0x00b8 -> ARABIC-INDIC DIGIT EIGHT, right-left (need override)
+    u'\u0669'   #  0x00b9 -> ARABIC-INDIC DIGIT NINE, right-left (need override)
+    u':'        #  0x00ba -> COLON, right-left
+    u'\u061b'   #  0x00bb -> ARABIC SEMICOLON
+    u'<'        #  0x00bc -> LESS-THAN SIGN, right-left
+    u'='        #  0x00bd -> EQUALS SIGN, right-left
+    u'>'        #  0x00be -> GREATER-THAN SIGN, right-left
+    u'\u061f'   #  0x00bf -> ARABIC QUESTION MARK
+    u'\u274a'   #  0x00c0 -> EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
+    u'\u0621'   #  0x00c1 -> ARABIC LETTER HAMZA
+    u'\u0622'   #  0x00c2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
+    u'\u0623'   #  0x00c3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
+    u'\u0624'   #  0x00c4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
+    u'\u0625'   #  0x00c5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
+    u'\u0626'   #  0x00c6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
+    u'\u0627'   #  0x00c7 -> ARABIC LETTER ALEF
+    u'\u0628'   #  0x00c8 -> ARABIC LETTER BEH
+    u'\u0629'   #  0x00c9 -> ARABIC LETTER TEH MARBUTA
+    u'\u062a'   #  0x00ca -> ARABIC LETTER TEH
+    u'\u062b'   #  0x00cb -> ARABIC LETTER THEH
+    u'\u062c'   #  0x00cc -> ARABIC LETTER JEEM
+    u'\u062d'   #  0x00cd -> ARABIC LETTER HAH
+    u'\u062e'   #  0x00ce -> ARABIC LETTER KHAH
+    u'\u062f'   #  0x00cf -> ARABIC LETTER DAL
+    u'\u0630'   #  0x00d0 -> ARABIC LETTER THAL
+    u'\u0631'   #  0x00d1 -> ARABIC LETTER REH
+    u'\u0632'   #  0x00d2 -> ARABIC LETTER ZAIN
+    u'\u0633'   #  0x00d3 -> ARABIC LETTER SEEN
+    u'\u0634'   #  0x00d4 -> ARABIC LETTER SHEEN
+    u'\u0635'   #  0x00d5 -> ARABIC LETTER SAD
+    u'\u0636'   #  0x00d6 -> ARABIC LETTER DAD
+    u'\u0637'   #  0x00d7 -> ARABIC LETTER TAH
+    u'\u0638'   #  0x00d8 -> ARABIC LETTER ZAH
+    u'\u0639'   #  0x00d9 -> ARABIC LETTER AIN
+    u'\u063a'   #  0x00da -> ARABIC LETTER GHAIN
+    u'['        #  0x00db -> LEFT SQUARE BRACKET, right-left
+    u'\\'       #  0x00dc -> REVERSE SOLIDUS, right-left
+    u']'        #  0x00dd -> RIGHT SQUARE BRACKET, right-left
+    u'^'        #  0x00de -> CIRCUMFLEX ACCENT, right-left
+    u'_'        #  0x00df -> LOW LINE, right-left
+    u'\u0640'   #  0x00e0 -> ARABIC TATWEEL
+    u'\u0641'   #  0x00e1 -> ARABIC LETTER FEH
+    u'\u0642'   #  0x00e2 -> ARABIC LETTER QAF
+    u'\u0643'   #  0x00e3 -> ARABIC LETTER KAF
+    u'\u0644'   #  0x00e4 -> ARABIC LETTER LAM
+    u'\u0645'   #  0x00e5 -> ARABIC LETTER MEEM
+    u'\u0646'   #  0x00e6 -> ARABIC LETTER NOON
+    u'\u0647'   #  0x00e7 -> ARABIC LETTER HEH
+    u'\u0648'   #  0x00e8 -> ARABIC LETTER WAW
+    u'\u0649'   #  0x00e9 -> ARABIC LETTER ALEF MAKSURA
+    u'\u064a'   #  0x00ea -> ARABIC LETTER YEH
+    u'\u064b'   #  0x00eb -> ARABIC FATHATAN
+    u'\u064c'   #  0x00ec -> ARABIC DAMMATAN
+    u'\u064d'   #  0x00ed -> ARABIC KASRATAN
+    u'\u064e'   #  0x00ee -> ARABIC FATHA
+    u'\u064f'   #  0x00ef -> ARABIC DAMMA
+    u'\u0650'   #  0x00f0 -> ARABIC KASRA
+    u'\u0651'   #  0x00f1 -> ARABIC SHADDA
+    u'\u0652'   #  0x00f2 -> ARABIC SUKUN
+    u'\u067e'   #  0x00f3 -> ARABIC LETTER PEH
+    u'\u0679'   #  0x00f4 -> ARABIC LETTER TTEH
+    u'\u0686'   #  0x00f5 -> ARABIC LETTER TCHEH
+    u'\u06d5'   #  0x00f6 -> ARABIC LETTER AE
+    u'\u06a4'   #  0x00f7 -> ARABIC LETTER VEH
+    u'\u06af'   #  0x00f8 -> ARABIC LETTER GAF
+    u'\u0688'   #  0x00f9 -> ARABIC LETTER DDAL
+    u'\u0691'   #  0x00fa -> ARABIC LETTER RREH
+    u'{'        #  0x00fb -> LEFT CURLY BRACKET, right-left
+    u'|'        #  0x00fc -> VERTICAL LINE, right-left
+    u'}'        #  0x00fd -> RIGHT CURLY BRACKET, right-left
+    u'\u0698'   #  0x00fe -> ARABIC LETTER JEH
+    u'\u06d2'   #  0x00ff -> ARABIC LETTER YEH BARREE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x0000,	#  CONTROL CHARACTER
-    0x0001: 0x0001,	#  CONTROL CHARACTER
-    0x0002: 0x0002,	#  CONTROL CHARACTER
-    0x0003: 0x0003,	#  CONTROL CHARACTER
-    0x0004: 0x0004,	#  CONTROL CHARACTER
-    0x0005: 0x0005,	#  CONTROL CHARACTER
-    0x0006: 0x0006,	#  CONTROL CHARACTER
-    0x0007: 0x0007,	#  CONTROL CHARACTER
-    0x0008: 0x0008,	#  CONTROL CHARACTER
-    0x0009: 0x0009,	#  CONTROL CHARACTER
-    0x000a: 0x000a,	#  CONTROL CHARACTER
-    0x000b: 0x000b,	#  CONTROL CHARACTER
-    0x000c: 0x000c,	#  CONTROL CHARACTER
-    0x000d: 0x000d,	#  CONTROL CHARACTER
-    0x000e: 0x000e,	#  CONTROL CHARACTER
-    0x000f: 0x000f,	#  CONTROL CHARACTER
-    0x0010: 0x0010,	#  CONTROL CHARACTER
-    0x0011: 0x0011,	#  CONTROL CHARACTER
-    0x0012: 0x0012,	#  CONTROL CHARACTER
-    0x0013: 0x0013,	#  CONTROL CHARACTER
-    0x0014: 0x0014,	#  CONTROL CHARACTER
-    0x0015: 0x0015,	#  CONTROL CHARACTER
-    0x0016: 0x0016,	#  CONTROL CHARACTER
-    0x0017: 0x0017,	#  CONTROL CHARACTER
-    0x0018: 0x0018,	#  CONTROL CHARACTER
-    0x0019: 0x0019,	#  CONTROL CHARACTER
-    0x001a: 0x001a,	#  CONTROL CHARACTER
-    0x001b: 0x001b,	#  CONTROL CHARACTER
-    0x001c: 0x001c,	#  CONTROL CHARACTER
-    0x001d: 0x001d,	#  CONTROL CHARACTER
-    0x001e: 0x001e,	#  CONTROL CHARACTER
-    0x001f: 0x001f,	#  CONTROL CHARACTER
-    0x0020: 0x0020,	#  SPACE, left-right
-    0x0020: 0x00a0,	#  SPACE, right-left
-    0x0021: 0x0021,	#  EXCLAMATION MARK, left-right
-    0x0021: 0x00a1,	#  EXCLAMATION MARK, right-left
-    0x0022: 0x0022,	#  QUOTATION MARK, left-right
-    0x0022: 0x00a2,	#  QUOTATION MARK, right-left
-    0x0023: 0x0023,	#  NUMBER SIGN, left-right
-    0x0023: 0x00a3,	#  NUMBER SIGN, right-left
-    0x0024: 0x0024,	#  DOLLAR SIGN, left-right
-    0x0024: 0x00a4,	#  DOLLAR SIGN, right-left
-    0x0025: 0x0025,	#  PERCENT SIGN, left-right
-    0x0026: 0x0026,	#  AMPERSAND, left-right
-    0x0026: 0x00a6,	#  AMPERSAND, right-left
-    0x0027: 0x0027,	#  APOSTROPHE, left-right
-    0x0027: 0x00a7,	#  APOSTROPHE, right-left
-    0x0028: 0x0028,	#  LEFT PARENTHESIS, left-right
-    0x0028: 0x00a8,	#  LEFT PARENTHESIS, right-left
-    0x0029: 0x0029,	#  RIGHT PARENTHESIS, left-right
-    0x0029: 0x00a9,	#  RIGHT PARENTHESIS, right-left
-    0x002a: 0x002a,	#  ASTERISK, left-right
-    0x002a: 0x00aa,	#  ASTERISK, right-left
-    0x002b: 0x002b,	#  PLUS SIGN, left-right
-    0x002b: 0x00ab,	#  PLUS SIGN, right-left
-    0x002c: 0x002c,	#  COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-    0x002d: 0x002d,	#  HYPHEN-MINUS, left-right
-    0x002d: 0x00ad,	#  HYPHEN-MINUS, right-left
-    0x002e: 0x002e,	#  FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-    0x002e: 0x00ae,	#  FULL STOP, right-left
-    0x002f: 0x002f,	#  SOLIDUS, left-right
-    0x002f: 0x00af,	#  SOLIDUS, right-left
-    0x0030: 0x0030,	#  DIGIT ZERO;  in Arabic-script context, displayed as 0x0660 ARABIC-INDIC DIGIT ZERO
-    0x0031: 0x0031,	#  DIGIT ONE;   in Arabic-script context, displayed as 0x0661 ARABIC-INDIC DIGIT ONE
-    0x0032: 0x0032,	#  DIGIT TWO;   in Arabic-script context, displayed as 0x0662 ARABIC-INDIC DIGIT TWO
-    0x0033: 0x0033,	#  DIGIT THREE; in Arabic-script context, displayed as 0x0663 ARABIC-INDIC DIGIT THREE
-    0x0034: 0x0034,	#  DIGIT FOUR;  in Arabic-script context, displayed as 0x0664 ARABIC-INDIC DIGIT FOUR
-    0x0035: 0x0035,	#  DIGIT FIVE;  in Arabic-script context, displayed as 0x0665 ARABIC-INDIC DIGIT FIVE
-    0x0036: 0x0036,	#  DIGIT SIX;   in Arabic-script context, displayed as 0x0666 ARABIC-INDIC DIGIT SIX
-    0x0037: 0x0037,	#  DIGIT SEVEN; in Arabic-script context, displayed as 0x0667 ARABIC-INDIC DIGIT SEVEN
-    0x0038: 0x0038,	#  DIGIT EIGHT; in Arabic-script context, displayed as 0x0668 ARABIC-INDIC DIGIT EIGHT
-    0x0039: 0x0039,	#  DIGIT NINE;  in Arabic-script context, displayed as 0x0669 ARABIC-INDIC DIGIT NINE
-    0x003a: 0x003a,	#  COLON, left-right
-    0x003a: 0x00ba,	#  COLON, right-left
-    0x003b: 0x003b,	#  SEMICOLON, left-right
-    0x003c: 0x003c,	#  LESS-THAN SIGN, left-right
-    0x003c: 0x00bc,	#  LESS-THAN SIGN, right-left
-    0x003d: 0x003d,	#  EQUALS SIGN, left-right
-    0x003d: 0x00bd,	#  EQUALS SIGN, right-left
-    0x003e: 0x003e,	#  GREATER-THAN SIGN, left-right
-    0x003e: 0x00be,	#  GREATER-THAN SIGN, right-left
-    0x003f: 0x003f,	#  QUESTION MARK, left-right
-    0x0040: 0x0040,	#  COMMERCIAL AT
-    0x0041: 0x0041,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,	#  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,	#  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,	#  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,	#  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,	#  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,	#  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,	#  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,	#  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,	#  LEFT SQUARE BRACKET, left-right
-    0x005b: 0x00db,	#  LEFT SQUARE BRACKET, right-left
-    0x005c: 0x005c,	#  REVERSE SOLIDUS, left-right
-    0x005c: 0x00dc,	#  REVERSE SOLIDUS, right-left
-    0x005d: 0x005d,	#  RIGHT SQUARE BRACKET, left-right
-    0x005d: 0x00dd,	#  RIGHT SQUARE BRACKET, right-left
-    0x005e: 0x005e,	#  CIRCUMFLEX ACCENT, left-right
-    0x005e: 0x00de,	#  CIRCUMFLEX ACCENT, right-left
-    0x005f: 0x005f,	#  LOW LINE, left-right
-    0x005f: 0x00df,	#  LOW LINE, right-left
-    0x0060: 0x0060,	#  GRAVE ACCENT
-    0x0061: 0x0061,	#  LATIN SMALL LETTER A
-    0x0062: 0x0062,	#  LATIN SMALL LETTER B
-    0x0063: 0x0063,	#  LATIN SMALL LETTER C
-    0x0064: 0x0064,	#  LATIN SMALL LETTER D
-    0x0065: 0x0065,	#  LATIN SMALL LETTER E
-    0x0066: 0x0066,	#  LATIN SMALL LETTER F
-    0x0067: 0x0067,	#  LATIN SMALL LETTER G
-    0x0068: 0x0068,	#  LATIN SMALL LETTER H
-    0x0069: 0x0069,	#  LATIN SMALL LETTER I
-    0x006a: 0x006a,	#  LATIN SMALL LETTER J
-    0x006b: 0x006b,	#  LATIN SMALL LETTER K
-    0x006c: 0x006c,	#  LATIN SMALL LETTER L
-    0x006d: 0x006d,	#  LATIN SMALL LETTER M
-    0x006e: 0x006e,	#  LATIN SMALL LETTER N
-    0x006f: 0x006f,	#  LATIN SMALL LETTER O
-    0x0070: 0x0070,	#  LATIN SMALL LETTER P
-    0x0071: 0x0071,	#  LATIN SMALL LETTER Q
-    0x0072: 0x0072,	#  LATIN SMALL LETTER R
-    0x0073: 0x0073,	#  LATIN SMALL LETTER S
-    0x0074: 0x0074,	#  LATIN SMALL LETTER T
-    0x0075: 0x0075,	#  LATIN SMALL LETTER U
-    0x0076: 0x0076,	#  LATIN SMALL LETTER V
-    0x0077: 0x0077,	#  LATIN SMALL LETTER W
-    0x0078: 0x0078,	#  LATIN SMALL LETTER X
-    0x0079: 0x0079,	#  LATIN SMALL LETTER Y
-    0x007a: 0x007a,	#  LATIN SMALL LETTER Z
-    0x007b: 0x007b,	#  LEFT CURLY BRACKET, left-right
-    0x007b: 0x00fb,	#  LEFT CURLY BRACKET, right-left
-    0x007c: 0x007c,	#  VERTICAL LINE, left-right
-    0x007c: 0x00fc,	#  VERTICAL LINE, right-left
-    0x007d: 0x007d,	#  RIGHT CURLY BRACKET, left-right
-    0x007d: 0x00fd,	#  RIGHT CURLY BRACKET, right-left
-    0x007e: 0x007e,	#  TILDE
-    0x007f: 0x007f,	#  CONTROL CHARACTER
-    0x00a0: 0x0081,	#  NO-BREAK SPACE, right-left
-    0x00ab: 0x008c,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x00bb: 0x0098,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x00c4: 0x0080,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c7: 0x0082,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0083,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d1: 0x0084,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d6: 0x0085,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00dc: 0x0086,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00e0: 0x0088,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x0087,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0089,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x008a,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e7: 0x008d,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008f,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x008e,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0090,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0091,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0x0092,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x0094,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x0095,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x0096,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00f3: 0x0097,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0099,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x009a,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x009b,	#  DIVISION SIGN, right-left
-    0x00f9: 0x009d,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x009c,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x009e,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x009f,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x060c: 0x00ac,	#  ARABIC COMMA
-    0x061b: 0x00bb,	#  ARABIC SEMICOLON
-    0x061f: 0x00bf,	#  ARABIC QUESTION MARK
-    0x0621: 0x00c1,	#  ARABIC LETTER HAMZA
-    0x0622: 0x00c2,	#  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x0623: 0x00c3,	#  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x0624: 0x00c4,	#  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x0625: 0x00c5,	#  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x0626: 0x00c6,	#  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x0627: 0x00c7,	#  ARABIC LETTER ALEF
-    0x0628: 0x00c8,	#  ARABIC LETTER BEH
-    0x0629: 0x00c9,	#  ARABIC LETTER TEH MARBUTA
-    0x062a: 0x00ca,	#  ARABIC LETTER TEH
-    0x062b: 0x00cb,	#  ARABIC LETTER THEH
-    0x062c: 0x00cc,	#  ARABIC LETTER JEEM
-    0x062d: 0x00cd,	#  ARABIC LETTER HAH
-    0x062e: 0x00ce,	#  ARABIC LETTER KHAH
-    0x062f: 0x00cf,	#  ARABIC LETTER DAL
-    0x0630: 0x00d0,	#  ARABIC LETTER THAL
-    0x0631: 0x00d1,	#  ARABIC LETTER REH
-    0x0632: 0x00d2,	#  ARABIC LETTER ZAIN
-    0x0633: 0x00d3,	#  ARABIC LETTER SEEN
-    0x0634: 0x00d4,	#  ARABIC LETTER SHEEN
-    0x0635: 0x00d5,	#  ARABIC LETTER SAD
-    0x0636: 0x00d6,	#  ARABIC LETTER DAD
-    0x0637: 0x00d7,	#  ARABIC LETTER TAH
-    0x0638: 0x00d8,	#  ARABIC LETTER ZAH
-    0x0639: 0x00d9,	#  ARABIC LETTER AIN
-    0x063a: 0x00da,	#  ARABIC LETTER GHAIN
-    0x0640: 0x00e0,	#  ARABIC TATWEEL
-    0x0641: 0x00e1,	#  ARABIC LETTER FEH
-    0x0642: 0x00e2,	#  ARABIC LETTER QAF
-    0x0643: 0x00e3,	#  ARABIC LETTER KAF
-    0x0644: 0x00e4,	#  ARABIC LETTER LAM
-    0x0645: 0x00e5,	#  ARABIC LETTER MEEM
-    0x0646: 0x00e6,	#  ARABIC LETTER NOON
-    0x0647: 0x00e7,	#  ARABIC LETTER HEH
-    0x0648: 0x00e8,	#  ARABIC LETTER WAW
-    0x0649: 0x00e9,	#  ARABIC LETTER ALEF MAKSURA
-    0x064a: 0x00ea,	#  ARABIC LETTER YEH
-    0x064b: 0x00eb,	#  ARABIC FATHATAN
-    0x064c: 0x00ec,	#  ARABIC DAMMATAN
-    0x064d: 0x00ed,	#  ARABIC KASRATAN
-    0x064e: 0x00ee,	#  ARABIC FATHA
-    0x064f: 0x00ef,	#  ARABIC DAMMA
-    0x0650: 0x00f0,	#  ARABIC KASRA
-    0x0651: 0x00f1,	#  ARABIC SHADDA
-    0x0652: 0x00f2,	#  ARABIC SUKUN
-    0x0660: 0x00b0,	#  ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    0x0661: 0x00b1,	#  ARABIC-INDIC DIGIT ONE, right-left (need override)
-    0x0662: 0x00b2,	#  ARABIC-INDIC DIGIT TWO, right-left (need override)
-    0x0663: 0x00b3,	#  ARABIC-INDIC DIGIT THREE, right-left (need override)
-    0x0664: 0x00b4,	#  ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    0x0665: 0x00b5,	#  ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    0x0666: 0x00b6,	#  ARABIC-INDIC DIGIT SIX, right-left (need override)
-    0x0667: 0x00b7,	#  ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    0x0668: 0x00b8,	#  ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    0x0669: 0x00b9,	#  ARABIC-INDIC DIGIT NINE, right-left (need override)
-    0x066a: 0x00a5,	#  ARABIC PERCENT SIGN
-    0x0679: 0x00f4,	#  ARABIC LETTER TTEH
-    0x067e: 0x00f3,	#  ARABIC LETTER PEH
-    0x0686: 0x00f5,	#  ARABIC LETTER TCHEH
-    0x0688: 0x00f9,	#  ARABIC LETTER DDAL
-    0x0691: 0x00fa,	#  ARABIC LETTER RREH
-    0x0698: 0x00fe,	#  ARABIC LETTER JEH
-    0x06a4: 0x00f7,	#  ARABIC LETTER VEH
-    0x06af: 0x00f8,	#  ARABIC LETTER GAF
-    0x06ba: 0x008b,	#  ARABIC LETTER NOON GHUNNA
-    0x06d2: 0x00ff,	#  ARABIC LETTER YEH BARREE
-    0x06d5: 0x00f6,	#  ARABIC LETTER AE
-    0x2026: 0x0093,	#  HORIZONTAL ELLIPSIS, right-left
-    0x274a: 0x00c0,	#  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-}
\ No newline at end of file
+    0x0000: 0x0000,     #  CONTROL CHARACTER
+    0x0001: 0x0001,     #  CONTROL CHARACTER
+    0x0002: 0x0002,     #  CONTROL CHARACTER
+    0x0003: 0x0003,     #  CONTROL CHARACTER
+    0x0004: 0x0004,     #  CONTROL CHARACTER
+    0x0005: 0x0005,     #  CONTROL CHARACTER
+    0x0006: 0x0006,     #  CONTROL CHARACTER
+    0x0007: 0x0007,     #  CONTROL CHARACTER
+    0x0008: 0x0008,     #  CONTROL CHARACTER
+    0x0009: 0x0009,     #  CONTROL CHARACTER
+    0x000a: 0x000a,     #  CONTROL CHARACTER
+    0x000b: 0x000b,     #  CONTROL CHARACTER
+    0x000c: 0x000c,     #  CONTROL CHARACTER
+    0x000d: 0x000d,     #  CONTROL CHARACTER
+    0x000e: 0x000e,     #  CONTROL CHARACTER
+    0x000f: 0x000f,     #  CONTROL CHARACTER
+    0x0010: 0x0010,     #  CONTROL CHARACTER
+    0x0011: 0x0011,     #  CONTROL CHARACTER
+    0x0012: 0x0012,     #  CONTROL CHARACTER
+    0x0013: 0x0013,     #  CONTROL CHARACTER
+    0x0014: 0x0014,     #  CONTROL CHARACTER
+    0x0015: 0x0015,     #  CONTROL CHARACTER
+    0x0016: 0x0016,     #  CONTROL CHARACTER
+    0x0017: 0x0017,     #  CONTROL CHARACTER
+    0x0018: 0x0018,     #  CONTROL CHARACTER
+    0x0019: 0x0019,     #  CONTROL CHARACTER
+    0x001a: 0x001a,     #  CONTROL CHARACTER
+    0x001b: 0x001b,     #  CONTROL CHARACTER
+    0x001c: 0x001c,     #  CONTROL CHARACTER
+    0x001d: 0x001d,     #  CONTROL CHARACTER
+    0x001e: 0x001e,     #  CONTROL CHARACTER
+    0x001f: 0x001f,     #  CONTROL CHARACTER
+    0x0020: 0x0020,     #  SPACE, left-right
+    0x0020: 0x00a0,     #  SPACE, right-left
+    0x0021: 0x0021,     #  EXCLAMATION MARK, left-right
+    0x0021: 0x00a1,     #  EXCLAMATION MARK, right-left
+    0x0022: 0x0022,     #  QUOTATION MARK, left-right
+    0x0022: 0x00a2,     #  QUOTATION MARK, right-left
+    0x0023: 0x0023,     #  NUMBER SIGN, left-right
+    0x0023: 0x00a3,     #  NUMBER SIGN, right-left
+    0x0024: 0x0024,     #  DOLLAR SIGN, left-right
+    0x0024: 0x00a4,     #  DOLLAR SIGN, right-left
+    0x0025: 0x0025,     #  PERCENT SIGN, left-right
+    0x0026: 0x0026,     #  AMPERSAND, left-right
+    0x0026: 0x00a6,     #  AMPERSAND, right-left
+    0x0027: 0x0027,     #  APOSTROPHE, left-right
+    0x0027: 0x00a7,     #  APOSTROPHE, right-left
+    0x0028: 0x0028,     #  LEFT PARENTHESIS, left-right
+    0x0028: 0x00a8,     #  LEFT PARENTHESIS, right-left
+    0x0029: 0x0029,     #  RIGHT PARENTHESIS, left-right
+    0x0029: 0x00a9,     #  RIGHT PARENTHESIS, right-left
+    0x002a: 0x002a,     #  ASTERISK, left-right
+    0x002a: 0x00aa,     #  ASTERISK, right-left
+    0x002b: 0x002b,     #  PLUS SIGN, left-right
+    0x002b: 0x00ab,     #  PLUS SIGN, right-left
+    0x002c: 0x002c,     #  COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
+    0x002d: 0x002d,     #  HYPHEN-MINUS, left-right
+    0x002d: 0x00ad,     #  HYPHEN-MINUS, right-left
+    0x002e: 0x002e,     #  FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
+    0x002e: 0x00ae,     #  FULL STOP, right-left
+    0x002f: 0x002f,     #  SOLIDUS, left-right
+    0x002f: 0x00af,     #  SOLIDUS, right-left
+    0x0030: 0x0030,     #  DIGIT ZERO;  in Arabic-script context, displayed as 0x0660 ARABIC-INDIC DIGIT ZERO
+    0x0031: 0x0031,     #  DIGIT ONE;   in Arabic-script context, displayed as 0x0661 ARABIC-INDIC DIGIT ONE
+    0x0032: 0x0032,     #  DIGIT TWO;   in Arabic-script context, displayed as 0x0662 ARABIC-INDIC DIGIT TWO
+    0x0033: 0x0033,     #  DIGIT THREE; in Arabic-script context, displayed as 0x0663 ARABIC-INDIC DIGIT THREE
+    0x0034: 0x0034,     #  DIGIT FOUR;  in Arabic-script context, displayed as 0x0664 ARABIC-INDIC DIGIT FOUR
+    0x0035: 0x0035,     #  DIGIT FIVE;  in Arabic-script context, displayed as 0x0665 ARABIC-INDIC DIGIT FIVE
+    0x0036: 0x0036,     #  DIGIT SIX;   in Arabic-script context, displayed as 0x0666 ARABIC-INDIC DIGIT SIX
+    0x0037: 0x0037,     #  DIGIT SEVEN; in Arabic-script context, displayed as 0x0667 ARABIC-INDIC DIGIT SEVEN
+    0x0038: 0x0038,     #  DIGIT EIGHT; in Arabic-script context, displayed as 0x0668 ARABIC-INDIC DIGIT EIGHT
+    0x0039: 0x0039,     #  DIGIT NINE;  in Arabic-script context, displayed as 0x0669 ARABIC-INDIC DIGIT NINE
+    0x003a: 0x003a,     #  COLON, left-right
+    0x003a: 0x00ba,     #  COLON, right-left
+    0x003b: 0x003b,     #  SEMICOLON, left-right
+    0x003c: 0x003c,     #  LESS-THAN SIGN, left-right
+    0x003c: 0x00bc,     #  LESS-THAN SIGN, right-left
+    0x003d: 0x003d,     #  EQUALS SIGN, left-right
+    0x003d: 0x00bd,     #  EQUALS SIGN, right-left
+    0x003e: 0x003e,     #  GREATER-THAN SIGN, left-right
+    0x003e: 0x00be,     #  GREATER-THAN SIGN, right-left
+    0x003f: 0x003f,     #  QUESTION MARK, left-right
+    0x0040: 0x0040,     #  COMMERCIAL AT
+    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
+    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
+    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
+    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
+    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
+    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
+    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
+    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
+    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
+    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
+    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
+    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
+    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
+    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
+    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
+    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
+    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
+    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
+    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
+    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
+    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
+    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
+    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
+    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
+    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
+    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
+    0x005b: 0x005b,     #  LEFT SQUARE BRACKET, left-right
+    0x005b: 0x00db,     #  LEFT SQUARE BRACKET, right-left
+    0x005c: 0x005c,     #  REVERSE SOLIDUS, left-right
+    0x005c: 0x00dc,     #  REVERSE SOLIDUS, right-left
+    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET, left-right
+    0x005d: 0x00dd,     #  RIGHT SQUARE BRACKET, right-left
+    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT, left-right
+    0x005e: 0x00de,     #  CIRCUMFLEX ACCENT, right-left
+    0x005f: 0x005f,     #  LOW LINE, left-right
+    0x005f: 0x00df,     #  LOW LINE, right-left
+    0x0060: 0x0060,     #  GRAVE ACCENT
+    0x0061: 0x0061,     #  LATIN SMALL LETTER A
+    0x0062: 0x0062,     #  LATIN SMALL LETTER B
+    0x0063: 0x0063,     #  LATIN SMALL LETTER C
+    0x0064: 0x0064,     #  LATIN SMALL LETTER D
+    0x0065: 0x0065,     #  LATIN SMALL LETTER E
+    0x0066: 0x0066,     #  LATIN SMALL LETTER F
+    0x0067: 0x0067,     #  LATIN SMALL LETTER G
+    0x0068: 0x0068,     #  LATIN SMALL LETTER H
+    0x0069: 0x0069,     #  LATIN SMALL LETTER I
+    0x006a: 0x006a,     #  LATIN SMALL LETTER J
+    0x006b: 0x006b,     #  LATIN SMALL LETTER K
+    0x006c: 0x006c,     #  LATIN SMALL LETTER L
+    0x006d: 0x006d,     #  LATIN SMALL LETTER M
+    0x006e: 0x006e,     #  LATIN SMALL LETTER N
+    0x006f: 0x006f,     #  LATIN SMALL LETTER O
+    0x0070: 0x0070,     #  LATIN SMALL LETTER P
+    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
+    0x0072: 0x0072,     #  LATIN SMALL LETTER R
+    0x0073: 0x0073,     #  LATIN SMALL LETTER S
+    0x0074: 0x0074,     #  LATIN SMALL LETTER T
+    0x0075: 0x0075,     #  LATIN SMALL LETTER U
+    0x0076: 0x0076,     #  LATIN SMALL LETTER V
+    0x0077: 0x0077,     #  LATIN SMALL LETTER W
+    0x0078: 0x0078,     #  LATIN SMALL LETTER X
+    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
+    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
+    0x007b: 0x007b,     #  LEFT CURLY BRACKET, left-right
+    0x007b: 0x00fb,     #  LEFT CURLY BRACKET, right-left
+    0x007c: 0x007c,     #  VERTICAL LINE, left-right
+    0x007c: 0x00fc,     #  VERTICAL LINE, right-left
+    0x007d: 0x007d,     #  RIGHT CURLY BRACKET, left-right
+    0x007d: 0x00fd,     #  RIGHT CURLY BRACKET, right-left
+    0x007e: 0x007e,     #  TILDE
+    0x007f: 0x007f,     #  CONTROL CHARACTER
+    0x00a0: 0x0081,     #  NO-BREAK SPACE, right-left
+    0x00ab: 0x008c,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    0x00bb: 0x0098,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    0x00c4: 0x0080,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00c7: 0x0082,     #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00c9: 0x0083,     #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00d1: 0x0084,     #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00d6: 0x0085,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00dc: 0x0086,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00e0: 0x0088,     #  LATIN SMALL LETTER A WITH GRAVE
+    0x00e1: 0x0087,     #  LATIN SMALL LETTER A WITH ACUTE
+    0x00e2: 0x0089,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00e4: 0x008a,     #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00e7: 0x008d,     #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00e8: 0x008f,     #  LATIN SMALL LETTER E WITH GRAVE
+    0x00e9: 0x008e,     #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ea: 0x0090,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00eb: 0x0091,     #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ed: 0x0092,     #  LATIN SMALL LETTER I WITH ACUTE
+    0x00ee: 0x0094,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00ef: 0x0095,     #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00f1: 0x0096,     #  LATIN SMALL LETTER N WITH TILDE
+    0x00f3: 0x0097,     #  LATIN SMALL LETTER O WITH ACUTE
+    0x00f4: 0x0099,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00f6: 0x009a,     #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00f7: 0x009b,     #  DIVISION SIGN, right-left
+    0x00f9: 0x009d,     #  LATIN SMALL LETTER U WITH GRAVE
+    0x00fa: 0x009c,     #  LATIN SMALL LETTER U WITH ACUTE
+    0x00fb: 0x009e,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00fc: 0x009f,     #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x060c: 0x00ac,     #  ARABIC COMMA
+    0x061b: 0x00bb,     #  ARABIC SEMICOLON
+    0x061f: 0x00bf,     #  ARABIC QUESTION MARK
+    0x0621: 0x00c1,     #  ARABIC LETTER HAMZA
+    0x0622: 0x00c2,     #  ARABIC LETTER ALEF WITH MADDA ABOVE
+    0x0623: 0x00c3,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE
+    0x0624: 0x00c4,     #  ARABIC LETTER WAW WITH HAMZA ABOVE
+    0x0625: 0x00c5,     #  ARABIC LETTER ALEF WITH HAMZA BELOW
+    0x0626: 0x00c6,     #  ARABIC LETTER YEH WITH HAMZA ABOVE
+    0x0627: 0x00c7,     #  ARABIC LETTER ALEF
+    0x0628: 0x00c8,     #  ARABIC LETTER BEH
+    0x0629: 0x00c9,     #  ARABIC LETTER TEH MARBUTA
+    0x062a: 0x00ca,     #  ARABIC LETTER TEH
+    0x062b: 0x00cb,     #  ARABIC LETTER THEH
+    0x062c: 0x00cc,     #  ARABIC LETTER JEEM
+    0x062d: 0x00cd,     #  ARABIC LETTER HAH
+    0x062e: 0x00ce,     #  ARABIC LETTER KHAH
+    0x062f: 0x00cf,     #  ARABIC LETTER DAL
+    0x0630: 0x00d0,     #  ARABIC LETTER THAL
+    0x0631: 0x00d1,     #  ARABIC LETTER REH
+    0x0632: 0x00d2,     #  ARABIC LETTER ZAIN
+    0x0633: 0x00d3,     #  ARABIC LETTER SEEN
+    0x0634: 0x00d4,     #  ARABIC LETTER SHEEN
+    0x0635: 0x00d5,     #  ARABIC LETTER SAD
+    0x0636: 0x00d6,     #  ARABIC LETTER DAD
+    0x0637: 0x00d7,     #  ARABIC LETTER TAH
+    0x0638: 0x00d8,     #  ARABIC LETTER ZAH
+    0x0639: 0x00d9,     #  ARABIC LETTER AIN
+    0x063a: 0x00da,     #  ARABIC LETTER GHAIN
+    0x0640: 0x00e0,     #  ARABIC TATWEEL
+    0x0641: 0x00e1,     #  ARABIC LETTER FEH
+    0x0642: 0x00e2,     #  ARABIC LETTER QAF
+    0x0643: 0x00e3,     #  ARABIC LETTER KAF
+    0x0644: 0x00e4,     #  ARABIC LETTER LAM
+    0x0645: 0x00e5,     #  ARABIC LETTER MEEM
+    0x0646: 0x00e6,     #  ARABIC LETTER NOON
+    0x0647: 0x00e7,     #  ARABIC LETTER HEH
+    0x0648: 0x00e8,     #  ARABIC LETTER WAW
+    0x0649: 0x00e9,     #  ARABIC LETTER ALEF MAKSURA
+    0x064a: 0x00ea,     #  ARABIC LETTER YEH
+    0x064b: 0x00eb,     #  ARABIC FATHATAN
+    0x064c: 0x00ec,     #  ARABIC DAMMATAN
+    0x064d: 0x00ed,     #  ARABIC KASRATAN
+    0x064e: 0x00ee,     #  ARABIC FATHA
+    0x064f: 0x00ef,     #  ARABIC DAMMA
+    0x0650: 0x00f0,     #  ARABIC KASRA
+    0x0651: 0x00f1,     #  ARABIC SHADDA
+    0x0652: 0x00f2,     #  ARABIC SUKUN
+    0x0660: 0x00b0,     #  ARABIC-INDIC DIGIT ZERO, right-left (need override)
+    0x0661: 0x00b1,     #  ARABIC-INDIC DIGIT ONE, right-left (need override)
+    0x0662: 0x00b2,     #  ARABIC-INDIC DIGIT TWO, right-left (need override)
+    0x0663: 0x00b3,     #  ARABIC-INDIC DIGIT THREE, right-left (need override)
+    0x0664: 0x00b4,     #  ARABIC-INDIC DIGIT FOUR, right-left (need override)
+    0x0665: 0x00b5,     #  ARABIC-INDIC DIGIT FIVE, right-left (need override)
+    0x0666: 0x00b6,     #  ARABIC-INDIC DIGIT SIX, right-left (need override)
+    0x0667: 0x00b7,     #  ARABIC-INDIC DIGIT SEVEN, right-left (need override)
+    0x0668: 0x00b8,     #  ARABIC-INDIC DIGIT EIGHT, right-left (need override)
+    0x0669: 0x00b9,     #  ARABIC-INDIC DIGIT NINE, right-left (need override)
+    0x066a: 0x00a5,     #  ARABIC PERCENT SIGN
+    0x0679: 0x00f4,     #  ARABIC LETTER TTEH
+    0x067e: 0x00f3,     #  ARABIC LETTER PEH
+    0x0686: 0x00f5,     #  ARABIC LETTER TCHEH
+    0x0688: 0x00f9,     #  ARABIC LETTER DDAL
+    0x0691: 0x00fa,     #  ARABIC LETTER RREH
+    0x0698: 0x00fe,     #  ARABIC LETTER JEH
+    0x06a4: 0x00f7,     #  ARABIC LETTER VEH
+    0x06af: 0x00f8,     #  ARABIC LETTER GAF
+    0x06ba: 0x008b,     #  ARABIC LETTER NOON GHUNNA
+    0x06d2: 0x00ff,     #  ARABIC LETTER YEH BARREE
+    0x06d5: 0x00f6,     #  ARABIC LETTER AE
+    0x2026: 0x0093,     #  HORIZONTAL ELLIPSIS, right-left
+    0x274a: 0x00c0,     #  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
+}

Modified: python/trunk/Lib/encodings/mac_centeuro.py
==============================================================================
--- python/trunk/Lib/encodings/mac_centeuro.py	(original)
+++ python/trunk/Lib/encodings/mac_centeuro.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> CONTROL CHARACTER
-    u'\x01'	#  0x01 -> CONTROL CHARACTER
-    u'\x02'	#  0x02 -> CONTROL CHARACTER
-    u'\x03'	#  0x03 -> CONTROL CHARACTER
-    u'\x04'	#  0x04 -> CONTROL CHARACTER
-    u'\x05'	#  0x05 -> CONTROL CHARACTER
-    u'\x06'	#  0x06 -> CONTROL CHARACTER
-    u'\x07'	#  0x07 -> CONTROL CHARACTER
-    u'\x08'	#  0x08 -> CONTROL CHARACTER
-    u'\t'	#  0x09 -> CONTROL CHARACTER
-    u'\n'	#  0x0A -> CONTROL CHARACTER
-    u'\x0b'	#  0x0B -> CONTROL CHARACTER
-    u'\x0c'	#  0x0C -> CONTROL CHARACTER
-    u'\r'	#  0x0D -> CONTROL CHARACTER
-    u'\x0e'	#  0x0E -> CONTROL CHARACTER
-    u'\x0f'	#  0x0F -> CONTROL CHARACTER
-    u'\x10'	#  0x10 -> CONTROL CHARACTER
-    u'\x11'	#  0x11 -> CONTROL CHARACTER
-    u'\x12'	#  0x12 -> CONTROL CHARACTER
-    u'\x13'	#  0x13 -> CONTROL CHARACTER
-    u'\x14'	#  0x14 -> CONTROL CHARACTER
-    u'\x15'	#  0x15 -> CONTROL CHARACTER
-    u'\x16'	#  0x16 -> CONTROL CHARACTER
-    u'\x17'	#  0x17 -> CONTROL CHARACTER
-    u'\x18'	#  0x18 -> CONTROL CHARACTER
-    u'\x19'	#  0x19 -> CONTROL CHARACTER
-    u'\x1a'	#  0x1A -> CONTROL CHARACTER
-    u'\x1b'	#  0x1B -> CONTROL CHARACTER
-    u'\x1c'	#  0x1C -> CONTROL CHARACTER
-    u'\x1d'	#  0x1D -> CONTROL CHARACTER
-    u'\x1e'	#  0x1E -> CONTROL CHARACTER
-    u'\x1f'	#  0x1F -> CONTROL CHARACTER
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> CONTROL CHARACTER
-    u'\xc4'	#  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0100'	#  0x81 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u0101'	#  0x82 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xc9'	#  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0104'	#  0x84 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\xd6'	#  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'	#  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\u0105'	#  0x88 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u010c'	#  0x89 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xe4'	#  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u010d'	#  0x8B -> LATIN SMALL LETTER C WITH CARON
-    u'\u0106'	#  0x8C -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\u0107'	#  0x8D -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe9'	#  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0179'	#  0x8F -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\u017a'	#  0x90 -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u010e'	#  0x91 -> LATIN CAPITAL LETTER D WITH CARON
-    u'\xed'	#  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\u010f'	#  0x93 -> LATIN SMALL LETTER D WITH CARON
-    u'\u0112'	#  0x94 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0113'	#  0x95 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0116'	#  0x96 -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\xf3'	#  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u0117'	#  0x98 -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\xf4'	#  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'	#  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'	#  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u011a'	#  0x9D -> LATIN CAPITAL LETTER E WITH CARON
-    u'\u011b'	#  0x9E -> LATIN SMALL LETTER E WITH CARON
-    u'\xfc'	#  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'	#  0xA0 -> DAGGER
-    u'\xb0'	#  0xA1 -> DEGREE SIGN
-    u'\u0118'	#  0xA2 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa7'	#  0xA4 -> SECTION SIGN
-    u'\u2022'	#  0xA5 -> BULLET
-    u'\xb6'	#  0xA6 -> PILCROW SIGN
-    u'\xdf'	#  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'	#  0xA8 -> REGISTERED SIGN
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'	#  0xAA -> TRADE MARK SIGN
-    u'\u0119'	#  0xAB -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xa8'	#  0xAC -> DIAERESIS
-    u'\u2260'	#  0xAD -> NOT EQUAL TO
-    u'\u0123'	#  0xAE -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u012e'	#  0xAF -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u012f'	#  0xB0 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u012a'	#  0xB1 -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u2264'	#  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\u012b'	#  0xB4 -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0136'	#  0xB5 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u2202'	#  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'	#  0xB7 -> N-ARY SUMMATION
-    u'\u0142'	#  0xB8 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u013b'	#  0xB9 -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u013c'	#  0xBA -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u013d'	#  0xBB -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u013e'	#  0xBC -> LATIN SMALL LETTER L WITH CARON
-    u'\u0139'	#  0xBD -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u013a'	#  0xBE -> LATIN SMALL LETTER L WITH ACUTE
-    u'\u0145'	#  0xBF -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u0146'	#  0xC0 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u0143'	#  0xC1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\xac'	#  0xC2 -> NOT SIGN
-    u'\u221a'	#  0xC3 -> SQUARE ROOT
-    u'\u0144'	#  0xC4 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0147'	#  0xC5 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\u2206'	#  0xC6 -> INCREMENT
-    u'\xab'	#  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'	#  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'	#  0xCA -> NO-BREAK SPACE
-    u'\u0148'	#  0xCB -> LATIN SMALL LETTER N WITH CARON
-    u'\u0150'	#  0xCC -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd5'	#  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0151'	#  0xCE -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\u014c'	#  0xCF -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\u2013'	#  0xD0 -> EN DASH
-    u'\u2014'	#  0xD1 -> EM DASH
-    u'\u201c'	#  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'	#  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'	#  0xD6 -> DIVISION SIGN
-    u'\u25ca'	#  0xD7 -> LOZENGE
-    u'\u014d'	#  0xD8 -> LATIN SMALL LETTER O WITH MACRON
-    u'\u0154'	#  0xD9 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\u0155'	#  0xDA -> LATIN SMALL LETTER R WITH ACUTE
-    u'\u0158'	#  0xDB -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u2039'	#  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'	#  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0159'	#  0xDE -> LATIN SMALL LETTER R WITH CARON
-    u'\u0156'	#  0xDF -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\u0157'	#  0xE0 -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\u0160'	#  0xE1 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u201a'	#  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'	#  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u0161'	#  0xE4 -> LATIN SMALL LETTER S WITH CARON
-    u'\u015a'	#  0xE5 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u015b'	#  0xE6 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\xc1'	#  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\u0164'	#  0xE8 -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u0165'	#  0xE9 -> LATIN SMALL LETTER T WITH CARON
-    u'\xcd'	#  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\u017d'	#  0xEB -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u017e'	#  0xEC -> LATIN SMALL LETTER Z WITH CARON
-    u'\u016a'	#  0xED -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u016b'	#  0xF0 -> LATIN SMALL LETTER U WITH MACRON
-    u'\u016e'	#  0xF1 -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\xda'	#  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u016f'	#  0xF3 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\u0170'	#  0xF4 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\u0171'	#  0xF5 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\u0172'	#  0xF6 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u0173'	#  0xF7 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\xdd'	#  0xF8 -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xfd'	#  0xF9 -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0137'	#  0xFA -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u017b'	#  0xFB -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u0141'	#  0xFC -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u017c'	#  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u0122'	#  0xFE -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u02c7'	#  0xFF -> CARON
+    u'\x00'     #  0x00 -> CONTROL CHARACTER
+    u'\x01'     #  0x01 -> CONTROL CHARACTER
+    u'\x02'     #  0x02 -> CONTROL CHARACTER
+    u'\x03'     #  0x03 -> CONTROL CHARACTER
+    u'\x04'     #  0x04 -> CONTROL CHARACTER
+    u'\x05'     #  0x05 -> CONTROL CHARACTER
+    u'\x06'     #  0x06 -> CONTROL CHARACTER
+    u'\x07'     #  0x07 -> CONTROL CHARACTER
+    u'\x08'     #  0x08 -> CONTROL CHARACTER
+    u'\t'       #  0x09 -> CONTROL CHARACTER
+    u'\n'       #  0x0A -> CONTROL CHARACTER
+    u'\x0b'     #  0x0B -> CONTROL CHARACTER
+    u'\x0c'     #  0x0C -> CONTROL CHARACTER
+    u'\r'       #  0x0D -> CONTROL CHARACTER
+    u'\x0e'     #  0x0E -> CONTROL CHARACTER
+    u'\x0f'     #  0x0F -> CONTROL CHARACTER
+    u'\x10'     #  0x10 -> CONTROL CHARACTER
+    u'\x11'     #  0x11 -> CONTROL CHARACTER
+    u'\x12'     #  0x12 -> CONTROL CHARACTER
+    u'\x13'     #  0x13 -> CONTROL CHARACTER
+    u'\x14'     #  0x14 -> CONTROL CHARACTER
+    u'\x15'     #  0x15 -> CONTROL CHARACTER
+    u'\x16'     #  0x16 -> CONTROL CHARACTER
+    u'\x17'     #  0x17 -> CONTROL CHARACTER
+    u'\x18'     #  0x18 -> CONTROL CHARACTER
+    u'\x19'     #  0x19 -> CONTROL CHARACTER
+    u'\x1a'     #  0x1A -> CONTROL CHARACTER
+    u'\x1b'     #  0x1B -> CONTROL CHARACTER
+    u'\x1c'     #  0x1C -> CONTROL CHARACTER
+    u'\x1d'     #  0x1D -> CONTROL CHARACTER
+    u'\x1e'     #  0x1E -> CONTROL CHARACTER
+    u'\x1f'     #  0x1F -> CONTROL CHARACTER
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> CONTROL CHARACTER
+    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\u0100'   #  0x81 -> LATIN CAPITAL LETTER A WITH MACRON
+    u'\u0101'   #  0x82 -> LATIN SMALL LETTER A WITH MACRON
+    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\u0104'   #  0x84 -> LATIN CAPITAL LETTER A WITH OGONEK
+    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\u0105'   #  0x88 -> LATIN SMALL LETTER A WITH OGONEK
+    u'\u010c'   #  0x89 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u010d'   #  0x8B -> LATIN SMALL LETTER C WITH CARON
+    u'\u0106'   #  0x8C -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\u0107'   #  0x8D -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\u0179'   #  0x8F -> LATIN CAPITAL LETTER Z WITH ACUTE
+    u'\u017a'   #  0x90 -> LATIN SMALL LETTER Z WITH ACUTE
+    u'\u010e'   #  0x91 -> LATIN CAPITAL LETTER D WITH CARON
+    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\u010f'   #  0x93 -> LATIN SMALL LETTER D WITH CARON
+    u'\u0112'   #  0x94 -> LATIN CAPITAL LETTER E WITH MACRON
+    u'\u0113'   #  0x95 -> LATIN SMALL LETTER E WITH MACRON
+    u'\u0116'   #  0x96 -> LATIN CAPITAL LETTER E WITH DOT ABOVE
+    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\u0117'   #  0x98 -> LATIN SMALL LETTER E WITH DOT ABOVE
+    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\u011a'   #  0x9D -> LATIN CAPITAL LETTER E WITH CARON
+    u'\u011b'   #  0x9E -> LATIN SMALL LETTER E WITH CARON
+    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'   #  0xA0 -> DAGGER
+    u'\xb0'     #  0xA1 -> DEGREE SIGN
+    u'\u0118'   #  0xA2 -> LATIN CAPITAL LETTER E WITH OGONEK
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa7'     #  0xA4 -> SECTION SIGN
+    u'\u2022'   #  0xA5 -> BULLET
+    u'\xb6'     #  0xA6 -> PILCROW SIGN
+    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'     #  0xA8 -> REGISTERED SIGN
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'   #  0xAA -> TRADE MARK SIGN
+    u'\u0119'   #  0xAB -> LATIN SMALL LETTER E WITH OGONEK
+    u'\xa8'     #  0xAC -> DIAERESIS
+    u'\u2260'   #  0xAD -> NOT EQUAL TO
+    u'\u0123'   #  0xAE -> LATIN SMALL LETTER G WITH CEDILLA
+    u'\u012e'   #  0xAF -> LATIN CAPITAL LETTER I WITH OGONEK
+    u'\u012f'   #  0xB0 -> LATIN SMALL LETTER I WITH OGONEK
+    u'\u012a'   #  0xB1 -> LATIN CAPITAL LETTER I WITH MACRON
+    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\u012b'   #  0xB4 -> LATIN SMALL LETTER I WITH MACRON
+    u'\u0136'   #  0xB5 -> LATIN CAPITAL LETTER K WITH CEDILLA
+    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
+    u'\u0142'   #  0xB8 -> LATIN SMALL LETTER L WITH STROKE
+    u'\u013b'   #  0xB9 -> LATIN CAPITAL LETTER L WITH CEDILLA
+    u'\u013c'   #  0xBA -> LATIN SMALL LETTER L WITH CEDILLA
+    u'\u013d'   #  0xBB -> LATIN CAPITAL LETTER L WITH CARON
+    u'\u013e'   #  0xBC -> LATIN SMALL LETTER L WITH CARON
+    u'\u0139'   #  0xBD -> LATIN CAPITAL LETTER L WITH ACUTE
+    u'\u013a'   #  0xBE -> LATIN SMALL LETTER L WITH ACUTE
+    u'\u0145'   #  0xBF -> LATIN CAPITAL LETTER N WITH CEDILLA
+    u'\u0146'   #  0xC0 -> LATIN SMALL LETTER N WITH CEDILLA
+    u'\u0143'   #  0xC1 -> LATIN CAPITAL LETTER N WITH ACUTE
+    u'\xac'     #  0xC2 -> NOT SIGN
+    u'\u221a'   #  0xC3 -> SQUARE ROOT
+    u'\u0144'   #  0xC4 -> LATIN SMALL LETTER N WITH ACUTE
+    u'\u0147'   #  0xC5 -> LATIN CAPITAL LETTER N WITH CARON
+    u'\u2206'   #  0xC6 -> INCREMENT
+    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'     #  0xCA -> NO-BREAK SPACE
+    u'\u0148'   #  0xCB -> LATIN SMALL LETTER N WITH CARON
+    u'\u0150'   #  0xCC -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0151'   #  0xCE -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    u'\u014c'   #  0xCF -> LATIN CAPITAL LETTER O WITH MACRON
+    u'\u2013'   #  0xD0 -> EN DASH
+    u'\u2014'   #  0xD1 -> EM DASH
+    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'     #  0xD6 -> DIVISION SIGN
+    u'\u25ca'   #  0xD7 -> LOZENGE
+    u'\u014d'   #  0xD8 -> LATIN SMALL LETTER O WITH MACRON
+    u'\u0154'   #  0xD9 -> LATIN CAPITAL LETTER R WITH ACUTE
+    u'\u0155'   #  0xDA -> LATIN SMALL LETTER R WITH ACUTE
+    u'\u0158'   #  0xDB -> LATIN CAPITAL LETTER R WITH CARON
+    u'\u2039'   #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u203a'   #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u0159'   #  0xDE -> LATIN SMALL LETTER R WITH CARON
+    u'\u0156'   #  0xDF -> LATIN CAPITAL LETTER R WITH CEDILLA
+    u'\u0157'   #  0xE0 -> LATIN SMALL LETTER R WITH CEDILLA
+    u'\u0160'   #  0xE1 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u0161'   #  0xE4 -> LATIN SMALL LETTER S WITH CARON
+    u'\u015a'   #  0xE5 -> LATIN CAPITAL LETTER S WITH ACUTE
+    u'\u015b'   #  0xE6 -> LATIN SMALL LETTER S WITH ACUTE
+    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\u0164'   #  0xE8 -> LATIN CAPITAL LETTER T WITH CARON
+    u'\u0165'   #  0xE9 -> LATIN SMALL LETTER T WITH CARON
+    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\u017d'   #  0xEB -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\u017e'   #  0xEC -> LATIN SMALL LETTER Z WITH CARON
+    u'\u016a'   #  0xED -> LATIN CAPITAL LETTER U WITH MACRON
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u016b'   #  0xF0 -> LATIN SMALL LETTER U WITH MACRON
+    u'\u016e'   #  0xF1 -> LATIN CAPITAL LETTER U WITH RING ABOVE
+    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\u016f'   #  0xF3 -> LATIN SMALL LETTER U WITH RING ABOVE
+    u'\u0170'   #  0xF4 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    u'\u0171'   #  0xF5 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    u'\u0172'   #  0xF6 -> LATIN CAPITAL LETTER U WITH OGONEK
+    u'\u0173'   #  0xF7 -> LATIN SMALL LETTER U WITH OGONEK
+    u'\xdd'     #  0xF8 -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xfd'     #  0xF9 -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\u0137'   #  0xFA -> LATIN SMALL LETTER K WITH CEDILLA
+    u'\u017b'   #  0xFB -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    u'\u0141'   #  0xFC -> LATIN CAPITAL LETTER L WITH STROKE
+    u'\u017c'   #  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
+    u'\u0122'   #  0xFE -> LATIN CAPITAL LETTER G WITH CEDILLA
+    u'\u02c7'   #  0xFF -> CARON
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  CONTROL CHARACTER
-    0x0001: 0x01,	#  CONTROL CHARACTER
-    0x0002: 0x02,	#  CONTROL CHARACTER
-    0x0003: 0x03,	#  CONTROL CHARACTER
-    0x0004: 0x04,	#  CONTROL CHARACTER
-    0x0005: 0x05,	#  CONTROL CHARACTER
-    0x0006: 0x06,	#  CONTROL CHARACTER
-    0x0007: 0x07,	#  CONTROL CHARACTER
-    0x0008: 0x08,	#  CONTROL CHARACTER
-    0x0009: 0x09,	#  CONTROL CHARACTER
-    0x000A: 0x0A,	#  CONTROL CHARACTER
-    0x000B: 0x0B,	#  CONTROL CHARACTER
-    0x000C: 0x0C,	#  CONTROL CHARACTER
-    0x000D: 0x0D,	#  CONTROL CHARACTER
-    0x000E: 0x0E,	#  CONTROL CHARACTER
-    0x000F: 0x0F,	#  CONTROL CHARACTER
-    0x0010: 0x10,	#  CONTROL CHARACTER
-    0x0011: 0x11,	#  CONTROL CHARACTER
-    0x0012: 0x12,	#  CONTROL CHARACTER
-    0x0013: 0x13,	#  CONTROL CHARACTER
-    0x0014: 0x14,	#  CONTROL CHARACTER
-    0x0015: 0x15,	#  CONTROL CHARACTER
-    0x0016: 0x16,	#  CONTROL CHARACTER
-    0x0017: 0x17,	#  CONTROL CHARACTER
-    0x0018: 0x18,	#  CONTROL CHARACTER
-    0x0019: 0x19,	#  CONTROL CHARACTER
-    0x001A: 0x1A,	#  CONTROL CHARACTER
-    0x001B: 0x1B,	#  CONTROL CHARACTER
-    0x001C: 0x1C,	#  CONTROL CHARACTER
-    0x001D: 0x1D,	#  CONTROL CHARACTER
-    0x001E: 0x1E,	#  CONTROL CHARACTER
-    0x001F: 0x1F,	#  CONTROL CHARACTER
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  CONTROL CHARACTER
-    0x00A0: 0xCA,	#  NO-BREAK SPACE
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A7: 0xA4,	#  SECTION SIGN
-    0x00A8: 0xAC,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xC7,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xC2,	#  NOT SIGN
-    0x00AE: 0xA8,	#  REGISTERED SIGN
-    0x00B0: 0xA1,	#  DEGREE SIGN
-    0x00B6: 0xA6,	#  PILCROW SIGN
-    0x00BB: 0xC8,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00C1: 0xE7,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C4: 0x80,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C9: 0x83,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CD: 0xEA,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEF,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xCD,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0x85,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00DA: 0xF2,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DC: 0x86,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xF8,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DF: 0xA7,	#  LATIN SMALL LETTER SHARP S
-    0x00E1: 0x87,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E4: 0x8A,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E9: 0x8E,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00ED: 0x92,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00F3: 0x97,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0x99,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0x9B,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0x9A,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xD6,	#  DIVISION SIGN
-    0x00FA: 0x9C,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FC: 0x9F,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0xF9,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x0100: 0x81,	#  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0x82,	#  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0x84,	#  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0x88,	#  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0x8C,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0x8D,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x010C: 0x89,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010D: 0x8B,	#  LATIN SMALL LETTER C WITH CARON
-    0x010E: 0x91,	#  LATIN CAPITAL LETTER D WITH CARON
-    0x010F: 0x93,	#  LATIN SMALL LETTER D WITH CARON
-    0x0112: 0x94,	#  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0x95,	#  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0x96,	#  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0x98,	#  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0xA2,	#  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0xAB,	#  LATIN SMALL LETTER E WITH OGONEK
-    0x011A: 0x9D,	#  LATIN CAPITAL LETTER E WITH CARON
-    0x011B: 0x9E,	#  LATIN SMALL LETTER E WITH CARON
-    0x0122: 0xFE,	#  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0xAE,	#  LATIN SMALL LETTER G WITH CEDILLA
-    0x012A: 0xB1,	#  LATIN CAPITAL LETTER I WITH MACRON
-    0x012B: 0xB4,	#  LATIN SMALL LETTER I WITH MACRON
-    0x012E: 0xAF,	#  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012F: 0xB0,	#  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0xB5,	#  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0xFA,	#  LATIN SMALL LETTER K WITH CEDILLA
-    0x0139: 0xBD,	#  LATIN CAPITAL LETTER L WITH ACUTE
-    0x013A: 0xBE,	#  LATIN SMALL LETTER L WITH ACUTE
-    0x013B: 0xB9,	#  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013C: 0xBA,	#  LATIN SMALL LETTER L WITH CEDILLA
-    0x013D: 0xBB,	#  LATIN CAPITAL LETTER L WITH CARON
-    0x013E: 0xBC,	#  LATIN SMALL LETTER L WITH CARON
-    0x0141: 0xFC,	#  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0xB8,	#  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0xC1,	#  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0xC4,	#  LATIN SMALL LETTER N WITH ACUTE
-    0x0145: 0xBF,	#  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0xC0,	#  LATIN SMALL LETTER N WITH CEDILLA
-    0x0147: 0xC5,	#  LATIN CAPITAL LETTER N WITH CARON
-    0x0148: 0xCB,	#  LATIN SMALL LETTER N WITH CARON
-    0x014C: 0xCF,	#  LATIN CAPITAL LETTER O WITH MACRON
-    0x014D: 0xD8,	#  LATIN SMALL LETTER O WITH MACRON
-    0x0150: 0xCC,	#  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0xCE,	#  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0154: 0xD9,	#  LATIN CAPITAL LETTER R WITH ACUTE
-    0x0155: 0xDA,	#  LATIN SMALL LETTER R WITH ACUTE
-    0x0156: 0xDF,	#  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0xE0,	#  LATIN SMALL LETTER R WITH CEDILLA
-    0x0158: 0xDB,	#  LATIN CAPITAL LETTER R WITH CARON
-    0x0159: 0xDE,	#  LATIN SMALL LETTER R WITH CARON
-    0x015A: 0xE5,	#  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015B: 0xE6,	#  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0xE1,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xE4,	#  LATIN SMALL LETTER S WITH CARON
-    0x0164: 0xE8,	#  LATIN CAPITAL LETTER T WITH CARON
-    0x0165: 0xE9,	#  LATIN SMALL LETTER T WITH CARON
-    0x016A: 0xED,	#  LATIN CAPITAL LETTER U WITH MACRON
-    0x016B: 0xF0,	#  LATIN SMALL LETTER U WITH MACRON
-    0x016E: 0xF1,	#  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x016F: 0xF3,	#  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0170: 0xF4,	#  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0xF5,	#  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0172: 0xF6,	#  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0xF7,	#  LATIN SMALL LETTER U WITH OGONEK
-    0x0179: 0x8F,	#  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017A: 0x90,	#  LATIN SMALL LETTER Z WITH ACUTE
-    0x017B: 0xFB,	#  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017C: 0xFD,	#  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017D: 0xEB,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0xEC,	#  LATIN SMALL LETTER Z WITH CARON
-    0x02C7: 0xFF,	#  CARON
-    0x2013: 0xD0,	#  EN DASH
-    0x2014: 0xD1,	#  EM DASH
-    0x2018: 0xD4,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xD5,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0xE2,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0xD2,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0xD3,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0xE3,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xA0,	#  DAGGER
-    0x2022: 0xA5,	#  BULLET
-    0x2026: 0xC9,	#  HORIZONTAL ELLIPSIS
-    0x2039: 0xDC,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0xDD,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x2122: 0xAA,	#  TRADE MARK SIGN
-    0x2202: 0xB6,	#  PARTIAL DIFFERENTIAL
-    0x2206: 0xC6,	#  INCREMENT
-    0x2211: 0xB7,	#  N-ARY SUMMATION
-    0x221A: 0xC3,	#  SQUARE ROOT
-    0x2260: 0xAD,	#  NOT EQUAL TO
-    0x2264: 0xB2,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0xB3,	#  GREATER-THAN OR EQUAL TO
-    0x25CA: 0xD7,	#  LOZENGE
+    0x0000: 0x00,       #  CONTROL CHARACTER
+    0x0001: 0x01,       #  CONTROL CHARACTER
+    0x0002: 0x02,       #  CONTROL CHARACTER
+    0x0003: 0x03,       #  CONTROL CHARACTER
+    0x0004: 0x04,       #  CONTROL CHARACTER
+    0x0005: 0x05,       #  CONTROL CHARACTER
+    0x0006: 0x06,       #  CONTROL CHARACTER
+    0x0007: 0x07,       #  CONTROL CHARACTER
+    0x0008: 0x08,       #  CONTROL CHARACTER
+    0x0009: 0x09,       #  CONTROL CHARACTER
+    0x000A: 0x0A,       #  CONTROL CHARACTER
+    0x000B: 0x0B,       #  CONTROL CHARACTER
+    0x000C: 0x0C,       #  CONTROL CHARACTER
+    0x000D: 0x0D,       #  CONTROL CHARACTER
+    0x000E: 0x0E,       #  CONTROL CHARACTER
+    0x000F: 0x0F,       #  CONTROL CHARACTER
+    0x0010: 0x10,       #  CONTROL CHARACTER
+    0x0011: 0x11,       #  CONTROL CHARACTER
+    0x0012: 0x12,       #  CONTROL CHARACTER
+    0x0013: 0x13,       #  CONTROL CHARACTER
+    0x0014: 0x14,       #  CONTROL CHARACTER
+    0x0015: 0x15,       #  CONTROL CHARACTER
+    0x0016: 0x16,       #  CONTROL CHARACTER
+    0x0017: 0x17,       #  CONTROL CHARACTER
+    0x0018: 0x18,       #  CONTROL CHARACTER
+    0x0019: 0x19,       #  CONTROL CHARACTER
+    0x001A: 0x1A,       #  CONTROL CHARACTER
+    0x001B: 0x1B,       #  CONTROL CHARACTER
+    0x001C: 0x1C,       #  CONTROL CHARACTER
+    0x001D: 0x1D,       #  CONTROL CHARACTER
+    0x001E: 0x1E,       #  CONTROL CHARACTER
+    0x001F: 0x1F,       #  CONTROL CHARACTER
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  CONTROL CHARACTER
+    0x00A0: 0xCA,       #  NO-BREAK SPACE
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A7: 0xA4,       #  SECTION SIGN
+    0x00A8: 0xAC,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xC7,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,       #  NOT SIGN
+    0x00AE: 0xA8,       #  REGISTERED SIGN
+    0x00B0: 0xA1,       #  DEGREE SIGN
+    0x00B6: 0xA6,       #  PILCROW SIGN
+    0x00BB: 0xC8,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00C1: 0xE7,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C4: 0x80,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C9: 0x83,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CD: 0xEA,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00DA: 0xF2,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DC: 0x86,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xF8,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DF: 0xA7,       #  LATIN SMALL LETTER SHARP S
+    0x00E1: 0x87,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E4: 0x8A,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E9: 0x8E,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00ED: 0x92,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00F3: 0x97,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,       #  DIVISION SIGN
+    0x00FA: 0x9C,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FC: 0x9F,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xF9,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x0100: 0x81,       #  LATIN CAPITAL LETTER A WITH MACRON
+    0x0101: 0x82,       #  LATIN SMALL LETTER A WITH MACRON
+    0x0104: 0x84,       #  LATIN CAPITAL LETTER A WITH OGONEK
+    0x0105: 0x88,       #  LATIN SMALL LETTER A WITH OGONEK
+    0x0106: 0x8C,       #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0x8D,       #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0x89,       #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0x8B,       #  LATIN SMALL LETTER C WITH CARON
+    0x010E: 0x91,       #  LATIN CAPITAL LETTER D WITH CARON
+    0x010F: 0x93,       #  LATIN SMALL LETTER D WITH CARON
+    0x0112: 0x94,       #  LATIN CAPITAL LETTER E WITH MACRON
+    0x0113: 0x95,       #  LATIN SMALL LETTER E WITH MACRON
+    0x0116: 0x96,       #  LATIN CAPITAL LETTER E WITH DOT ABOVE
+    0x0117: 0x98,       #  LATIN SMALL LETTER E WITH DOT ABOVE
+    0x0118: 0xA2,       #  LATIN CAPITAL LETTER E WITH OGONEK
+    0x0119: 0xAB,       #  LATIN SMALL LETTER E WITH OGONEK
+    0x011A: 0x9D,       #  LATIN CAPITAL LETTER E WITH CARON
+    0x011B: 0x9E,       #  LATIN SMALL LETTER E WITH CARON
+    0x0122: 0xFE,       #  LATIN CAPITAL LETTER G WITH CEDILLA
+    0x0123: 0xAE,       #  LATIN SMALL LETTER G WITH CEDILLA
+    0x012A: 0xB1,       #  LATIN CAPITAL LETTER I WITH MACRON
+    0x012B: 0xB4,       #  LATIN SMALL LETTER I WITH MACRON
+    0x012E: 0xAF,       #  LATIN CAPITAL LETTER I WITH OGONEK
+    0x012F: 0xB0,       #  LATIN SMALL LETTER I WITH OGONEK
+    0x0136: 0xB5,       #  LATIN CAPITAL LETTER K WITH CEDILLA
+    0x0137: 0xFA,       #  LATIN SMALL LETTER K WITH CEDILLA
+    0x0139: 0xBD,       #  LATIN CAPITAL LETTER L WITH ACUTE
+    0x013A: 0xBE,       #  LATIN SMALL LETTER L WITH ACUTE
+    0x013B: 0xB9,       #  LATIN CAPITAL LETTER L WITH CEDILLA
+    0x013C: 0xBA,       #  LATIN SMALL LETTER L WITH CEDILLA
+    0x013D: 0xBB,       #  LATIN CAPITAL LETTER L WITH CARON
+    0x013E: 0xBC,       #  LATIN SMALL LETTER L WITH CARON
+    0x0141: 0xFC,       #  LATIN CAPITAL LETTER L WITH STROKE
+    0x0142: 0xB8,       #  LATIN SMALL LETTER L WITH STROKE
+    0x0143: 0xC1,       #  LATIN CAPITAL LETTER N WITH ACUTE
+    0x0144: 0xC4,       #  LATIN SMALL LETTER N WITH ACUTE
+    0x0145: 0xBF,       #  LATIN CAPITAL LETTER N WITH CEDILLA
+    0x0146: 0xC0,       #  LATIN SMALL LETTER N WITH CEDILLA
+    0x0147: 0xC5,       #  LATIN CAPITAL LETTER N WITH CARON
+    0x0148: 0xCB,       #  LATIN SMALL LETTER N WITH CARON
+    0x014C: 0xCF,       #  LATIN CAPITAL LETTER O WITH MACRON
+    0x014D: 0xD8,       #  LATIN SMALL LETTER O WITH MACRON
+    0x0150: 0xCC,       #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+    0x0151: 0xCE,       #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
+    0x0154: 0xD9,       #  LATIN CAPITAL LETTER R WITH ACUTE
+    0x0155: 0xDA,       #  LATIN SMALL LETTER R WITH ACUTE
+    0x0156: 0xDF,       #  LATIN CAPITAL LETTER R WITH CEDILLA
+    0x0157: 0xE0,       #  LATIN SMALL LETTER R WITH CEDILLA
+    0x0158: 0xDB,       #  LATIN CAPITAL LETTER R WITH CARON
+    0x0159: 0xDE,       #  LATIN SMALL LETTER R WITH CARON
+    0x015A: 0xE5,       #  LATIN CAPITAL LETTER S WITH ACUTE
+    0x015B: 0xE6,       #  LATIN SMALL LETTER S WITH ACUTE
+    0x0160: 0xE1,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xE4,       #  LATIN SMALL LETTER S WITH CARON
+    0x0164: 0xE8,       #  LATIN CAPITAL LETTER T WITH CARON
+    0x0165: 0xE9,       #  LATIN SMALL LETTER T WITH CARON
+    0x016A: 0xED,       #  LATIN CAPITAL LETTER U WITH MACRON
+    0x016B: 0xF0,       #  LATIN SMALL LETTER U WITH MACRON
+    0x016E: 0xF1,       #  LATIN CAPITAL LETTER U WITH RING ABOVE
+    0x016F: 0xF3,       #  LATIN SMALL LETTER U WITH RING ABOVE
+    0x0170: 0xF4,       #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+    0x0171: 0xF5,       #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
+    0x0172: 0xF6,       #  LATIN CAPITAL LETTER U WITH OGONEK
+    0x0173: 0xF7,       #  LATIN SMALL LETTER U WITH OGONEK
+    0x0179: 0x8F,       #  LATIN CAPITAL LETTER Z WITH ACUTE
+    0x017A: 0x90,       #  LATIN SMALL LETTER Z WITH ACUTE
+    0x017B: 0xFB,       #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
+    0x017C: 0xFD,       #  LATIN SMALL LETTER Z WITH DOT ABOVE
+    0x017D: 0xEB,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xEC,       #  LATIN SMALL LETTER Z WITH CARON
+    0x02C7: 0xFF,       #  CARON
+    0x2013: 0xD0,       #  EN DASH
+    0x2014: 0xD1,       #  EM DASH
+    0x2018: 0xD4,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,       #  DAGGER
+    0x2022: 0xA5,       #  BULLET
+    0x2026: 0xC9,       #  HORIZONTAL ELLIPSIS
+    0x2039: 0xDC,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0xDD,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x2122: 0xAA,       #  TRADE MARK SIGN
+    0x2202: 0xB6,       #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,       #  INCREMENT
+    0x2211: 0xB7,       #  N-ARY SUMMATION
+    0x221A: 0xC3,       #  SQUARE ROOT
+    0x2260: 0xAD,       #  NOT EQUAL TO
+    0x2264: 0xB2,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,       #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,       #  LOZENGE
 }
-

Modified: python/trunk/Lib/encodings/mac_croatian.py
==============================================================================
--- python/trunk/Lib/encodings/mac_croatian.py	(original)
+++ python/trunk/Lib/encodings/mac_croatian.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> CONTROL CHARACTER
-    u'\x01'	#  0x01 -> CONTROL CHARACTER
-    u'\x02'	#  0x02 -> CONTROL CHARACTER
-    u'\x03'	#  0x03 -> CONTROL CHARACTER
-    u'\x04'	#  0x04 -> CONTROL CHARACTER
-    u'\x05'	#  0x05 -> CONTROL CHARACTER
-    u'\x06'	#  0x06 -> CONTROL CHARACTER
-    u'\x07'	#  0x07 -> CONTROL CHARACTER
-    u'\x08'	#  0x08 -> CONTROL CHARACTER
-    u'\t'	#  0x09 -> CONTROL CHARACTER
-    u'\n'	#  0x0A -> CONTROL CHARACTER
-    u'\x0b'	#  0x0B -> CONTROL CHARACTER
-    u'\x0c'	#  0x0C -> CONTROL CHARACTER
-    u'\r'	#  0x0D -> CONTROL CHARACTER
-    u'\x0e'	#  0x0E -> CONTROL CHARACTER
-    u'\x0f'	#  0x0F -> CONTROL CHARACTER
-    u'\x10'	#  0x10 -> CONTROL CHARACTER
-    u'\x11'	#  0x11 -> CONTROL CHARACTER
-    u'\x12'	#  0x12 -> CONTROL CHARACTER
-    u'\x13'	#  0x13 -> CONTROL CHARACTER
-    u'\x14'	#  0x14 -> CONTROL CHARACTER
-    u'\x15'	#  0x15 -> CONTROL CHARACTER
-    u'\x16'	#  0x16 -> CONTROL CHARACTER
-    u'\x17'	#  0x17 -> CONTROL CHARACTER
-    u'\x18'	#  0x18 -> CONTROL CHARACTER
-    u'\x19'	#  0x19 -> CONTROL CHARACTER
-    u'\x1a'	#  0x1A -> CONTROL CHARACTER
-    u'\x1b'	#  0x1B -> CONTROL CHARACTER
-    u'\x1c'	#  0x1C -> CONTROL CHARACTER
-    u'\x1d'	#  0x1D -> CONTROL CHARACTER
-    u'\x1e'	#  0x1E -> CONTROL CHARACTER
-    u'\x1f'	#  0x1F -> CONTROL CHARACTER
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> CONTROL CHARACTER
-    u'\xc4'	#  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'	#  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'	#  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'	#  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'	#  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'	#  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'	#  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'	#  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'	#  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'	#  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'	#  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'	#  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'	#  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'	#  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'	#  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'	#  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'	#  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'	#  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'	#  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'	#  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'	#  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'	#  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'	#  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'	#  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'	#  0xA0 -> DAGGER
-    u'\xb0'	#  0xA1 -> DEGREE SIGN
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa7'	#  0xA4 -> SECTION SIGN
-    u'\u2022'	#  0xA5 -> BULLET
-    u'\xb6'	#  0xA6 -> PILCROW SIGN
-    u'\xdf'	#  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'	#  0xA8 -> REGISTERED SIGN
-    u'\u0160'	#  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2122'	#  0xAA -> TRADE MARK SIGN
-    u'\xb4'	#  0xAB -> ACUTE ACCENT
-    u'\xa8'	#  0xAC -> DIAERESIS
-    u'\u2260'	#  0xAD -> NOT EQUAL TO
-    u'\u017d'	#  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xd8'	#  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'	#  0xB0 -> INFINITY
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'	#  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\u2206'	#  0xB4 -> INCREMENT
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\u2202'	#  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'	#  0xB7 -> N-ARY SUMMATION
-    u'\u220f'	#  0xB8 -> N-ARY PRODUCT
-    u'\u0161'	#  0xB9 -> LATIN SMALL LETTER S WITH CARON
-    u'\u222b'	#  0xBA -> INTEGRAL
-    u'\xaa'	#  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'	#  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\u017e'	#  0xBE -> LATIN SMALL LETTER Z WITH CARON
-    u'\xf8'	#  0xBF -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'	#  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'	#  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'	#  0xC2 -> NOT SIGN
-    u'\u221a'	#  0xC3 -> SQUARE ROOT
-    u'\u0192'	#  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'	#  0xC5 -> ALMOST EQUAL TO
-    u'\u0106'	#  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xab'	#  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u010c'	#  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u2026'	#  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'	#  0xCA -> NO-BREAK SPACE
-    u'\xc0'	#  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'	#  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'	#  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'	#  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'	#  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u0110'	#  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u2014'	#  0xD1 -> EM DASH
-    u'\u201c'	#  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'	#  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'	#  0xD6 -> DIVISION SIGN
-    u'\u25ca'	#  0xD7 -> LOZENGE
-    u'\uf8ff'	#  0xD8 -> Apple logo
-    u'\xa9'	#  0xD9 -> COPYRIGHT SIGN
-    u'\u2044'	#  0xDA -> FRACTION SLASH
-    u'\u20ac'	#  0xDB -> EURO SIGN
-    u'\u2039'	#  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'	#  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\xc6'	#  0xDE -> LATIN CAPITAL LETTER AE
-    u'\xbb'	#  0xDF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2013'	#  0xE0 -> EN DASH
-    u'\xb7'	#  0xE1 -> MIDDLE DOT
-    u'\u201a'	#  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'	#  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'	#  0xE4 -> PER MILLE SIGN
-    u'\xc2'	#  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0107'	#  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xc1'	#  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\u010d'	#  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xc8'	#  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'	#  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'	#  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0111'	#  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\xd2'	#  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'	#  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'	#  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'	#  0xF5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'	#  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'	#  0xF7 -> SMALL TILDE
-    u'\xaf'	#  0xF8 -> MACRON
-    u'\u03c0'	#  0xF9 -> GREEK SMALL LETTER PI
-    u'\xcb'	#  0xFA -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u02da'	#  0xFB -> RING ABOVE
-    u'\xb8'	#  0xFC -> CEDILLA
-    u'\xca'	#  0xFD -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xe6'	#  0xFE -> LATIN SMALL LETTER AE
-    u'\u02c7'	#  0xFF -> CARON
+    u'\x00'     #  0x00 -> CONTROL CHARACTER
+    u'\x01'     #  0x01 -> CONTROL CHARACTER
+    u'\x02'     #  0x02 -> CONTROL CHARACTER
+    u'\x03'     #  0x03 -> CONTROL CHARACTER
+    u'\x04'     #  0x04 -> CONTROL CHARACTER
+    u'\x05'     #  0x05 -> CONTROL CHARACTER
+    u'\x06'     #  0x06 -> CONTROL CHARACTER
+    u'\x07'     #  0x07 -> CONTROL CHARACTER
+    u'\x08'     #  0x08 -> CONTROL CHARACTER
+    u'\t'       #  0x09 -> CONTROL CHARACTER
+    u'\n'       #  0x0A -> CONTROL CHARACTER
+    u'\x0b'     #  0x0B -> CONTROL CHARACTER
+    u'\x0c'     #  0x0C -> CONTROL CHARACTER
+    u'\r'       #  0x0D -> CONTROL CHARACTER
+    u'\x0e'     #  0x0E -> CONTROL CHARACTER
+    u'\x0f'     #  0x0F -> CONTROL CHARACTER
+    u'\x10'     #  0x10 -> CONTROL CHARACTER
+    u'\x11'     #  0x11 -> CONTROL CHARACTER
+    u'\x12'     #  0x12 -> CONTROL CHARACTER
+    u'\x13'     #  0x13 -> CONTROL CHARACTER
+    u'\x14'     #  0x14 -> CONTROL CHARACTER
+    u'\x15'     #  0x15 -> CONTROL CHARACTER
+    u'\x16'     #  0x16 -> CONTROL CHARACTER
+    u'\x17'     #  0x17 -> CONTROL CHARACTER
+    u'\x18'     #  0x18 -> CONTROL CHARACTER
+    u'\x19'     #  0x19 -> CONTROL CHARACTER
+    u'\x1a'     #  0x1A -> CONTROL CHARACTER
+    u'\x1b'     #  0x1B -> CONTROL CHARACTER
+    u'\x1c'     #  0x1C -> CONTROL CHARACTER
+    u'\x1d'     #  0x1D -> CONTROL CHARACTER
+    u'\x1e'     #  0x1E -> CONTROL CHARACTER
+    u'\x1f'     #  0x1F -> CONTROL CHARACTER
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> CONTROL CHARACTER
+    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'   #  0xA0 -> DAGGER
+    u'\xb0'     #  0xA1 -> DEGREE SIGN
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa7'     #  0xA4 -> SECTION SIGN
+    u'\u2022'   #  0xA5 -> BULLET
+    u'\xb6'     #  0xA6 -> PILCROW SIGN
+    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'     #  0xA8 -> REGISTERED SIGN
+    u'\u0160'   #  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
+    u'\u2122'   #  0xAA -> TRADE MARK SIGN
+    u'\xb4'     #  0xAB -> ACUTE ACCENT
+    u'\xa8'     #  0xAC -> DIAERESIS
+    u'\u2260'   #  0xAD -> NOT EQUAL TO
+    u'\u017d'   #  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
+    u'\xd8'     #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u221e'   #  0xB0 -> INFINITY
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\u2206'   #  0xB4 -> INCREMENT
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
+    u'\u0161'   #  0xB9 -> LATIN SMALL LETTER S WITH CARON
+    u'\u222b'   #  0xBA -> INTEGRAL
+    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\u017e'   #  0xBE -> LATIN SMALL LETTER Z WITH CARON
+    u'\xf8'     #  0xBF -> LATIN SMALL LETTER O WITH STROKE
+    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'     #  0xC2 -> NOT SIGN
+    u'\u221a'   #  0xC3 -> SQUARE ROOT
+    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
+    u'\u0106'   #  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
+    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
+    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'     #  0xCA -> NO-BREAK SPACE
+    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
+    u'\u2014'   #  0xD1 -> EM DASH
+    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'     #  0xD6 -> DIVISION SIGN
+    u'\u25ca'   #  0xD7 -> LOZENGE
+    u'\uf8ff'   #  0xD8 -> Apple logo
+    u'\xa9'     #  0xD9 -> COPYRIGHT SIGN
+    u'\u2044'   #  0xDA -> FRACTION SLASH
+    u'\u20ac'   #  0xDB -> EURO SIGN
+    u'\u2039'   #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u203a'   #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\xc6'     #  0xDE -> LATIN CAPITAL LETTER AE
+    u'\xbb'     #  0xDF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2013'   #  0xE0 -> EN DASH
+    u'\xb7'     #  0xE1 -> MIDDLE DOT
+    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'   #  0xE4 -> PER MILLE SIGN
+    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\u0107'   #  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
+    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
+    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
+    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\u0131'   #  0xF5 -> LATIN SMALL LETTER DOTLESS I
+    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'   #  0xF7 -> SMALL TILDE
+    u'\xaf'     #  0xF8 -> MACRON
+    u'\u03c0'   #  0xF9 -> GREEK SMALL LETTER PI
+    u'\xcb'     #  0xFA -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\u02da'   #  0xFB -> RING ABOVE
+    u'\xb8'     #  0xFC -> CEDILLA
+    u'\xca'     #  0xFD -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xe6'     #  0xFE -> LATIN SMALL LETTER AE
+    u'\u02c7'   #  0xFF -> CARON
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  CONTROL CHARACTER
-    0x0001: 0x01,	#  CONTROL CHARACTER
-    0x0002: 0x02,	#  CONTROL CHARACTER
-    0x0003: 0x03,	#  CONTROL CHARACTER
-    0x0004: 0x04,	#  CONTROL CHARACTER
-    0x0005: 0x05,	#  CONTROL CHARACTER
-    0x0006: 0x06,	#  CONTROL CHARACTER
-    0x0007: 0x07,	#  CONTROL CHARACTER
-    0x0008: 0x08,	#  CONTROL CHARACTER
-    0x0009: 0x09,	#  CONTROL CHARACTER
-    0x000A: 0x0A,	#  CONTROL CHARACTER
-    0x000B: 0x0B,	#  CONTROL CHARACTER
-    0x000C: 0x0C,	#  CONTROL CHARACTER
-    0x000D: 0x0D,	#  CONTROL CHARACTER
-    0x000E: 0x0E,	#  CONTROL CHARACTER
-    0x000F: 0x0F,	#  CONTROL CHARACTER
-    0x0010: 0x10,	#  CONTROL CHARACTER
-    0x0011: 0x11,	#  CONTROL CHARACTER
-    0x0012: 0x12,	#  CONTROL CHARACTER
-    0x0013: 0x13,	#  CONTROL CHARACTER
-    0x0014: 0x14,	#  CONTROL CHARACTER
-    0x0015: 0x15,	#  CONTROL CHARACTER
-    0x0016: 0x16,	#  CONTROL CHARACTER
-    0x0017: 0x17,	#  CONTROL CHARACTER
-    0x0018: 0x18,	#  CONTROL CHARACTER
-    0x0019: 0x19,	#  CONTROL CHARACTER
-    0x001A: 0x1A,	#  CONTROL CHARACTER
-    0x001B: 0x1B,	#  CONTROL CHARACTER
-    0x001C: 0x1C,	#  CONTROL CHARACTER
-    0x001D: 0x1D,	#  CONTROL CHARACTER
-    0x001E: 0x1E,	#  CONTROL CHARACTER
-    0x001F: 0x1F,	#  CONTROL CHARACTER
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  CONTROL CHARACTER
-    0x00A0: 0xCA,	#  NO-BREAK SPACE
-    0x00A1: 0xC1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A7: 0xA4,	#  SECTION SIGN
-    0x00A8: 0xAC,	#  DIAERESIS
-    0x00A9: 0xD9,	#  COPYRIGHT SIGN
-    0x00AA: 0xBB,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xC7,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xC2,	#  NOT SIGN
-    0x00AE: 0xA8,	#  REGISTERED SIGN
-    0x00AF: 0xF8,	#  MACRON
-    0x00B0: 0xA1,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B4: 0xAB,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xA6,	#  PILCROW SIGN
-    0x00B7: 0xE1,	#  MIDDLE DOT
-    0x00B8: 0xFC,	#  CEDILLA
-    0x00BA: 0xBC,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xDF,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BF: 0xC0,	#  INVERTED QUESTION MARK
-    0x00C0: 0xCB,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xE7,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xE5,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xCC,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0x80,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0x81,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xDE,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0x82,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xE9,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0x83,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xFD,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xFA,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xED,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xEA,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xEB,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xEC,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0x84,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xF1,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEF,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xCD,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0x85,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D8: 0xAF,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xF4,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xF2,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xF3,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0x86,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xA7,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0x88,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x87,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x89,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0x8B,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0x8A,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0x8C,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xFE,	#  LATIN SMALL LETTER AE
-    0x00E7: 0x8D,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x8F,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x8E,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x90,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x91,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0x93,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0x92,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x94,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x95,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0x96,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0x98,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0x97,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0x99,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0x9B,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0x9A,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xD6,	#  DIVISION SIGN
-    0x00F8: 0xBF,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0x9D,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0x9C,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0x9E,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0x9F,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0106: 0xC6,	#  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0xE6,	#  LATIN SMALL LETTER C WITH ACUTE
-    0x010C: 0xC8,	#  LATIN CAPITAL LETTER C WITH CARON
-    0x010D: 0xE8,	#  LATIN SMALL LETTER C WITH CARON
-    0x0110: 0xD0,	#  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0xF0,	#  LATIN SMALL LETTER D WITH STROKE
-    0x0131: 0xF5,	#  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xCE,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xCF,	#  LATIN SMALL LIGATURE OE
-    0x0160: 0xA9,	#  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0xB9,	#  LATIN SMALL LETTER S WITH CARON
-    0x017D: 0xAE,	#  LATIN CAPITAL LETTER Z WITH CARON
-    0x017E: 0xBE,	#  LATIN SMALL LETTER Z WITH CARON
-    0x0192: 0xC4,	#  LATIN SMALL LETTER F WITH HOOK
-    0x02C6: 0xF6,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02C7: 0xFF,	#  CARON
-    0x02DA: 0xFB,	#  RING ABOVE
-    0x02DC: 0xF7,	#  SMALL TILDE
-    0x03A9: 0xBD,	#  GREEK CAPITAL LETTER OMEGA
-    0x03C0: 0xF9,	#  GREEK SMALL LETTER PI
-    0x2013: 0xE0,	#  EN DASH
-    0x2014: 0xD1,	#  EM DASH
-    0x2018: 0xD4,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xD5,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0xE2,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0xD2,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0xD3,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0xE3,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xA0,	#  DAGGER
-    0x2022: 0xA5,	#  BULLET
-    0x2026: 0xC9,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0xE4,	#  PER MILLE SIGN
-    0x2039: 0xDC,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0xDD,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x2044: 0xDA,	#  FRACTION SLASH
-    0x20AC: 0xDB,	#  EURO SIGN
-    0x2122: 0xAA,	#  TRADE MARK SIGN
-    0x2202: 0xB6,	#  PARTIAL DIFFERENTIAL
-    0x2206: 0xB4,	#  INCREMENT
-    0x220F: 0xB8,	#  N-ARY PRODUCT
-    0x2211: 0xB7,	#  N-ARY SUMMATION
-    0x221A: 0xC3,	#  SQUARE ROOT
-    0x221E: 0xB0,	#  INFINITY
-    0x222B: 0xBA,	#  INTEGRAL
-    0x2248: 0xC5,	#  ALMOST EQUAL TO
-    0x2260: 0xAD,	#  NOT EQUAL TO
-    0x2264: 0xB2,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0xB3,	#  GREATER-THAN OR EQUAL TO
-    0x25CA: 0xD7,	#  LOZENGE
-    0xF8FF: 0xD8,	#  Apple logo
+    0x0000: 0x00,       #  CONTROL CHARACTER
+    0x0001: 0x01,       #  CONTROL CHARACTER
+    0x0002: 0x02,       #  CONTROL CHARACTER
+    0x0003: 0x03,       #  CONTROL CHARACTER
+    0x0004: 0x04,       #  CONTROL CHARACTER
+    0x0005: 0x05,       #  CONTROL CHARACTER
+    0x0006: 0x06,       #  CONTROL CHARACTER
+    0x0007: 0x07,       #  CONTROL CHARACTER
+    0x0008: 0x08,       #  CONTROL CHARACTER
+    0x0009: 0x09,       #  CONTROL CHARACTER
+    0x000A: 0x0A,       #  CONTROL CHARACTER
+    0x000B: 0x0B,       #  CONTROL CHARACTER
+    0x000C: 0x0C,       #  CONTROL CHARACTER
+    0x000D: 0x0D,       #  CONTROL CHARACTER
+    0x000E: 0x0E,       #  CONTROL CHARACTER
+    0x000F: 0x0F,       #  CONTROL CHARACTER
+    0x0010: 0x10,       #  CONTROL CHARACTER
+    0x0011: 0x11,       #  CONTROL CHARACTER
+    0x0012: 0x12,       #  CONTROL CHARACTER
+    0x0013: 0x13,       #  CONTROL CHARACTER
+    0x0014: 0x14,       #  CONTROL CHARACTER
+    0x0015: 0x15,       #  CONTROL CHARACTER
+    0x0016: 0x16,       #  CONTROL CHARACTER
+    0x0017: 0x17,       #  CONTROL CHARACTER
+    0x0018: 0x18,       #  CONTROL CHARACTER
+    0x0019: 0x19,       #  CONTROL CHARACTER
+    0x001A: 0x1A,       #  CONTROL CHARACTER
+    0x001B: 0x1B,       #  CONTROL CHARACTER
+    0x001C: 0x1C,       #  CONTROL CHARACTER
+    0x001D: 0x1D,       #  CONTROL CHARACTER
+    0x001E: 0x1E,       #  CONTROL CHARACTER
+    0x001F: 0x1F,       #  CONTROL CHARACTER
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  CONTROL CHARACTER
+    0x00A0: 0xCA,       #  NO-BREAK SPACE
+    0x00A1: 0xC1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A7: 0xA4,       #  SECTION SIGN
+    0x00A8: 0xAC,       #  DIAERESIS
+    0x00A9: 0xD9,       #  COPYRIGHT SIGN
+    0x00AA: 0xBB,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,       #  NOT SIGN
+    0x00AE: 0xA8,       #  REGISTERED SIGN
+    0x00AF: 0xF8,       #  MACRON
+    0x00B0: 0xA1,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xA6,       #  PILCROW SIGN
+    0x00B7: 0xE1,       #  MIDDLE DOT
+    0x00B8: 0xFC,       #  CEDILLA
+    0x00BA: 0xBC,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xDF,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,       #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xDE,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0x82,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xFD,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xFA,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x84,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xAF,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xF4,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xFE,       #  LATIN SMALL LETTER AE
+    0x00E7: 0x8D,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,       #  DIVISION SIGN
+    0x00F8: 0xBF,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0x9D,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0106: 0xC6,       #  LATIN CAPITAL LETTER C WITH ACUTE
+    0x0107: 0xE6,       #  LATIN SMALL LETTER C WITH ACUTE
+    0x010C: 0xC8,       #  LATIN CAPITAL LETTER C WITH CARON
+    0x010D: 0xE8,       #  LATIN SMALL LETTER C WITH CARON
+    0x0110: 0xD0,       #  LATIN CAPITAL LETTER D WITH STROKE
+    0x0111: 0xF0,       #  LATIN SMALL LETTER D WITH STROKE
+    0x0131: 0xF5,       #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,       #  LATIN SMALL LIGATURE OE
+    0x0160: 0xA9,       #  LATIN CAPITAL LETTER S WITH CARON
+    0x0161: 0xB9,       #  LATIN SMALL LETTER S WITH CARON
+    0x017D: 0xAE,       #  LATIN CAPITAL LETTER Z WITH CARON
+    0x017E: 0xBE,       #  LATIN SMALL LETTER Z WITH CARON
+    0x0192: 0xC4,       #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0xF6,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,       #  CARON
+    0x02DA: 0xFB,       #  RING ABOVE
+    0x02DC: 0xF7,       #  SMALL TILDE
+    0x03A9: 0xBD,       #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xF9,       #  GREEK SMALL LETTER PI
+    0x2013: 0xE0,       #  EN DASH
+    0x2014: 0xD1,       #  EM DASH
+    0x2018: 0xD4,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,       #  DAGGER
+    0x2022: 0xA5,       #  BULLET
+    0x2026: 0xC9,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,       #  PER MILLE SIGN
+    0x2039: 0xDC,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0xDD,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x2044: 0xDA,       #  FRACTION SLASH
+    0x20AC: 0xDB,       #  EURO SIGN
+    0x2122: 0xAA,       #  TRADE MARK SIGN
+    0x2202: 0xB6,       #  PARTIAL DIFFERENTIAL
+    0x2206: 0xB4,       #  INCREMENT
+    0x220F: 0xB8,       #  N-ARY PRODUCT
+    0x2211: 0xB7,       #  N-ARY SUMMATION
+    0x221A: 0xC3,       #  SQUARE ROOT
+    0x221E: 0xB0,       #  INFINITY
+    0x222B: 0xBA,       #  INTEGRAL
+    0x2248: 0xC5,       #  ALMOST EQUAL TO
+    0x2260: 0xAD,       #  NOT EQUAL TO
+    0x2264: 0xB2,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,       #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,       #  LOZENGE
+    0xF8FF: 0xD8,       #  Apple logo
 }
-

Modified: python/trunk/Lib/encodings/mac_cyrillic.py
==============================================================================
--- python/trunk/Lib/encodings/mac_cyrillic.py	(original)
+++ python/trunk/Lib/encodings/mac_cyrillic.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> CONTROL CHARACTER
-    u'\x01'	#  0x01 -> CONTROL CHARACTER
-    u'\x02'	#  0x02 -> CONTROL CHARACTER
-    u'\x03'	#  0x03 -> CONTROL CHARACTER
-    u'\x04'	#  0x04 -> CONTROL CHARACTER
-    u'\x05'	#  0x05 -> CONTROL CHARACTER
-    u'\x06'	#  0x06 -> CONTROL CHARACTER
-    u'\x07'	#  0x07 -> CONTROL CHARACTER
-    u'\x08'	#  0x08 -> CONTROL CHARACTER
-    u'\t'	#  0x09 -> CONTROL CHARACTER
-    u'\n'	#  0x0A -> CONTROL CHARACTER
-    u'\x0b'	#  0x0B -> CONTROL CHARACTER
-    u'\x0c'	#  0x0C -> CONTROL CHARACTER
-    u'\r'	#  0x0D -> CONTROL CHARACTER
-    u'\x0e'	#  0x0E -> CONTROL CHARACTER
-    u'\x0f'	#  0x0F -> CONTROL CHARACTER
-    u'\x10'	#  0x10 -> CONTROL CHARACTER
-    u'\x11'	#  0x11 -> CONTROL CHARACTER
-    u'\x12'	#  0x12 -> CONTROL CHARACTER
-    u'\x13'	#  0x13 -> CONTROL CHARACTER
-    u'\x14'	#  0x14 -> CONTROL CHARACTER
-    u'\x15'	#  0x15 -> CONTROL CHARACTER
-    u'\x16'	#  0x16 -> CONTROL CHARACTER
-    u'\x17'	#  0x17 -> CONTROL CHARACTER
-    u'\x18'	#  0x18 -> CONTROL CHARACTER
-    u'\x19'	#  0x19 -> CONTROL CHARACTER
-    u'\x1a'	#  0x1A -> CONTROL CHARACTER
-    u'\x1b'	#  0x1B -> CONTROL CHARACTER
-    u'\x1c'	#  0x1C -> CONTROL CHARACTER
-    u'\x1d'	#  0x1D -> CONTROL CHARACTER
-    u'\x1e'	#  0x1E -> CONTROL CHARACTER
-    u'\x1f'	#  0x1F -> CONTROL CHARACTER
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> CONTROL CHARACTER
-    u'\u0410'	#  0x80 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'	#  0x81 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'	#  0x82 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'	#  0x83 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'	#  0x84 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'	#  0x85 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'	#  0x86 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'	#  0x87 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'	#  0x88 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'	#  0x89 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'	#  0x8A -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'	#  0x8B -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'	#  0x8C -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'	#  0x8D -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'	#  0x8E -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'	#  0x8F -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'	#  0x90 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'	#  0x91 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'	#  0x92 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'	#  0x93 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'	#  0x94 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'	#  0x95 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'	#  0x96 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'	#  0x97 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'	#  0x98 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'	#  0x99 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'	#  0x9A -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'	#  0x9B -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'	#  0x9C -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'	#  0x9D -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'	#  0x9E -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'	#  0x9F -> CYRILLIC CAPITAL LETTER YA
-    u'\u2020'	#  0xA0 -> DAGGER
-    u'\xb0'	#  0xA1 -> DEGREE SIGN
-    u'\u0490'	#  0xA2 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa7'	#  0xA4 -> SECTION SIGN
-    u'\u2022'	#  0xA5 -> BULLET
-    u'\xb6'	#  0xA6 -> PILCROW SIGN
-    u'\u0406'	#  0xA7 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\xae'	#  0xA8 -> REGISTERED SIGN
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'	#  0xAA -> TRADE MARK SIGN
-    u'\u0402'	#  0xAB -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0452'	#  0xAC -> CYRILLIC SMALL LETTER DJE
-    u'\u2260'	#  0xAD -> NOT EQUAL TO
-    u'\u0403'	#  0xAE -> CYRILLIC CAPITAL LETTER GJE
-    u'\u0453'	#  0xAF -> CYRILLIC SMALL LETTER GJE
-    u'\u221e'	#  0xB0 -> INFINITY
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'	#  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\u0456'	#  0xB4 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\u0491'	#  0xB6 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
-    u'\u0408'	#  0xB7 -> CYRILLIC CAPITAL LETTER JE
-    u'\u0404'	#  0xB8 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0454'	#  0xB9 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0407'	#  0xBA -> CYRILLIC CAPITAL LETTER YI
-    u'\u0457'	#  0xBB -> CYRILLIC SMALL LETTER YI
-    u'\u0409'	#  0xBC -> CYRILLIC CAPITAL LETTER LJE
-    u'\u0459'	#  0xBD -> CYRILLIC SMALL LETTER LJE
-    u'\u040a'	#  0xBE -> CYRILLIC CAPITAL LETTER NJE
-    u'\u045a'	#  0xBF -> CYRILLIC SMALL LETTER NJE
-    u'\u0458'	#  0xC0 -> CYRILLIC SMALL LETTER JE
-    u'\u0405'	#  0xC1 -> CYRILLIC CAPITAL LETTER DZE
-    u'\xac'	#  0xC2 -> NOT SIGN
-    u'\u221a'	#  0xC3 -> SQUARE ROOT
-    u'\u0192'	#  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'	#  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'	#  0xC6 -> INCREMENT
-    u'\xab'	#  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'	#  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'	#  0xCA -> NO-BREAK SPACE
-    u'\u040b'	#  0xCB -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u045b'	#  0xCC -> CYRILLIC SMALL LETTER TSHE
-    u'\u040c'	#  0xCD -> CYRILLIC CAPITAL LETTER KJE
-    u'\u045c'	#  0xCE -> CYRILLIC SMALL LETTER KJE
-    u'\u0455'	#  0xCF -> CYRILLIC SMALL LETTER DZE
-    u'\u2013'	#  0xD0 -> EN DASH
-    u'\u2014'	#  0xD1 -> EM DASH
-    u'\u201c'	#  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'	#  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'	#  0xD6 -> DIVISION SIGN
-    u'\u201e'	#  0xD7 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u040e'	#  0xD8 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045e'	#  0xD9 -> CYRILLIC SMALL LETTER SHORT U
-    u'\u040f'	#  0xDA -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u045f'	#  0xDB -> CYRILLIC SMALL LETTER DZHE
-    u'\u2116'	#  0xDC -> NUMERO SIGN
-    u'\u0401'	#  0xDD -> CYRILLIC CAPITAL LETTER IO
-    u'\u0451'	#  0xDE -> CYRILLIC SMALL LETTER IO
-    u'\u044f'	#  0xDF -> CYRILLIC SMALL LETTER YA
-    u'\u0430'	#  0xE0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'	#  0xE1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'	#  0xE2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'	#  0xE3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'	#  0xE4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'	#  0xE5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'	#  0xE6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'	#  0xE7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'	#  0xE8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'	#  0xE9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'	#  0xEA -> CYRILLIC SMALL LETTER KA
-    u'\u043b'	#  0xEB -> CYRILLIC SMALL LETTER EL
-    u'\u043c'	#  0xEC -> CYRILLIC SMALL LETTER EM
-    u'\u043d'	#  0xED -> CYRILLIC SMALL LETTER EN
-    u'\u043e'	#  0xEE -> CYRILLIC SMALL LETTER O
-    u'\u043f'	#  0xEF -> CYRILLIC SMALL LETTER PE
-    u'\u0440'	#  0xF0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'	#  0xF1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'	#  0xF2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'	#  0xF3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'	#  0xF4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'	#  0xF5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'	#  0xF6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'	#  0xF7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'	#  0xF8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'	#  0xF9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'	#  0xFA -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'	#  0xFB -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'	#  0xFC -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'	#  0xFD -> CYRILLIC SMALL LETTER E
-    u'\u044e'	#  0xFE -> CYRILLIC SMALL LETTER YU
-    u'\u20ac'	#  0xFF -> EURO SIGN
+    u'\x00'     #  0x00 -> CONTROL CHARACTER
+    u'\x01'     #  0x01 -> CONTROL CHARACTER
+    u'\x02'     #  0x02 -> CONTROL CHARACTER
+    u'\x03'     #  0x03 -> CONTROL CHARACTER
+    u'\x04'     #  0x04 -> CONTROL CHARACTER
+    u'\x05'     #  0x05 -> CONTROL CHARACTER
+    u'\x06'     #  0x06 -> CONTROL CHARACTER
+    u'\x07'     #  0x07 -> CONTROL CHARACTER
+    u'\x08'     #  0x08 -> CONTROL CHARACTER
+    u'\t'       #  0x09 -> CONTROL CHARACTER
+    u'\n'       #  0x0A -> CONTROL CHARACTER
+    u'\x0b'     #  0x0B -> CONTROL CHARACTER
+    u'\x0c'     #  0x0C -> CONTROL CHARACTER
+    u'\r'       #  0x0D -> CONTROL CHARACTER
+    u'\x0e'     #  0x0E -> CONTROL CHARACTER
+    u'\x0f'     #  0x0F -> CONTROL CHARACTER
+    u'\x10'     #  0x10 -> CONTROL CHARACTER
+    u'\x11'     #  0x11 -> CONTROL CHARACTER
+    u'\x12'     #  0x12 -> CONTROL CHARACTER
+    u'\x13'     #  0x13 -> CONTROL CHARACTER
+    u'\x14'     #  0x14 -> CONTROL CHARACTER
+    u'\x15'     #  0x15 -> CONTROL CHARACTER
+    u'\x16'     #  0x16 -> CONTROL CHARACTER
+    u'\x17'     #  0x17 -> CONTROL CHARACTER
+    u'\x18'     #  0x18 -> CONTROL CHARACTER
+    u'\x19'     #  0x19 -> CONTROL CHARACTER
+    u'\x1a'     #  0x1A -> CONTROL CHARACTER
+    u'\x1b'     #  0x1B -> CONTROL CHARACTER
+    u'\x1c'     #  0x1C -> CONTROL CHARACTER
+    u'\x1d'     #  0x1D -> CONTROL CHARACTER
+    u'\x1e'     #  0x1E -> CONTROL CHARACTER
+    u'\x1f'     #  0x1F -> CONTROL CHARACTER
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> CONTROL CHARACTER
+    u'\u0410'   #  0x80 -> CYRILLIC CAPITAL LETTER A
+    u'\u0411'   #  0x81 -> CYRILLIC CAPITAL LETTER BE
+    u'\u0412'   #  0x82 -> CYRILLIC CAPITAL LETTER VE
+    u'\u0413'   #  0x83 -> CYRILLIC CAPITAL LETTER GHE
+    u'\u0414'   #  0x84 -> CYRILLIC CAPITAL LETTER DE
+    u'\u0415'   #  0x85 -> CYRILLIC CAPITAL LETTER IE
+    u'\u0416'   #  0x86 -> CYRILLIC CAPITAL LETTER ZHE
+    u'\u0417'   #  0x87 -> CYRILLIC CAPITAL LETTER ZE
+    u'\u0418'   #  0x88 -> CYRILLIC CAPITAL LETTER I
+    u'\u0419'   #  0x89 -> CYRILLIC CAPITAL LETTER SHORT I
+    u'\u041a'   #  0x8A -> CYRILLIC CAPITAL LETTER KA
+    u'\u041b'   #  0x8B -> CYRILLIC CAPITAL LETTER EL
+    u'\u041c'   #  0x8C -> CYRILLIC CAPITAL LETTER EM
+    u'\u041d'   #  0x8D -> CYRILLIC CAPITAL LETTER EN
+    u'\u041e'   #  0x8E -> CYRILLIC CAPITAL LETTER O
+    u'\u041f'   #  0x8F -> CYRILLIC CAPITAL LETTER PE
+    u'\u0420'   #  0x90 -> CYRILLIC CAPITAL LETTER ER
+    u'\u0421'   #  0x91 -> CYRILLIC CAPITAL LETTER ES
+    u'\u0422'   #  0x92 -> CYRILLIC CAPITAL LETTER TE
+    u'\u0423'   #  0x93 -> CYRILLIC CAPITAL LETTER U
+    u'\u0424'   #  0x94 -> CYRILLIC CAPITAL LETTER EF
+    u'\u0425'   #  0x95 -> CYRILLIC CAPITAL LETTER HA
+    u'\u0426'   #  0x96 -> CYRILLIC CAPITAL LETTER TSE
+    u'\u0427'   #  0x97 -> CYRILLIC CAPITAL LETTER CHE
+    u'\u0428'   #  0x98 -> CYRILLIC CAPITAL LETTER SHA
+    u'\u0429'   #  0x99 -> CYRILLIC CAPITAL LETTER SHCHA
+    u'\u042a'   #  0x9A -> CYRILLIC CAPITAL LETTER HARD SIGN
+    u'\u042b'   #  0x9B -> CYRILLIC CAPITAL LETTER YERU
+    u'\u042c'   #  0x9C -> CYRILLIC CAPITAL LETTER SOFT SIGN
+    u'\u042d'   #  0x9D -> CYRILLIC CAPITAL LETTER E
+    u'\u042e'   #  0x9E -> CYRILLIC CAPITAL LETTER YU
+    u'\u042f'   #  0x9F -> CYRILLIC CAPITAL LETTER YA
+    u'\u2020'   #  0xA0 -> DAGGER
+    u'\xb0'     #  0xA1 -> DEGREE SIGN
+    u'\u0490'   #  0xA2 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa7'     #  0xA4 -> SECTION SIGN
+    u'\u2022'   #  0xA5 -> BULLET
+    u'\xb6'     #  0xA6 -> PILCROW SIGN
+    u'\u0406'   #  0xA7 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\xae'     #  0xA8 -> REGISTERED SIGN
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'   #  0xAA -> TRADE MARK SIGN
+    u'\u0402'   #  0xAB -> CYRILLIC CAPITAL LETTER DJE
+    u'\u0452'   #  0xAC -> CYRILLIC SMALL LETTER DJE
+    u'\u2260'   #  0xAD -> NOT EQUAL TO
+    u'\u0403'   #  0xAE -> CYRILLIC CAPITAL LETTER GJE
+    u'\u0453'   #  0xAF -> CYRILLIC SMALL LETTER GJE
+    u'\u221e'   #  0xB0 -> INFINITY
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\u0456'   #  0xB4 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\u0491'   #  0xB6 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
+    u'\u0408'   #  0xB7 -> CYRILLIC CAPITAL LETTER JE
+    u'\u0404'   #  0xB8 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    u'\u0454'   #  0xB9 -> CYRILLIC SMALL LETTER UKRAINIAN IE
+    u'\u0407'   #  0xBA -> CYRILLIC CAPITAL LETTER YI
+    u'\u0457'   #  0xBB -> CYRILLIC SMALL LETTER YI
+    u'\u0409'   #  0xBC -> CYRILLIC CAPITAL LETTER LJE
+    u'\u0459'   #  0xBD -> CYRILLIC SMALL LETTER LJE
+    u'\u040a'   #  0xBE -> CYRILLIC CAPITAL LETTER NJE
+    u'\u045a'   #  0xBF -> CYRILLIC SMALL LETTER NJE
+    u'\u0458'   #  0xC0 -> CYRILLIC SMALL LETTER JE
+    u'\u0405'   #  0xC1 -> CYRILLIC CAPITAL LETTER DZE
+    u'\xac'     #  0xC2 -> NOT SIGN
+    u'\u221a'   #  0xC3 -> SQUARE ROOT
+    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'   #  0xC6 -> INCREMENT
+    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'     #  0xCA -> NO-BREAK SPACE
+    u'\u040b'   #  0xCB -> CYRILLIC CAPITAL LETTER TSHE
+    u'\u045b'   #  0xCC -> CYRILLIC SMALL LETTER TSHE
+    u'\u040c'   #  0xCD -> CYRILLIC CAPITAL LETTER KJE
+    u'\u045c'   #  0xCE -> CYRILLIC SMALL LETTER KJE
+    u'\u0455'   #  0xCF -> CYRILLIC SMALL LETTER DZE
+    u'\u2013'   #  0xD0 -> EN DASH
+    u'\u2014'   #  0xD1 -> EM DASH
+    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'     #  0xD6 -> DIVISION SIGN
+    u'\u201e'   #  0xD7 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u040e'   #  0xD8 -> CYRILLIC CAPITAL LETTER SHORT U
+    u'\u045e'   #  0xD9 -> CYRILLIC SMALL LETTER SHORT U
+    u'\u040f'   #  0xDA -> CYRILLIC CAPITAL LETTER DZHE
+    u'\u045f'   #  0xDB -> CYRILLIC SMALL LETTER DZHE
+    u'\u2116'   #  0xDC -> NUMERO SIGN
+    u'\u0401'   #  0xDD -> CYRILLIC CAPITAL LETTER IO
+    u'\u0451'   #  0xDE -> CYRILLIC SMALL LETTER IO
+    u'\u044f'   #  0xDF -> CYRILLIC SMALL LETTER YA
+    u'\u0430'   #  0xE0 -> CYRILLIC SMALL LETTER A
+    u'\u0431'   #  0xE1 -> CYRILLIC SMALL LETTER BE
+    u'\u0432'   #  0xE2 -> CYRILLIC SMALL LETTER VE
+    u'\u0433'   #  0xE3 -> CYRILLIC SMALL LETTER GHE
+    u'\u0434'   #  0xE4 -> CYRILLIC SMALL LETTER DE
+    u'\u0435'   #  0xE5 -> CYRILLIC SMALL LETTER IE
+    u'\u0436'   #  0xE6 -> CYRILLIC SMALL LETTER ZHE
+    u'\u0437'   #  0xE7 -> CYRILLIC SMALL LETTER ZE
+    u'\u0438'   #  0xE8 -> CYRILLIC SMALL LETTER I
+    u'\u0439'   #  0xE9 -> CYRILLIC SMALL LETTER SHORT I
+    u'\u043a'   #  0xEA -> CYRILLIC SMALL LETTER KA
+    u'\u043b'   #  0xEB -> CYRILLIC SMALL LETTER EL
+    u'\u043c'   #  0xEC -> CYRILLIC SMALL LETTER EM
+    u'\u043d'   #  0xED -> CYRILLIC SMALL LETTER EN
+    u'\u043e'   #  0xEE -> CYRILLIC SMALL LETTER O
+    u'\u043f'   #  0xEF -> CYRILLIC SMALL LETTER PE
+    u'\u0440'   #  0xF0 -> CYRILLIC SMALL LETTER ER
+    u'\u0441'   #  0xF1 -> CYRILLIC SMALL LETTER ES
+    u'\u0442'   #  0xF2 -> CYRILLIC SMALL LETTER TE
+    u'\u0443'   #  0xF3 -> CYRILLIC SMALL LETTER U
+    u'\u0444'   #  0xF4 -> CYRILLIC SMALL LETTER EF
+    u'\u0445'   #  0xF5 -> CYRILLIC SMALL LETTER HA
+    u'\u0446'   #  0xF6 -> CYRILLIC SMALL LETTER TSE
+    u'\u0447'   #  0xF7 -> CYRILLIC SMALL LETTER CHE
+    u'\u0448'   #  0xF8 -> CYRILLIC SMALL LETTER SHA
+    u'\u0449'   #  0xF9 -> CYRILLIC SMALL LETTER SHCHA
+    u'\u044a'   #  0xFA -> CYRILLIC SMALL LETTER HARD SIGN
+    u'\u044b'   #  0xFB -> CYRILLIC SMALL LETTER YERU
+    u'\u044c'   #  0xFC -> CYRILLIC SMALL LETTER SOFT SIGN
+    u'\u044d'   #  0xFD -> CYRILLIC SMALL LETTER E
+    u'\u044e'   #  0xFE -> CYRILLIC SMALL LETTER YU
+    u'\u20ac'   #  0xFF -> EURO SIGN
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  CONTROL CHARACTER
-    0x0001: 0x01,	#  CONTROL CHARACTER
-    0x0002: 0x02,	#  CONTROL CHARACTER
-    0x0003: 0x03,	#  CONTROL CHARACTER
-    0x0004: 0x04,	#  CONTROL CHARACTER
-    0x0005: 0x05,	#  CONTROL CHARACTER
-    0x0006: 0x06,	#  CONTROL CHARACTER
-    0x0007: 0x07,	#  CONTROL CHARACTER
-    0x0008: 0x08,	#  CONTROL CHARACTER
-    0x0009: 0x09,	#  CONTROL CHARACTER
-    0x000A: 0x0A,	#  CONTROL CHARACTER
-    0x000B: 0x0B,	#  CONTROL CHARACTER
-    0x000C: 0x0C,	#  CONTROL CHARACTER
-    0x000D: 0x0D,	#  CONTROL CHARACTER
-    0x000E: 0x0E,	#  CONTROL CHARACTER
-    0x000F: 0x0F,	#  CONTROL CHARACTER
-    0x0010: 0x10,	#  CONTROL CHARACTER
-    0x0011: 0x11,	#  CONTROL CHARACTER
-    0x0012: 0x12,	#  CONTROL CHARACTER
-    0x0013: 0x13,	#  CONTROL CHARACTER
-    0x0014: 0x14,	#  CONTROL CHARACTER
-    0x0015: 0x15,	#  CONTROL CHARACTER
-    0x0016: 0x16,	#  CONTROL CHARACTER
-    0x0017: 0x17,	#  CONTROL CHARACTER
-    0x0018: 0x18,	#  CONTROL CHARACTER
-    0x0019: 0x19,	#  CONTROL CHARACTER
-    0x001A: 0x1A,	#  CONTROL CHARACTER
-    0x001B: 0x1B,	#  CONTROL CHARACTER
-    0x001C: 0x1C,	#  CONTROL CHARACTER
-    0x001D: 0x1D,	#  CONTROL CHARACTER
-    0x001E: 0x1E,	#  CONTROL CHARACTER
-    0x001F: 0x1F,	#  CONTROL CHARACTER
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  CONTROL CHARACTER
-    0x00A0: 0xCA,	#  NO-BREAK SPACE
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A7: 0xA4,	#  SECTION SIGN
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xC7,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xC2,	#  NOT SIGN
-    0x00AE: 0xA8,	#  REGISTERED SIGN
-    0x00B0: 0xA1,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xA6,	#  PILCROW SIGN
-    0x00BB: 0xC8,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00F7: 0xD6,	#  DIVISION SIGN
-    0x0192: 0xC4,	#  LATIN SMALL LETTER F WITH HOOK
-    0x0401: 0xDD,	#  CYRILLIC CAPITAL LETTER IO
-    0x0402: 0xAB,	#  CYRILLIC CAPITAL LETTER DJE
-    0x0403: 0xAE,	#  CYRILLIC CAPITAL LETTER GJE
-    0x0404: 0xB8,	#  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0405: 0xC1,	#  CYRILLIC CAPITAL LETTER DZE
-    0x0406: 0xA7,	#  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0xBA,	#  CYRILLIC CAPITAL LETTER YI
-    0x0408: 0xB7,	#  CYRILLIC CAPITAL LETTER JE
-    0x0409: 0xBC,	#  CYRILLIC CAPITAL LETTER LJE
-    0x040A: 0xBE,	#  CYRILLIC CAPITAL LETTER NJE
-    0x040B: 0xCB,	#  CYRILLIC CAPITAL LETTER TSHE
-    0x040C: 0xCD,	#  CYRILLIC CAPITAL LETTER KJE
-    0x040E: 0xD8,	#  CYRILLIC CAPITAL LETTER SHORT U
-    0x040F: 0xDA,	#  CYRILLIC CAPITAL LETTER DZHE
-    0x0410: 0x80,	#  CYRILLIC CAPITAL LETTER A
-    0x0411: 0x81,	#  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0x82,	#  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0x83,	#  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0x84,	#  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0x85,	#  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0x86,	#  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0x87,	#  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0x88,	#  CYRILLIC CAPITAL LETTER I
-    0x0419: 0x89,	#  CYRILLIC CAPITAL LETTER SHORT I
-    0x041A: 0x8A,	#  CYRILLIC CAPITAL LETTER KA
-    0x041B: 0x8B,	#  CYRILLIC CAPITAL LETTER EL
-    0x041C: 0x8C,	#  CYRILLIC CAPITAL LETTER EM
-    0x041D: 0x8D,	#  CYRILLIC CAPITAL LETTER EN
-    0x041E: 0x8E,	#  CYRILLIC CAPITAL LETTER O
-    0x041F: 0x8F,	#  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0x90,	#  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0x91,	#  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0x92,	#  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0x93,	#  CYRILLIC CAPITAL LETTER U
-    0x0424: 0x94,	#  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0x95,	#  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0x96,	#  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0x97,	#  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0x98,	#  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0x99,	#  CYRILLIC CAPITAL LETTER SHCHA
-    0x042A: 0x9A,	#  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042B: 0x9B,	#  CYRILLIC CAPITAL LETTER YERU
-    0x042C: 0x9C,	#  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042D: 0x9D,	#  CYRILLIC CAPITAL LETTER E
-    0x042E: 0x9E,	#  CYRILLIC CAPITAL LETTER YU
-    0x042F: 0x9F,	#  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0xE0,	#  CYRILLIC SMALL LETTER A
-    0x0431: 0xE1,	#  CYRILLIC SMALL LETTER BE
-    0x0432: 0xE2,	#  CYRILLIC SMALL LETTER VE
-    0x0433: 0xE3,	#  CYRILLIC SMALL LETTER GHE
-    0x0434: 0xE4,	#  CYRILLIC SMALL LETTER DE
-    0x0435: 0xE5,	#  CYRILLIC SMALL LETTER IE
-    0x0436: 0xE6,	#  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0xE7,	#  CYRILLIC SMALL LETTER ZE
-    0x0438: 0xE8,	#  CYRILLIC SMALL LETTER I
-    0x0439: 0xE9,	#  CYRILLIC SMALL LETTER SHORT I
-    0x043A: 0xEA,	#  CYRILLIC SMALL LETTER KA
-    0x043B: 0xEB,	#  CYRILLIC SMALL LETTER EL
-    0x043C: 0xEC,	#  CYRILLIC SMALL LETTER EM
-    0x043D: 0xED,	#  CYRILLIC SMALL LETTER EN
-    0x043E: 0xEE,	#  CYRILLIC SMALL LETTER O
-    0x043F: 0xEF,	#  CYRILLIC SMALL LETTER PE
-    0x0440: 0xF0,	#  CYRILLIC SMALL LETTER ER
-    0x0441: 0xF1,	#  CYRILLIC SMALL LETTER ES
-    0x0442: 0xF2,	#  CYRILLIC SMALL LETTER TE
-    0x0443: 0xF3,	#  CYRILLIC SMALL LETTER U
-    0x0444: 0xF4,	#  CYRILLIC SMALL LETTER EF
-    0x0445: 0xF5,	#  CYRILLIC SMALL LETTER HA
-    0x0446: 0xF6,	#  CYRILLIC SMALL LETTER TSE
-    0x0447: 0xF7,	#  CYRILLIC SMALL LETTER CHE
-    0x0448: 0xF8,	#  CYRILLIC SMALL LETTER SHA
-    0x0449: 0xF9,	#  CYRILLIC SMALL LETTER SHCHA
-    0x044A: 0xFA,	#  CYRILLIC SMALL LETTER HARD SIGN
-    0x044B: 0xFB,	#  CYRILLIC SMALL LETTER YERU
-    0x044C: 0xFC,	#  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044D: 0xFD,	#  CYRILLIC SMALL LETTER E
-    0x044E: 0xFE,	#  CYRILLIC SMALL LETTER YU
-    0x044F: 0xDF,	#  CYRILLIC SMALL LETTER YA
-    0x0451: 0xDE,	#  CYRILLIC SMALL LETTER IO
-    0x0452: 0xAC,	#  CYRILLIC SMALL LETTER DJE
-    0x0453: 0xAF,	#  CYRILLIC SMALL LETTER GJE
-    0x0454: 0xB9,	#  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0455: 0xCF,	#  CYRILLIC SMALL LETTER DZE
-    0x0456: 0xB4,	#  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0xBB,	#  CYRILLIC SMALL LETTER YI
-    0x0458: 0xC0,	#  CYRILLIC SMALL LETTER JE
-    0x0459: 0xBD,	#  CYRILLIC SMALL LETTER LJE
-    0x045A: 0xBF,	#  CYRILLIC SMALL LETTER NJE
-    0x045B: 0xCC,	#  CYRILLIC SMALL LETTER TSHE
-    0x045C: 0xCE,	#  CYRILLIC SMALL LETTER KJE
-    0x045E: 0xD9,	#  CYRILLIC SMALL LETTER SHORT U
-    0x045F: 0xDB,	#  CYRILLIC SMALL LETTER DZHE
-    0x0490: 0xA2,	#  CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    0x0491: 0xB6,	#  CYRILLIC SMALL LETTER GHE WITH UPTURN
-    0x2013: 0xD0,	#  EN DASH
-    0x2014: 0xD1,	#  EM DASH
-    0x2018: 0xD4,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xD5,	#  RIGHT SINGLE QUOTATION MARK
-    0x201C: 0xD2,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0xD3,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0xD7,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xA0,	#  DAGGER
-    0x2022: 0xA5,	#  BULLET
-    0x2026: 0xC9,	#  HORIZONTAL ELLIPSIS
-    0x20AC: 0xFF,	#  EURO SIGN
-    0x2116: 0xDC,	#  NUMERO SIGN
-    0x2122: 0xAA,	#  TRADE MARK SIGN
-    0x2206: 0xC6,	#  INCREMENT
-    0x221A: 0xC3,	#  SQUARE ROOT
-    0x221E: 0xB0,	#  INFINITY
-    0x2248: 0xC5,	#  ALMOST EQUAL TO
-    0x2260: 0xAD,	#  NOT EQUAL TO
-    0x2264: 0xB2,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0xB3,	#  GREATER-THAN OR EQUAL TO
+    0x0000: 0x00,       #  CONTROL CHARACTER
+    0x0001: 0x01,       #  CONTROL CHARACTER
+    0x0002: 0x02,       #  CONTROL CHARACTER
+    0x0003: 0x03,       #  CONTROL CHARACTER
+    0x0004: 0x04,       #  CONTROL CHARACTER
+    0x0005: 0x05,       #  CONTROL CHARACTER
+    0x0006: 0x06,       #  CONTROL CHARACTER
+    0x0007: 0x07,       #  CONTROL CHARACTER
+    0x0008: 0x08,       #  CONTROL CHARACTER
+    0x0009: 0x09,       #  CONTROL CHARACTER
+    0x000A: 0x0A,       #  CONTROL CHARACTER
+    0x000B: 0x0B,       #  CONTROL CHARACTER
+    0x000C: 0x0C,       #  CONTROL CHARACTER
+    0x000D: 0x0D,       #  CONTROL CHARACTER
+    0x000E: 0x0E,       #  CONTROL CHARACTER
+    0x000F: 0x0F,       #  CONTROL CHARACTER
+    0x0010: 0x10,       #  CONTROL CHARACTER
+    0x0011: 0x11,       #  CONTROL CHARACTER
+    0x0012: 0x12,       #  CONTROL CHARACTER
+    0x0013: 0x13,       #  CONTROL CHARACTER
+    0x0014: 0x14,       #  CONTROL CHARACTER
+    0x0015: 0x15,       #  CONTROL CHARACTER
+    0x0016: 0x16,       #  CONTROL CHARACTER
+    0x0017: 0x17,       #  CONTROL CHARACTER
+    0x0018: 0x18,       #  CONTROL CHARACTER
+    0x0019: 0x19,       #  CONTROL CHARACTER
+    0x001A: 0x1A,       #  CONTROL CHARACTER
+    0x001B: 0x1B,       #  CONTROL CHARACTER
+    0x001C: 0x1C,       #  CONTROL CHARACTER
+    0x001D: 0x1D,       #  CONTROL CHARACTER
+    0x001E: 0x1E,       #  CONTROL CHARACTER
+    0x001F: 0x1F,       #  CONTROL CHARACTER
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  CONTROL CHARACTER
+    0x00A0: 0xCA,       #  NO-BREAK SPACE
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A7: 0xA4,       #  SECTION SIGN
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xC7,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,       #  NOT SIGN
+    0x00AE: 0xA8,       #  REGISTERED SIGN
+    0x00B0: 0xA1,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xA6,       #  PILCROW SIGN
+    0x00BB: 0xC8,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00F7: 0xD6,       #  DIVISION SIGN
+    0x0192: 0xC4,       #  LATIN SMALL LETTER F WITH HOOK
+    0x0401: 0xDD,       #  CYRILLIC CAPITAL LETTER IO
+    0x0402: 0xAB,       #  CYRILLIC CAPITAL LETTER DJE
+    0x0403: 0xAE,       #  CYRILLIC CAPITAL LETTER GJE
+    0x0404: 0xB8,       #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
+    0x0405: 0xC1,       #  CYRILLIC CAPITAL LETTER DZE
+    0x0406: 0xA7,       #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0407: 0xBA,       #  CYRILLIC CAPITAL LETTER YI
+    0x0408: 0xB7,       #  CYRILLIC CAPITAL LETTER JE
+    0x0409: 0xBC,       #  CYRILLIC CAPITAL LETTER LJE
+    0x040A: 0xBE,       #  CYRILLIC CAPITAL LETTER NJE
+    0x040B: 0xCB,       #  CYRILLIC CAPITAL LETTER TSHE
+    0x040C: 0xCD,       #  CYRILLIC CAPITAL LETTER KJE
+    0x040E: 0xD8,       #  CYRILLIC CAPITAL LETTER SHORT U
+    0x040F: 0xDA,       #  CYRILLIC CAPITAL LETTER DZHE
+    0x0410: 0x80,       #  CYRILLIC CAPITAL LETTER A
+    0x0411: 0x81,       #  CYRILLIC CAPITAL LETTER BE
+    0x0412: 0x82,       #  CYRILLIC CAPITAL LETTER VE
+    0x0413: 0x83,       #  CYRILLIC CAPITAL LETTER GHE
+    0x0414: 0x84,       #  CYRILLIC CAPITAL LETTER DE
+    0x0415: 0x85,       #  CYRILLIC CAPITAL LETTER IE
+    0x0416: 0x86,       #  CYRILLIC CAPITAL LETTER ZHE
+    0x0417: 0x87,       #  CYRILLIC CAPITAL LETTER ZE
+    0x0418: 0x88,       #  CYRILLIC CAPITAL LETTER I
+    0x0419: 0x89,       #  CYRILLIC CAPITAL LETTER SHORT I
+    0x041A: 0x8A,       #  CYRILLIC CAPITAL LETTER KA
+    0x041B: 0x8B,       #  CYRILLIC CAPITAL LETTER EL
+    0x041C: 0x8C,       #  CYRILLIC CAPITAL LETTER EM
+    0x041D: 0x8D,       #  CYRILLIC CAPITAL LETTER EN
+    0x041E: 0x8E,       #  CYRILLIC CAPITAL LETTER O
+    0x041F: 0x8F,       #  CYRILLIC CAPITAL LETTER PE
+    0x0420: 0x90,       #  CYRILLIC CAPITAL LETTER ER
+    0x0421: 0x91,       #  CYRILLIC CAPITAL LETTER ES
+    0x0422: 0x92,       #  CYRILLIC CAPITAL LETTER TE
+    0x0423: 0x93,       #  CYRILLIC CAPITAL LETTER U
+    0x0424: 0x94,       #  CYRILLIC CAPITAL LETTER EF
+    0x0425: 0x95,       #  CYRILLIC CAPITAL LETTER HA
+    0x0426: 0x96,       #  CYRILLIC CAPITAL LETTER TSE
+    0x0427: 0x97,       #  CYRILLIC CAPITAL LETTER CHE
+    0x0428: 0x98,       #  CYRILLIC CAPITAL LETTER SHA
+    0x0429: 0x99,       #  CYRILLIC CAPITAL LETTER SHCHA
+    0x042A: 0x9A,       #  CYRILLIC CAPITAL LETTER HARD SIGN
+    0x042B: 0x9B,       #  CYRILLIC CAPITAL LETTER YERU
+    0x042C: 0x9C,       #  CYRILLIC CAPITAL LETTER SOFT SIGN
+    0x042D: 0x9D,       #  CYRILLIC CAPITAL LETTER E
+    0x042E: 0x9E,       #  CYRILLIC CAPITAL LETTER YU
+    0x042F: 0x9F,       #  CYRILLIC CAPITAL LETTER YA
+    0x0430: 0xE0,       #  CYRILLIC SMALL LETTER A
+    0x0431: 0xE1,       #  CYRILLIC SMALL LETTER BE
+    0x0432: 0xE2,       #  CYRILLIC SMALL LETTER VE
+    0x0433: 0xE3,       #  CYRILLIC SMALL LETTER GHE
+    0x0434: 0xE4,       #  CYRILLIC SMALL LETTER DE
+    0x0435: 0xE5,       #  CYRILLIC SMALL LETTER IE
+    0x0436: 0xE6,       #  CYRILLIC SMALL LETTER ZHE
+    0x0437: 0xE7,       #  CYRILLIC SMALL LETTER ZE
+    0x0438: 0xE8,       #  CYRILLIC SMALL LETTER I
+    0x0439: 0xE9,       #  CYRILLIC SMALL LETTER SHORT I
+    0x043A: 0xEA,       #  CYRILLIC SMALL LETTER KA
+    0x043B: 0xEB,       #  CYRILLIC SMALL LETTER EL
+    0x043C: 0xEC,       #  CYRILLIC SMALL LETTER EM
+    0x043D: 0xED,       #  CYRILLIC SMALL LETTER EN
+    0x043E: 0xEE,       #  CYRILLIC SMALL LETTER O
+    0x043F: 0xEF,       #  CYRILLIC SMALL LETTER PE
+    0x0440: 0xF0,       #  CYRILLIC SMALL LETTER ER
+    0x0441: 0xF1,       #  CYRILLIC SMALL LETTER ES
+    0x0442: 0xF2,       #  CYRILLIC SMALL LETTER TE
+    0x0443: 0xF3,       #  CYRILLIC SMALL LETTER U
+    0x0444: 0xF4,       #  CYRILLIC SMALL LETTER EF
+    0x0445: 0xF5,       #  CYRILLIC SMALL LETTER HA
+    0x0446: 0xF6,       #  CYRILLIC SMALL LETTER TSE
+    0x0447: 0xF7,       #  CYRILLIC SMALL LETTER CHE
+    0x0448: 0xF8,       #  CYRILLIC SMALL LETTER SHA
+    0x0449: 0xF9,       #  CYRILLIC SMALL LETTER SHCHA
+    0x044A: 0xFA,       #  CYRILLIC SMALL LETTER HARD SIGN
+    0x044B: 0xFB,       #  CYRILLIC SMALL LETTER YERU
+    0x044C: 0xFC,       #  CYRILLIC SMALL LETTER SOFT SIGN
+    0x044D: 0xFD,       #  CYRILLIC SMALL LETTER E
+    0x044E: 0xFE,       #  CYRILLIC SMALL LETTER YU
+    0x044F: 0xDF,       #  CYRILLIC SMALL LETTER YA
+    0x0451: 0xDE,       #  CYRILLIC SMALL LETTER IO
+    0x0452: 0xAC,       #  CYRILLIC SMALL LETTER DJE
+    0x0453: 0xAF,       #  CYRILLIC SMALL LETTER GJE
+    0x0454: 0xB9,       #  CYRILLIC SMALL LETTER UKRAINIAN IE
+    0x0455: 0xCF,       #  CYRILLIC SMALL LETTER DZE
+    0x0456: 0xB4,       #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    0x0457: 0xBB,       #  CYRILLIC SMALL LETTER YI
+    0x0458: 0xC0,       #  CYRILLIC SMALL LETTER JE
+    0x0459: 0xBD,       #  CYRILLIC SMALL LETTER LJE
+    0x045A: 0xBF,       #  CYRILLIC SMALL LETTER NJE
+    0x045B: 0xCC,       #  CYRILLIC SMALL LETTER TSHE
+    0x045C: 0xCE,       #  CYRILLIC SMALL LETTER KJE
+    0x045E: 0xD9,       #  CYRILLIC SMALL LETTER SHORT U
+    0x045F: 0xDB,       #  CYRILLIC SMALL LETTER DZHE
+    0x0490: 0xA2,       #  CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+    0x0491: 0xB6,       #  CYRILLIC SMALL LETTER GHE WITH UPTURN
+    0x2013: 0xD0,       #  EN DASH
+    0x2014: 0xD1,       #  EM DASH
+    0x2018: 0xD4,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,       #  RIGHT SINGLE QUOTATION MARK
+    0x201C: 0xD2,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xD7,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,       #  DAGGER
+    0x2022: 0xA5,       #  BULLET
+    0x2026: 0xC9,       #  HORIZONTAL ELLIPSIS
+    0x20AC: 0xFF,       #  EURO SIGN
+    0x2116: 0xDC,       #  NUMERO SIGN
+    0x2122: 0xAA,       #  TRADE MARK SIGN
+    0x2206: 0xC6,       #  INCREMENT
+    0x221A: 0xC3,       #  SQUARE ROOT
+    0x221E: 0xB0,       #  INFINITY
+    0x2248: 0xC5,       #  ALMOST EQUAL TO
+    0x2260: 0xAD,       #  NOT EQUAL TO
+    0x2264: 0xB2,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,       #  GREATER-THAN OR EQUAL TO
 }
-

Modified: python/trunk/Lib/encodings/mac_farsi.py
==============================================================================
--- python/trunk/Lib/encodings/mac_farsi.py	(original)
+++ python/trunk/Lib/encodings/mac_farsi.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> CONTROL CHARACTER
-    u'\x01'	#  0x01 -> CONTROL CHARACTER
-    u'\x02'	#  0x02 -> CONTROL CHARACTER
-    u'\x03'	#  0x03 -> CONTROL CHARACTER
-    u'\x04'	#  0x04 -> CONTROL CHARACTER
-    u'\x05'	#  0x05 -> CONTROL CHARACTER
-    u'\x06'	#  0x06 -> CONTROL CHARACTER
-    u'\x07'	#  0x07 -> CONTROL CHARACTER
-    u'\x08'	#  0x08 -> CONTROL CHARACTER
-    u'\t'	#  0x09 -> CONTROL CHARACTER
-    u'\n'	#  0x0A -> CONTROL CHARACTER
-    u'\x0b'	#  0x0B -> CONTROL CHARACTER
-    u'\x0c'	#  0x0C -> CONTROL CHARACTER
-    u'\r'	#  0x0D -> CONTROL CHARACTER
-    u'\x0e'	#  0x0E -> CONTROL CHARACTER
-    u'\x0f'	#  0x0F -> CONTROL CHARACTER
-    u'\x10'	#  0x10 -> CONTROL CHARACTER
-    u'\x11'	#  0x11 -> CONTROL CHARACTER
-    u'\x12'	#  0x12 -> CONTROL CHARACTER
-    u'\x13'	#  0x13 -> CONTROL CHARACTER
-    u'\x14'	#  0x14 -> CONTROL CHARACTER
-    u'\x15'	#  0x15 -> CONTROL CHARACTER
-    u'\x16'	#  0x16 -> CONTROL CHARACTER
-    u'\x17'	#  0x17 -> CONTROL CHARACTER
-    u'\x18'	#  0x18 -> CONTROL CHARACTER
-    u'\x19'	#  0x19 -> CONTROL CHARACTER
-    u'\x1a'	#  0x1A -> CONTROL CHARACTER
-    u'\x1b'	#  0x1B -> CONTROL CHARACTER
-    u'\x1c'	#  0x1C -> CONTROL CHARACTER
-    u'\x1d'	#  0x1D -> CONTROL CHARACTER
-    u'\x1e'	#  0x1E -> CONTROL CHARACTER
-    u'\x1f'	#  0x1F -> CONTROL CHARACTER
-    u' '	#  0x20 -> SPACE, left-right
-    u'!'	#  0x21 -> EXCLAMATION MARK, left-right
-    u'"'	#  0x22 -> QUOTATION MARK, left-right
-    u'#'	#  0x23 -> NUMBER SIGN, left-right
-    u'$'	#  0x24 -> DOLLAR SIGN, left-right
-    u'%'	#  0x25 -> PERCENT SIGN, left-right
-    u'&'	#  0x26 -> AMPERSAND, left-right
-    u"'"	#  0x27 -> APOSTROPHE, left-right
-    u'('	#  0x28 -> LEFT PARENTHESIS, left-right
-    u')'	#  0x29 -> RIGHT PARENTHESIS, left-right
-    u'*'	#  0x2A -> ASTERISK, left-right
-    u'+'	#  0x2B -> PLUS SIGN, left-right
-    u','	#  0x2C -> COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-    u'-'	#  0x2D -> HYPHEN-MINUS, left-right
-    u'.'	#  0x2E -> FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-    u'/'	#  0x2F -> SOLIDUS, left-right
-    u'0'	#  0x30 -> DIGIT ZERO;  in Arabic-script context, displayed as 0x06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE;   in Arabic-script context, displayed as 0x06F1 EXTENDED ARABIC-INDIC DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO;   in Arabic-script context, displayed as 0x06F2 EXTENDED ARABIC-INDIC DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE; in Arabic-script context, displayed as 0x06F3 EXTENDED ARABIC-INDIC DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR;  in Arabic-script context, displayed as 0x06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE;  in Arabic-script context, displayed as 0x06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX;   in Arabic-script context, displayed as 0x06F6 EXTENDED ARABIC-INDIC DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN; in Arabic-script context, displayed as 0x06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT; in Arabic-script context, displayed as 0x06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE;  in Arabic-script context, displayed as 0x06F9 EXTENDED ARABIC-INDIC DIGIT NINE
-    u':'	#  0x3A -> COLON, left-right
-    u';'	#  0x3B -> SEMICOLON, left-right
-    u'<'	#  0x3C -> LESS-THAN SIGN, left-right
-    u'='	#  0x3D -> EQUALS SIGN, left-right
-    u'>'	#  0x3E -> GREATER-THAN SIGN, left-right
-    u'?'	#  0x3F -> QUESTION MARK, left-right
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET, left-right
-    u'\\'	#  0x5C -> REVERSE SOLIDUS, left-right
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET, left-right
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT, left-right
-    u'_'	#  0x5F -> LOW LINE, left-right
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET, left-right
-    u'|'	#  0x7C -> VERTICAL LINE, left-right
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET, left-right
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> CONTROL CHARACTER
-    u'\xc4'	#  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xa0'	#  0x81 -> NO-BREAK SPACE, right-left
-    u'\xc7'	#  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'	#  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'	#  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'	#  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'	#  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'	#  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'	#  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u06ba'	#  0x8B -> ARABIC LETTER NOON GHUNNA
-    u'\xab'	#  0x8C -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    u'\xe7'	#  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'	#  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'	#  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'	#  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'	#  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\u2026'	#  0x93 -> HORIZONTAL ELLIPSIS, right-left
-    u'\xee'	#  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'	#  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'	#  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xbb'	#  0x98 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    u'\xf4'	#  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'	#  0x9B -> DIVISION SIGN, right-left
-    u'\xfa'	#  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'	#  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'	#  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u' '	#  0xA0 -> SPACE, right-left
-    u'!'	#  0xA1 -> EXCLAMATION MARK, right-left
-    u'"'	#  0xA2 -> QUOTATION MARK, right-left
-    u'#'	#  0xA3 -> NUMBER SIGN, right-left
-    u'$'	#  0xA4 -> DOLLAR SIGN, right-left
-    u'\u066a'	#  0xA5 -> ARABIC PERCENT SIGN
-    u'&'	#  0xA6 -> AMPERSAND, right-left
-    u"'"	#  0xA7 -> APOSTROPHE, right-left
-    u'('	#  0xA8 -> LEFT PARENTHESIS, right-left
-    u')'	#  0xA9 -> RIGHT PARENTHESIS, right-left
-    u'*'	#  0xAA -> ASTERISK, right-left
-    u'+'	#  0xAB -> PLUS SIGN, right-left
-    u'\u060c'	#  0xAC -> ARABIC COMMA
-    u'-'	#  0xAD -> HYPHEN-MINUS, right-left
-    u'.'	#  0xAE -> FULL STOP, right-left
-    u'/'	#  0xAF -> SOLIDUS, right-left
-    u'\u06f0'	#  0xB0 -> EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    u'\u06f1'	#  0xB1 -> EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
-    u'\u06f2'	#  0xB2 -> EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
-    u'\u06f3'	#  0xB3 -> EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
-    u'\u06f4'	#  0xB4 -> EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    u'\u06f5'	#  0xB5 -> EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    u'\u06f6'	#  0xB6 -> EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
-    u'\u06f7'	#  0xB7 -> EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    u'\u06f8'	#  0xB8 -> EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    u'\u06f9'	#  0xB9 -> EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
-    u':'	#  0xBA -> COLON, right-left
-    u'\u061b'	#  0xBB -> ARABIC SEMICOLON
-    u'<'	#  0xBC -> LESS-THAN SIGN, right-left
-    u'='	#  0xBD -> EQUALS SIGN, right-left
-    u'>'	#  0xBE -> GREATER-THAN SIGN, right-left
-    u'\u061f'	#  0xBF -> ARABIC QUESTION MARK
-    u'\u274a'	#  0xC0 -> EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-    u'\u0621'	#  0xC1 -> ARABIC LETTER HAMZA
-    u'\u0622'	#  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'	#  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'	#  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'	#  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'	#  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'	#  0xC7 -> ARABIC LETTER ALEF
-    u'\u0628'	#  0xC8 -> ARABIC LETTER BEH
-    u'\u0629'	#  0xC9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'	#  0xCA -> ARABIC LETTER TEH
-    u'\u062b'	#  0xCB -> ARABIC LETTER THEH
-    u'\u062c'	#  0xCC -> ARABIC LETTER JEEM
-    u'\u062d'	#  0xCD -> ARABIC LETTER HAH
-    u'\u062e'	#  0xCE -> ARABIC LETTER KHAH
-    u'\u062f'	#  0xCF -> ARABIC LETTER DAL
-    u'\u0630'	#  0xD0 -> ARABIC LETTER THAL
-    u'\u0631'	#  0xD1 -> ARABIC LETTER REH
-    u'\u0632'	#  0xD2 -> ARABIC LETTER ZAIN
-    u'\u0633'	#  0xD3 -> ARABIC LETTER SEEN
-    u'\u0634'	#  0xD4 -> ARABIC LETTER SHEEN
-    u'\u0635'	#  0xD5 -> ARABIC LETTER SAD
-    u'\u0636'	#  0xD6 -> ARABIC LETTER DAD
-    u'\u0637'	#  0xD7 -> ARABIC LETTER TAH
-    u'\u0638'	#  0xD8 -> ARABIC LETTER ZAH
-    u'\u0639'	#  0xD9 -> ARABIC LETTER AIN
-    u'\u063a'	#  0xDA -> ARABIC LETTER GHAIN
-    u'['	#  0xDB -> LEFT SQUARE BRACKET, right-left
-    u'\\'	#  0xDC -> REVERSE SOLIDUS, right-left
-    u']'	#  0xDD -> RIGHT SQUARE BRACKET, right-left
-    u'^'	#  0xDE -> CIRCUMFLEX ACCENT, right-left
-    u'_'	#  0xDF -> LOW LINE, right-left
-    u'\u0640'	#  0xE0 -> ARABIC TATWEEL
-    u'\u0641'	#  0xE1 -> ARABIC LETTER FEH
-    u'\u0642'	#  0xE2 -> ARABIC LETTER QAF
-    u'\u0643'	#  0xE3 -> ARABIC LETTER KAF
-    u'\u0644'	#  0xE4 -> ARABIC LETTER LAM
-    u'\u0645'	#  0xE5 -> ARABIC LETTER MEEM
-    u'\u0646'	#  0xE6 -> ARABIC LETTER NOON
-    u'\u0647'	#  0xE7 -> ARABIC LETTER HEH
-    u'\u0648'	#  0xE8 -> ARABIC LETTER WAW
-    u'\u0649'	#  0xE9 -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'	#  0xEA -> ARABIC LETTER YEH
-    u'\u064b'	#  0xEB -> ARABIC FATHATAN
-    u'\u064c'	#  0xEC -> ARABIC DAMMATAN
-    u'\u064d'	#  0xED -> ARABIC KASRATAN
-    u'\u064e'	#  0xEE -> ARABIC FATHA
-    u'\u064f'	#  0xEF -> ARABIC DAMMA
-    u'\u0650'	#  0xF0 -> ARABIC KASRA
-    u'\u0651'	#  0xF1 -> ARABIC SHADDA
-    u'\u0652'	#  0xF2 -> ARABIC SUKUN
-    u'\u067e'	#  0xF3 -> ARABIC LETTER PEH
-    u'\u0679'	#  0xF4 -> ARABIC LETTER TTEH
-    u'\u0686'	#  0xF5 -> ARABIC LETTER TCHEH
-    u'\u06d5'	#  0xF6 -> ARABIC LETTER AE
-    u'\u06a4'	#  0xF7 -> ARABIC LETTER VEH
-    u'\u06af'	#  0xF8 -> ARABIC LETTER GAF
-    u'\u0688'	#  0xF9 -> ARABIC LETTER DDAL
-    u'\u0691'	#  0xFA -> ARABIC LETTER RREH
-    u'{'	#  0xFB -> LEFT CURLY BRACKET, right-left
-    u'|'	#  0xFC -> VERTICAL LINE, right-left
-    u'}'	#  0xFD -> RIGHT CURLY BRACKET, right-left
-    u'\u0698'	#  0xFE -> ARABIC LETTER JEH
-    u'\u06d2'	#  0xFF -> ARABIC LETTER YEH BARREE
+    u'\x00'     #  0x00 -> CONTROL CHARACTER
+    u'\x01'     #  0x01 -> CONTROL CHARACTER
+    u'\x02'     #  0x02 -> CONTROL CHARACTER
+    u'\x03'     #  0x03 -> CONTROL CHARACTER
+    u'\x04'     #  0x04 -> CONTROL CHARACTER
+    u'\x05'     #  0x05 -> CONTROL CHARACTER
+    u'\x06'     #  0x06 -> CONTROL CHARACTER
+    u'\x07'     #  0x07 -> CONTROL CHARACTER
+    u'\x08'     #  0x08 -> CONTROL CHARACTER
+    u'\t'       #  0x09 -> CONTROL CHARACTER
+    u'\n'       #  0x0A -> CONTROL CHARACTER
+    u'\x0b'     #  0x0B -> CONTROL CHARACTER
+    u'\x0c'     #  0x0C -> CONTROL CHARACTER
+    u'\r'       #  0x0D -> CONTROL CHARACTER
+    u'\x0e'     #  0x0E -> CONTROL CHARACTER
+    u'\x0f'     #  0x0F -> CONTROL CHARACTER
+    u'\x10'     #  0x10 -> CONTROL CHARACTER
+    u'\x11'     #  0x11 -> CONTROL CHARACTER
+    u'\x12'     #  0x12 -> CONTROL CHARACTER
+    u'\x13'     #  0x13 -> CONTROL CHARACTER
+    u'\x14'     #  0x14 -> CONTROL CHARACTER
+    u'\x15'     #  0x15 -> CONTROL CHARACTER
+    u'\x16'     #  0x16 -> CONTROL CHARACTER
+    u'\x17'     #  0x17 -> CONTROL CHARACTER
+    u'\x18'     #  0x18 -> CONTROL CHARACTER
+    u'\x19'     #  0x19 -> CONTROL CHARACTER
+    u'\x1a'     #  0x1A -> CONTROL CHARACTER
+    u'\x1b'     #  0x1B -> CONTROL CHARACTER
+    u'\x1c'     #  0x1C -> CONTROL CHARACTER
+    u'\x1d'     #  0x1D -> CONTROL CHARACTER
+    u'\x1e'     #  0x1E -> CONTROL CHARACTER
+    u'\x1f'     #  0x1F -> CONTROL CHARACTER
+    u' '        #  0x20 -> SPACE, left-right
+    u'!'        #  0x21 -> EXCLAMATION MARK, left-right
+    u'"'        #  0x22 -> QUOTATION MARK, left-right
+    u'#'        #  0x23 -> NUMBER SIGN, left-right
+    u'$'        #  0x24 -> DOLLAR SIGN, left-right
+    u'%'        #  0x25 -> PERCENT SIGN, left-right
+    u'&'        #  0x26 -> AMPERSAND, left-right
+    u"'"        #  0x27 -> APOSTROPHE, left-right
+    u'('        #  0x28 -> LEFT PARENTHESIS, left-right
+    u')'        #  0x29 -> RIGHT PARENTHESIS, left-right
+    u'*'        #  0x2A -> ASTERISK, left-right
+    u'+'        #  0x2B -> PLUS SIGN, left-right
+    u','        #  0x2C -> COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
+    u'-'        #  0x2D -> HYPHEN-MINUS, left-right
+    u'.'        #  0x2E -> FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
+    u'/'        #  0x2F -> SOLIDUS, left-right
+    u'0'        #  0x30 -> DIGIT ZERO;  in Arabic-script context, displayed as 0x06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE;   in Arabic-script context, displayed as 0x06F1 EXTENDED ARABIC-INDIC DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO;   in Arabic-script context, displayed as 0x06F2 EXTENDED ARABIC-INDIC DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE; in Arabic-script context, displayed as 0x06F3 EXTENDED ARABIC-INDIC DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR;  in Arabic-script context, displayed as 0x06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE;  in Arabic-script context, displayed as 0x06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX;   in Arabic-script context, displayed as 0x06F6 EXTENDED ARABIC-INDIC DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN; in Arabic-script context, displayed as 0x06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT; in Arabic-script context, displayed as 0x06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE;  in Arabic-script context, displayed as 0x06F9 EXTENDED ARABIC-INDIC DIGIT NINE
+    u':'        #  0x3A -> COLON, left-right
+    u';'        #  0x3B -> SEMICOLON, left-right
+    u'<'        #  0x3C -> LESS-THAN SIGN, left-right
+    u'='        #  0x3D -> EQUALS SIGN, left-right
+    u'>'        #  0x3E -> GREATER-THAN SIGN, left-right
+    u'?'        #  0x3F -> QUESTION MARK, left-right
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET, left-right
+    u'\\'       #  0x5C -> REVERSE SOLIDUS, left-right
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET, left-right
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT, left-right
+    u'_'        #  0x5F -> LOW LINE, left-right
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET, left-right
+    u'|'        #  0x7C -> VERTICAL LINE, left-right
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET, left-right
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> CONTROL CHARACTER
+    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xa0'     #  0x81 -> NO-BREAK SPACE, right-left
+    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u06ba'   #  0x8B -> ARABIC LETTER NOON GHUNNA
+    u'\xab'     #  0x8C -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\u2026'   #  0x93 -> HORIZONTAL ELLIPSIS, right-left
+    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xbb'     #  0x98 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf7'     #  0x9B -> DIVISION SIGN, right-left
+    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u' '        #  0xA0 -> SPACE, right-left
+    u'!'        #  0xA1 -> EXCLAMATION MARK, right-left
+    u'"'        #  0xA2 -> QUOTATION MARK, right-left
+    u'#'        #  0xA3 -> NUMBER SIGN, right-left
+    u'$'        #  0xA4 -> DOLLAR SIGN, right-left
+    u'\u066a'   #  0xA5 -> ARABIC PERCENT SIGN
+    u'&'        #  0xA6 -> AMPERSAND, right-left
+    u"'"        #  0xA7 -> APOSTROPHE, right-left
+    u'('        #  0xA8 -> LEFT PARENTHESIS, right-left
+    u')'        #  0xA9 -> RIGHT PARENTHESIS, right-left
+    u'*'        #  0xAA -> ASTERISK, right-left
+    u'+'        #  0xAB -> PLUS SIGN, right-left
+    u'\u060c'   #  0xAC -> ARABIC COMMA
+    u'-'        #  0xAD -> HYPHEN-MINUS, right-left
+    u'.'        #  0xAE -> FULL STOP, right-left
+    u'/'        #  0xAF -> SOLIDUS, right-left
+    u'\u06f0'   #  0xB0 -> EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
+    u'\u06f1'   #  0xB1 -> EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
+    u'\u06f2'   #  0xB2 -> EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
+    u'\u06f3'   #  0xB3 -> EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
+    u'\u06f4'   #  0xB4 -> EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
+    u'\u06f5'   #  0xB5 -> EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
+    u'\u06f6'   #  0xB6 -> EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
+    u'\u06f7'   #  0xB7 -> EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
+    u'\u06f8'   #  0xB8 -> EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
+    u'\u06f9'   #  0xB9 -> EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
+    u':'        #  0xBA -> COLON, right-left
+    u'\u061b'   #  0xBB -> ARABIC SEMICOLON
+    u'<'        #  0xBC -> LESS-THAN SIGN, right-left
+    u'='        #  0xBD -> EQUALS SIGN, right-left
+    u'>'        #  0xBE -> GREATER-THAN SIGN, right-left
+    u'\u061f'   #  0xBF -> ARABIC QUESTION MARK
+    u'\u274a'   #  0xC0 -> EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
+    u'\u0621'   #  0xC1 -> ARABIC LETTER HAMZA
+    u'\u0622'   #  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
+    u'\u0623'   #  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
+    u'\u0624'   #  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
+    u'\u0625'   #  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
+    u'\u0626'   #  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
+    u'\u0627'   #  0xC7 -> ARABIC LETTER ALEF
+    u'\u0628'   #  0xC8 -> ARABIC LETTER BEH
+    u'\u0629'   #  0xC9 -> ARABIC LETTER TEH MARBUTA
+    u'\u062a'   #  0xCA -> ARABIC LETTER TEH
+    u'\u062b'   #  0xCB -> ARABIC LETTER THEH
+    u'\u062c'   #  0xCC -> ARABIC LETTER JEEM
+    u'\u062d'   #  0xCD -> ARABIC LETTER HAH
+    u'\u062e'   #  0xCE -> ARABIC LETTER KHAH
+    u'\u062f'   #  0xCF -> ARABIC LETTER DAL
+    u'\u0630'   #  0xD0 -> ARABIC LETTER THAL
+    u'\u0631'   #  0xD1 -> ARABIC LETTER REH
+    u'\u0632'   #  0xD2 -> ARABIC LETTER ZAIN
+    u'\u0633'   #  0xD3 -> ARABIC LETTER SEEN
+    u'\u0634'   #  0xD4 -> ARABIC LETTER SHEEN
+    u'\u0635'   #  0xD5 -> ARABIC LETTER SAD
+    u'\u0636'   #  0xD6 -> ARABIC LETTER DAD
+    u'\u0637'   #  0xD7 -> ARABIC LETTER TAH
+    u'\u0638'   #  0xD8 -> ARABIC LETTER ZAH
+    u'\u0639'   #  0xD9 -> ARABIC LETTER AIN
+    u'\u063a'   #  0xDA -> ARABIC LETTER GHAIN
+    u'['        #  0xDB -> LEFT SQUARE BRACKET, right-left
+    u'\\'       #  0xDC -> REVERSE SOLIDUS, right-left
+    u']'        #  0xDD -> RIGHT SQUARE BRACKET, right-left
+    u'^'        #  0xDE -> CIRCUMFLEX ACCENT, right-left
+    u'_'        #  0xDF -> LOW LINE, right-left
+    u'\u0640'   #  0xE0 -> ARABIC TATWEEL
+    u'\u0641'   #  0xE1 -> ARABIC LETTER FEH
+    u'\u0642'   #  0xE2 -> ARABIC LETTER QAF
+    u'\u0643'   #  0xE3 -> ARABIC LETTER KAF
+    u'\u0644'   #  0xE4 -> ARABIC LETTER LAM
+    u'\u0645'   #  0xE5 -> ARABIC LETTER MEEM
+    u'\u0646'   #  0xE6 -> ARABIC LETTER NOON
+    u'\u0647'   #  0xE7 -> ARABIC LETTER HEH
+    u'\u0648'   #  0xE8 -> ARABIC LETTER WAW
+    u'\u0649'   #  0xE9 -> ARABIC LETTER ALEF MAKSURA
+    u'\u064a'   #  0xEA -> ARABIC LETTER YEH
+    u'\u064b'   #  0xEB -> ARABIC FATHATAN
+    u'\u064c'   #  0xEC -> ARABIC DAMMATAN
+    u'\u064d'   #  0xED -> ARABIC KASRATAN
+    u'\u064e'   #  0xEE -> ARABIC FATHA
+    u'\u064f'   #  0xEF -> ARABIC DAMMA
+    u'\u0650'   #  0xF0 -> ARABIC KASRA
+    u'\u0651'   #  0xF1 -> ARABIC SHADDA
+    u'\u0652'   #  0xF2 -> ARABIC SUKUN
+    u'\u067e'   #  0xF3 -> ARABIC LETTER PEH
+    u'\u0679'   #  0xF4 -> ARABIC LETTER TTEH
+    u'\u0686'   #  0xF5 -> ARABIC LETTER TCHEH
+    u'\u06d5'   #  0xF6 -> ARABIC LETTER AE
+    u'\u06a4'   #  0xF7 -> ARABIC LETTER VEH
+    u'\u06af'   #  0xF8 -> ARABIC LETTER GAF
+    u'\u0688'   #  0xF9 -> ARABIC LETTER DDAL
+    u'\u0691'   #  0xFA -> ARABIC LETTER RREH
+    u'{'        #  0xFB -> LEFT CURLY BRACKET, right-left
+    u'|'        #  0xFC -> VERTICAL LINE, right-left
+    u'}'        #  0xFD -> RIGHT CURLY BRACKET, right-left
+    u'\u0698'   #  0xFE -> ARABIC LETTER JEH
+    u'\u06d2'   #  0xFF -> ARABIC LETTER YEH BARREE
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  CONTROL CHARACTER
-    0x0001: 0x01,	#  CONTROL CHARACTER
-    0x0002: 0x02,	#  CONTROL CHARACTER
-    0x0003: 0x03,	#  CONTROL CHARACTER
-    0x0004: 0x04,	#  CONTROL CHARACTER
-    0x0005: 0x05,	#  CONTROL CHARACTER
-    0x0006: 0x06,	#  CONTROL CHARACTER
-    0x0007: 0x07,	#  CONTROL CHARACTER
-    0x0008: 0x08,	#  CONTROL CHARACTER
-    0x0009: 0x09,	#  CONTROL CHARACTER
-    0x000A: 0x0A,	#  CONTROL CHARACTER
-    0x000B: 0x0B,	#  CONTROL CHARACTER
-    0x000C: 0x0C,	#  CONTROL CHARACTER
-    0x000D: 0x0D,	#  CONTROL CHARACTER
-    0x000E: 0x0E,	#  CONTROL CHARACTER
-    0x000F: 0x0F,	#  CONTROL CHARACTER
-    0x0010: 0x10,	#  CONTROL CHARACTER
-    0x0011: 0x11,	#  CONTROL CHARACTER
-    0x0012: 0x12,	#  CONTROL CHARACTER
-    0x0013: 0x13,	#  CONTROL CHARACTER
-    0x0014: 0x14,	#  CONTROL CHARACTER
-    0x0015: 0x15,	#  CONTROL CHARACTER
-    0x0016: 0x16,	#  CONTROL CHARACTER
-    0x0017: 0x17,	#  CONTROL CHARACTER
-    0x0018: 0x18,	#  CONTROL CHARACTER
-    0x0019: 0x19,	#  CONTROL CHARACTER
-    0x001A: 0x1A,	#  CONTROL CHARACTER
-    0x001B: 0x1B,	#  CONTROL CHARACTER
-    0x001C: 0x1C,	#  CONTROL CHARACTER
-    0x001D: 0x1D,	#  CONTROL CHARACTER
-    0x001E: 0x1E,	#  CONTROL CHARACTER
-    0x001F: 0x1F,	#  CONTROL CHARACTER
-    0x0020: 0x20,	#  SPACE, left-right
-    0x0020: 0xA0,	#  SPACE, right-left
-    0x0021: 0x21,	#  EXCLAMATION MARK, left-right
-    0x0021: 0xA1,	#  EXCLAMATION MARK, right-left
-    0x0022: 0x22,	#  QUOTATION MARK, left-right
-    0x0022: 0xA2,	#  QUOTATION MARK, right-left
-    0x0023: 0x23,	#  NUMBER SIGN, left-right
-    0x0023: 0xA3,	#  NUMBER SIGN, right-left
-    0x0024: 0x24,	#  DOLLAR SIGN, left-right
-    0x0024: 0xA4,	#  DOLLAR SIGN, right-left
-    0x0025: 0x25,	#  PERCENT SIGN, left-right
-    0x0026: 0x26,	#  AMPERSAND, left-right
-    0x0026: 0xA6,	#  AMPERSAND, right-left
-    0x0027: 0x27,	#  APOSTROPHE, left-right
-    0x0027: 0xA7,	#  APOSTROPHE, right-left
-    0x0028: 0x28,	#  LEFT PARENTHESIS, left-right
-    0x0028: 0xA8,	#  LEFT PARENTHESIS, right-left
-    0x0029: 0x29,	#  RIGHT PARENTHESIS, left-right
-    0x0029: 0xA9,	#  RIGHT PARENTHESIS, right-left
-    0x002A: 0x2A,	#  ASTERISK, left-right
-    0x002A: 0xAA,	#  ASTERISK, right-left
-    0x002B: 0x2B,	#  PLUS SIGN, left-right
-    0x002B: 0xAB,	#  PLUS SIGN, right-left
-    0x002C: 0x2C,	#  COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-    0x002D: 0x2D,	#  HYPHEN-MINUS, left-right
-    0x002D: 0xAD,	#  HYPHEN-MINUS, right-left
-    0x002E: 0x2E,	#  FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-    0x002E: 0xAE,	#  FULL STOP, right-left
-    0x002F: 0x2F,	#  SOLIDUS, left-right
-    0x002F: 0xAF,	#  SOLIDUS, right-left
-    0x0030: 0x30,	#  DIGIT ZERO;  in Arabic-script context, displayed as 0x06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE;   in Arabic-script context, displayed as 0x06F1 EXTENDED ARABIC-INDIC DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO;   in Arabic-script context, displayed as 0x06F2 EXTENDED ARABIC-INDIC DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE; in Arabic-script context, displayed as 0x06F3 EXTENDED ARABIC-INDIC DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR;  in Arabic-script context, displayed as 0x06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE;  in Arabic-script context, displayed as 0x06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX;   in Arabic-script context, displayed as 0x06F6 EXTENDED ARABIC-INDIC DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN; in Arabic-script context, displayed as 0x06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT; in Arabic-script context, displayed as 0x06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE;  in Arabic-script context, displayed as 0x06F9 EXTENDED ARABIC-INDIC DIGIT NINE
-    0x003A: 0x3A,	#  COLON, left-right
-    0x003A: 0xBA,	#  COLON, right-left
-    0x003B: 0x3B,	#  SEMICOLON, left-right
-    0x003C: 0x3C,	#  LESS-THAN SIGN, left-right
-    0x003C: 0xBC,	#  LESS-THAN SIGN, right-left
-    0x003D: 0x3D,	#  EQUALS SIGN, left-right
-    0x003D: 0xBD,	#  EQUALS SIGN, right-left
-    0x003E: 0x3E,	#  GREATER-THAN SIGN, left-right
-    0x003E: 0xBE,	#  GREATER-THAN SIGN, right-left
-    0x003F: 0x3F,	#  QUESTION MARK, left-right
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET, left-right
-    0x005B: 0xDB,	#  LEFT SQUARE BRACKET, right-left
-    0x005C: 0x5C,	#  REVERSE SOLIDUS, left-right
-    0x005C: 0xDC,	#  REVERSE SOLIDUS, right-left
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET, left-right
-    0x005D: 0xDD,	#  RIGHT SQUARE BRACKET, right-left
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT, left-right
-    0x005E: 0xDE,	#  CIRCUMFLEX ACCENT, right-left
-    0x005F: 0x5F,	#  LOW LINE, left-right
-    0x005F: 0xDF,	#  LOW LINE, right-left
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET, left-right
-    0x007B: 0xFB,	#  LEFT CURLY BRACKET, right-left
-    0x007C: 0x7C,	#  VERTICAL LINE, left-right
-    0x007C: 0xFC,	#  VERTICAL LINE, right-left
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET, left-right
-    0x007D: 0xFD,	#  RIGHT CURLY BRACKET, right-left
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  CONTROL CHARACTER
-    0x00A0: 0x81,	#  NO-BREAK SPACE, right-left
-    0x00AB: 0x8C,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x00BB: 0x98,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x00C4: 0x80,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C7: 0x82,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C9: 0x83,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00D1: 0x84,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D6: 0x85,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00DC: 0x86,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00E0: 0x88,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x87,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x89,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E4: 0x8A,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E7: 0x8D,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x8F,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x8E,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x90,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x91,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ED: 0x92,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x94,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x95,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0x96,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F3: 0x97,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0x99,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F6: 0x9A,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0x9B,	#  DIVISION SIGN, right-left
-    0x00F9: 0x9D,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0x9C,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0x9E,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0x9F,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x060C: 0xAC,	#  ARABIC COMMA
-    0x061B: 0xBB,	#  ARABIC SEMICOLON
-    0x061F: 0xBF,	#  ARABIC QUESTION MARK
-    0x0621: 0xC1,	#  ARABIC LETTER HAMZA
-    0x0622: 0xC2,	#  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x0623: 0xC3,	#  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x0624: 0xC4,	#  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x0625: 0xC5,	#  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x0626: 0xC6,	#  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x0627: 0xC7,	#  ARABIC LETTER ALEF
-    0x0628: 0xC8,	#  ARABIC LETTER BEH
-    0x0629: 0xC9,	#  ARABIC LETTER TEH MARBUTA
-    0x062A: 0xCA,	#  ARABIC LETTER TEH
-    0x062B: 0xCB,	#  ARABIC LETTER THEH
-    0x062C: 0xCC,	#  ARABIC LETTER JEEM
-    0x062D: 0xCD,	#  ARABIC LETTER HAH
-    0x062E: 0xCE,	#  ARABIC LETTER KHAH
-    0x062F: 0xCF,	#  ARABIC LETTER DAL
-    0x0630: 0xD0,	#  ARABIC LETTER THAL
-    0x0631: 0xD1,	#  ARABIC LETTER REH
-    0x0632: 0xD2,	#  ARABIC LETTER ZAIN
-    0x0633: 0xD3,	#  ARABIC LETTER SEEN
-    0x0634: 0xD4,	#  ARABIC LETTER SHEEN
-    0x0635: 0xD5,	#  ARABIC LETTER SAD
-    0x0636: 0xD6,	#  ARABIC LETTER DAD
-    0x0637: 0xD7,	#  ARABIC LETTER TAH
-    0x0638: 0xD8,	#  ARABIC LETTER ZAH
-    0x0639: 0xD9,	#  ARABIC LETTER AIN
-    0x063A: 0xDA,	#  ARABIC LETTER GHAIN
-    0x0640: 0xE0,	#  ARABIC TATWEEL
-    0x0641: 0xE1,	#  ARABIC LETTER FEH
-    0x0642: 0xE2,	#  ARABIC LETTER QAF
-    0x0643: 0xE3,	#  ARABIC LETTER KAF
-    0x0644: 0xE4,	#  ARABIC LETTER LAM
-    0x0645: 0xE5,	#  ARABIC LETTER MEEM
-    0x0646: 0xE6,	#  ARABIC LETTER NOON
-    0x0647: 0xE7,	#  ARABIC LETTER HEH
-    0x0648: 0xE8,	#  ARABIC LETTER WAW
-    0x0649: 0xE9,	#  ARABIC LETTER ALEF MAKSURA
-    0x064A: 0xEA,	#  ARABIC LETTER YEH
-    0x064B: 0xEB,	#  ARABIC FATHATAN
-    0x064C: 0xEC,	#  ARABIC DAMMATAN
-    0x064D: 0xED,	#  ARABIC KASRATAN
-    0x064E: 0xEE,	#  ARABIC FATHA
-    0x064F: 0xEF,	#  ARABIC DAMMA
-    0x0650: 0xF0,	#  ARABIC KASRA
-    0x0651: 0xF1,	#  ARABIC SHADDA
-    0x0652: 0xF2,	#  ARABIC SUKUN
-    0x066A: 0xA5,	#  ARABIC PERCENT SIGN
-    0x0679: 0xF4,	#  ARABIC LETTER TTEH
-    0x067E: 0xF3,	#  ARABIC LETTER PEH
-    0x0686: 0xF5,	#  ARABIC LETTER TCHEH
-    0x0688: 0xF9,	#  ARABIC LETTER DDAL
-    0x0691: 0xFA,	#  ARABIC LETTER RREH
-    0x0698: 0xFE,	#  ARABIC LETTER JEH
-    0x06A4: 0xF7,	#  ARABIC LETTER VEH
-    0x06AF: 0xF8,	#  ARABIC LETTER GAF
-    0x06BA: 0x8B,	#  ARABIC LETTER NOON GHUNNA
-    0x06D2: 0xFF,	#  ARABIC LETTER YEH BARREE
-    0x06D5: 0xF6,	#  ARABIC LETTER AE
-    0x06F0: 0xB0,	#  EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    0x06F1: 0xB1,	#  EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
-    0x06F2: 0xB2,	#  EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
-    0x06F3: 0xB3,	#  EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
-    0x06F4: 0xB4,	#  EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    0x06F5: 0xB5,	#  EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    0x06F6: 0xB6,	#  EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
-    0x06F7: 0xB7,	#  EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    0x06F8: 0xB8,	#  EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    0x06F9: 0xB9,	#  EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
-    0x2026: 0x93,	#  HORIZONTAL ELLIPSIS, right-left
-    0x274A: 0xC0,	#  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
+    0x0000: 0x00,       #  CONTROL CHARACTER
+    0x0001: 0x01,       #  CONTROL CHARACTER
+    0x0002: 0x02,       #  CONTROL CHARACTER
+    0x0003: 0x03,       #  CONTROL CHARACTER
+    0x0004: 0x04,       #  CONTROL CHARACTER
+    0x0005: 0x05,       #  CONTROL CHARACTER
+    0x0006: 0x06,       #  CONTROL CHARACTER
+    0x0007: 0x07,       #  CONTROL CHARACTER
+    0x0008: 0x08,       #  CONTROL CHARACTER
+    0x0009: 0x09,       #  CONTROL CHARACTER
+    0x000A: 0x0A,       #  CONTROL CHARACTER
+    0x000B: 0x0B,       #  CONTROL CHARACTER
+    0x000C: 0x0C,       #  CONTROL CHARACTER
+    0x000D: 0x0D,       #  CONTROL CHARACTER
+    0x000E: 0x0E,       #  CONTROL CHARACTER
+    0x000F: 0x0F,       #  CONTROL CHARACTER
+    0x0010: 0x10,       #  CONTROL CHARACTER
+    0x0011: 0x11,       #  CONTROL CHARACTER
+    0x0012: 0x12,       #  CONTROL CHARACTER
+    0x0013: 0x13,       #  CONTROL CHARACTER
+    0x0014: 0x14,       #  CONTROL CHARACTER
+    0x0015: 0x15,       #  CONTROL CHARACTER
+    0x0016: 0x16,       #  CONTROL CHARACTER
+    0x0017: 0x17,       #  CONTROL CHARACTER
+    0x0018: 0x18,       #  CONTROL CHARACTER
+    0x0019: 0x19,       #  CONTROL CHARACTER
+    0x001A: 0x1A,       #  CONTROL CHARACTER
+    0x001B: 0x1B,       #  CONTROL CHARACTER
+    0x001C: 0x1C,       #  CONTROL CHARACTER
+    0x001D: 0x1D,       #  CONTROL CHARACTER
+    0x001E: 0x1E,       #  CONTROL CHARACTER
+    0x001F: 0x1F,       #  CONTROL CHARACTER
+    0x0020: 0x20,       #  SPACE, left-right
+    0x0020: 0xA0,       #  SPACE, right-left
+    0x0021: 0x21,       #  EXCLAMATION MARK, left-right
+    0x0021: 0xA1,       #  EXCLAMATION MARK, right-left
+    0x0022: 0x22,       #  QUOTATION MARK, left-right
+    0x0022: 0xA2,       #  QUOTATION MARK, right-left
+    0x0023: 0x23,       #  NUMBER SIGN, left-right
+    0x0023: 0xA3,       #  NUMBER SIGN, right-left
+    0x0024: 0x24,       #  DOLLAR SIGN, left-right
+    0x0024: 0xA4,       #  DOLLAR SIGN, right-left
+    0x0025: 0x25,       #  PERCENT SIGN, left-right
+    0x0026: 0x26,       #  AMPERSAND, left-right
+    0x0026: 0xA6,       #  AMPERSAND, right-left
+    0x0027: 0x27,       #  APOSTROPHE, left-right
+    0x0027: 0xA7,       #  APOSTROPHE, right-left
+    0x0028: 0x28,       #  LEFT PARENTHESIS, left-right
+    0x0028: 0xA8,       #  LEFT PARENTHESIS, right-left
+    0x0029: 0x29,       #  RIGHT PARENTHESIS, left-right
+    0x0029: 0xA9,       #  RIGHT PARENTHESIS, right-left
+    0x002A: 0x2A,       #  ASTERISK, left-right
+    0x002A: 0xAA,       #  ASTERISK, right-left
+    0x002B: 0x2B,       #  PLUS SIGN, left-right
+    0x002B: 0xAB,       #  PLUS SIGN, right-left
+    0x002C: 0x2C,       #  COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
+    0x002D: 0x2D,       #  HYPHEN-MINUS, left-right
+    0x002D: 0xAD,       #  HYPHEN-MINUS, right-left
+    0x002E: 0x2E,       #  FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
+    0x002E: 0xAE,       #  FULL STOP, right-left
+    0x002F: 0x2F,       #  SOLIDUS, left-right
+    0x002F: 0xAF,       #  SOLIDUS, right-left
+    0x0030: 0x30,       #  DIGIT ZERO;  in Arabic-script context, displayed as 0x06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE;   in Arabic-script context, displayed as 0x06F1 EXTENDED ARABIC-INDIC DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO;   in Arabic-script context, displayed as 0x06F2 EXTENDED ARABIC-INDIC DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE; in Arabic-script context, displayed as 0x06F3 EXTENDED ARABIC-INDIC DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR;  in Arabic-script context, displayed as 0x06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE;  in Arabic-script context, displayed as 0x06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX;   in Arabic-script context, displayed as 0x06F6 EXTENDED ARABIC-INDIC DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN; in Arabic-script context, displayed as 0x06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT; in Arabic-script context, displayed as 0x06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE;  in Arabic-script context, displayed as 0x06F9 EXTENDED ARABIC-INDIC DIGIT NINE
+    0x003A: 0x3A,       #  COLON, left-right
+    0x003A: 0xBA,       #  COLON, right-left
+    0x003B: 0x3B,       #  SEMICOLON, left-right
+    0x003C: 0x3C,       #  LESS-THAN SIGN, left-right
+    0x003C: 0xBC,       #  LESS-THAN SIGN, right-left
+    0x003D: 0x3D,       #  EQUALS SIGN, left-right
+    0x003D: 0xBD,       #  EQUALS SIGN, right-left
+    0x003E: 0x3E,       #  GREATER-THAN SIGN, left-right
+    0x003E: 0xBE,       #  GREATER-THAN SIGN, right-left
+    0x003F: 0x3F,       #  QUESTION MARK, left-right
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET, left-right
+    0x005B: 0xDB,       #  LEFT SQUARE BRACKET, right-left
+    0x005C: 0x5C,       #  REVERSE SOLIDUS, left-right
+    0x005C: 0xDC,       #  REVERSE SOLIDUS, right-left
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET, left-right
+    0x005D: 0xDD,       #  RIGHT SQUARE BRACKET, right-left
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT, left-right
+    0x005E: 0xDE,       #  CIRCUMFLEX ACCENT, right-left
+    0x005F: 0x5F,       #  LOW LINE, left-right
+    0x005F: 0xDF,       #  LOW LINE, right-left
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET, left-right
+    0x007B: 0xFB,       #  LEFT CURLY BRACKET, right-left
+    0x007C: 0x7C,       #  VERTICAL LINE, left-right
+    0x007C: 0xFC,       #  VERTICAL LINE, right-left
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET, left-right
+    0x007D: 0xFD,       #  RIGHT CURLY BRACKET, right-left
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  CONTROL CHARACTER
+    0x00A0: 0x81,       #  NO-BREAK SPACE, right-left
+    0x00AB: 0x8C,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    0x00BB: 0x98,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
+    0x00C4: 0x80,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C7: 0x82,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C9: 0x83,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00D1: 0x84,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D6: 0x85,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00DC: 0x86,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00E0: 0x88,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0x8A,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0x8D,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00ED: 0x92,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F3: 0x97,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0x9A,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0x9B,       #  DIVISION SIGN, right-left
+    0x00F9: 0x9D,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x060C: 0xAC,       #  ARABIC COMMA
+    0x061B: 0xBB,       #  ARABIC SEMICOLON
+    0x061F: 0xBF,       #  ARABIC QUESTION MARK
+    0x0621: 0xC1,       #  ARABIC LETTER HAMZA
+    0x0622: 0xC2,       #  ARABIC LETTER ALEF WITH MADDA ABOVE
+    0x0623: 0xC3,       #  ARABIC LETTER ALEF WITH HAMZA ABOVE
+    0x0624: 0xC4,       #  ARABIC LETTER WAW WITH HAMZA ABOVE
+    0x0625: 0xC5,       #  ARABIC LETTER ALEF WITH HAMZA BELOW
+    0x0626: 0xC6,       #  ARABIC LETTER YEH WITH HAMZA ABOVE
+    0x0627: 0xC7,       #  ARABIC LETTER ALEF
+    0x0628: 0xC8,       #  ARABIC LETTER BEH
+    0x0629: 0xC9,       #  ARABIC LETTER TEH MARBUTA
+    0x062A: 0xCA,       #  ARABIC LETTER TEH
+    0x062B: 0xCB,       #  ARABIC LETTER THEH
+    0x062C: 0xCC,       #  ARABIC LETTER JEEM
+    0x062D: 0xCD,       #  ARABIC LETTER HAH
+    0x062E: 0xCE,       #  ARABIC LETTER KHAH
+    0x062F: 0xCF,       #  ARABIC LETTER DAL
+    0x0630: 0xD0,       #  ARABIC LETTER THAL
+    0x0631: 0xD1,       #  ARABIC LETTER REH
+    0x0632: 0xD2,       #  ARABIC LETTER ZAIN
+    0x0633: 0xD3,       #  ARABIC LETTER SEEN
+    0x0634: 0xD4,       #  ARABIC LETTER SHEEN
+    0x0635: 0xD5,       #  ARABIC LETTER SAD
+    0x0636: 0xD6,       #  ARABIC LETTER DAD
+    0x0637: 0xD7,       #  ARABIC LETTER TAH
+    0x0638: 0xD8,       #  ARABIC LETTER ZAH
+    0x0639: 0xD9,       #  ARABIC LETTER AIN
+    0x063A: 0xDA,       #  ARABIC LETTER GHAIN
+    0x0640: 0xE0,       #  ARABIC TATWEEL
+    0x0641: 0xE1,       #  ARABIC LETTER FEH
+    0x0642: 0xE2,       #  ARABIC LETTER QAF
+    0x0643: 0xE3,       #  ARABIC LETTER KAF
+    0x0644: 0xE4,       #  ARABIC LETTER LAM
+    0x0645: 0xE5,       #  ARABIC LETTER MEEM
+    0x0646: 0xE6,       #  ARABIC LETTER NOON
+    0x0647: 0xE7,       #  ARABIC LETTER HEH
+    0x0648: 0xE8,       #  ARABIC LETTER WAW
+    0x0649: 0xE9,       #  ARABIC LETTER ALEF MAKSURA
+    0x064A: 0xEA,       #  ARABIC LETTER YEH
+    0x064B: 0xEB,       #  ARABIC FATHATAN
+    0x064C: 0xEC,       #  ARABIC DAMMATAN
+    0x064D: 0xED,       #  ARABIC KASRATAN
+    0x064E: 0xEE,       #  ARABIC FATHA
+    0x064F: 0xEF,       #  ARABIC DAMMA
+    0x0650: 0xF0,       #  ARABIC KASRA
+    0x0651: 0xF1,       #  ARABIC SHADDA
+    0x0652: 0xF2,       #  ARABIC SUKUN
+    0x066A: 0xA5,       #  ARABIC PERCENT SIGN
+    0x0679: 0xF4,       #  ARABIC LETTER TTEH
+    0x067E: 0xF3,       #  ARABIC LETTER PEH
+    0x0686: 0xF5,       #  ARABIC LETTER TCHEH
+    0x0688: 0xF9,       #  ARABIC LETTER DDAL
+    0x0691: 0xFA,       #  ARABIC LETTER RREH
+    0x0698: 0xFE,       #  ARABIC LETTER JEH
+    0x06A4: 0xF7,       #  ARABIC LETTER VEH
+    0x06AF: 0xF8,       #  ARABIC LETTER GAF
+    0x06BA: 0x8B,       #  ARABIC LETTER NOON GHUNNA
+    0x06D2: 0xFF,       #  ARABIC LETTER YEH BARREE
+    0x06D5: 0xF6,       #  ARABIC LETTER AE
+    0x06F0: 0xB0,       #  EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
+    0x06F1: 0xB1,       #  EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
+    0x06F2: 0xB2,       #  EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
+    0x06F3: 0xB3,       #  EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
+    0x06F4: 0xB4,       #  EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
+    0x06F5: 0xB5,       #  EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
+    0x06F6: 0xB6,       #  EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
+    0x06F7: 0xB7,       #  EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
+    0x06F8: 0xB8,       #  EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
+    0x06F9: 0xB9,       #  EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
+    0x2026: 0x93,       #  HORIZONTAL ELLIPSIS, right-left
+    0x274A: 0xC0,       #  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
 }
-

Modified: python/trunk/Lib/encodings/mac_greek.py
==============================================================================
--- python/trunk/Lib/encodings/mac_greek.py	(original)
+++ python/trunk/Lib/encodings/mac_greek.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> CONTROL CHARACTER
-    u'\x01'	#  0x01 -> CONTROL CHARACTER
-    u'\x02'	#  0x02 -> CONTROL CHARACTER
-    u'\x03'	#  0x03 -> CONTROL CHARACTER
-    u'\x04'	#  0x04 -> CONTROL CHARACTER
-    u'\x05'	#  0x05 -> CONTROL CHARACTER
-    u'\x06'	#  0x06 -> CONTROL CHARACTER
-    u'\x07'	#  0x07 -> CONTROL CHARACTER
-    u'\x08'	#  0x08 -> CONTROL CHARACTER
-    u'\t'	#  0x09 -> CONTROL CHARACTER
-    u'\n'	#  0x0A -> CONTROL CHARACTER
-    u'\x0b'	#  0x0B -> CONTROL CHARACTER
-    u'\x0c'	#  0x0C -> CONTROL CHARACTER
-    u'\r'	#  0x0D -> CONTROL CHARACTER
-    u'\x0e'	#  0x0E -> CONTROL CHARACTER
-    u'\x0f'	#  0x0F -> CONTROL CHARACTER
-    u'\x10'	#  0x10 -> CONTROL CHARACTER
-    u'\x11'	#  0x11 -> CONTROL CHARACTER
-    u'\x12'	#  0x12 -> CONTROL CHARACTER
-    u'\x13'	#  0x13 -> CONTROL CHARACTER
-    u'\x14'	#  0x14 -> CONTROL CHARACTER
-    u'\x15'	#  0x15 -> CONTROL CHARACTER
-    u'\x16'	#  0x16 -> CONTROL CHARACTER
-    u'\x17'	#  0x17 -> CONTROL CHARACTER
-    u'\x18'	#  0x18 -> CONTROL CHARACTER
-    u'\x19'	#  0x19 -> CONTROL CHARACTER
-    u'\x1a'	#  0x1A -> CONTROL CHARACTER
-    u'\x1b'	#  0x1B -> CONTROL CHARACTER
-    u'\x1c'	#  0x1C -> CONTROL CHARACTER
-    u'\x1d'	#  0x1D -> CONTROL CHARACTER
-    u'\x1e'	#  0x1E -> CONTROL CHARACTER
-    u'\x1f'	#  0x1F -> CONTROL CHARACTER
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> CONTROL CHARACTER
-    u'\xc4'	#  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xb9'	#  0x81 -> SUPERSCRIPT ONE
-    u'\xb2'	#  0x82 -> SUPERSCRIPT TWO
-    u'\xc9'	#  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xb3'	#  0x84 -> SUPERSCRIPT THREE
-    u'\xd6'	#  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0385'	#  0x87 -> GREEK DIALYTIKA TONOS
-    u'\xe0'	#  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'	#  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u0384'	#  0x8B -> GREEK TONOS
-    u'\xa8'	#  0x8C -> DIAERESIS
-    u'\xe7'	#  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'	#  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'	#  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'	#  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xa3'	#  0x92 -> POUND SIGN
-    u'\u2122'	#  0x93 -> TRADE MARK SIGN
-    u'\xee'	#  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u2022'	#  0x96 -> BULLET
-    u'\xbd'	#  0x97 -> VULGAR FRACTION ONE HALF
-    u'\u2030'	#  0x98 -> PER MILLE SIGN
-    u'\xf4'	#  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xa6'	#  0x9B -> BROKEN BAR
-    u'\u20ac'	#  0x9C -> EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
-    u'\xf9'	#  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'	#  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'	#  0xA0 -> DAGGER
-    u'\u0393'	#  0xA1 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'	#  0xA2 -> GREEK CAPITAL LETTER DELTA
-    u'\u0398'	#  0xA3 -> GREEK CAPITAL LETTER THETA
-    u'\u039b'	#  0xA4 -> GREEK CAPITAL LETTER LAMDA
-    u'\u039e'	#  0xA5 -> GREEK CAPITAL LETTER XI
-    u'\u03a0'	#  0xA6 -> GREEK CAPITAL LETTER PI
-    u'\xdf'	#  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'	#  0xA8 -> REGISTERED SIGN
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u03a3'	#  0xAA -> GREEK CAPITAL LETTER SIGMA
-    u'\u03aa'	#  0xAB -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\xa7'	#  0xAC -> SECTION SIGN
-    u'\u2260'	#  0xAD -> NOT EQUAL TO
-    u'\xb0'	#  0xAE -> DEGREE SIGN
-    u'\xb7'	#  0xAF -> MIDDLE DOT
-    u'\u0391'	#  0xB0 -> GREEK CAPITAL LETTER ALPHA
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'	#  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'	#  0xB4 -> YEN SIGN
-    u'\u0392'	#  0xB5 -> GREEK CAPITAL LETTER BETA
-    u'\u0395'	#  0xB6 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'	#  0xB7 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'	#  0xB8 -> GREEK CAPITAL LETTER ETA
-    u'\u0399'	#  0xB9 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'	#  0xBA -> GREEK CAPITAL LETTER KAPPA
-    u'\u039c'	#  0xBB -> GREEK CAPITAL LETTER MU
-    u'\u03a6'	#  0xBC -> GREEK CAPITAL LETTER PHI
-    u'\u03ab'	#  0xBD -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\u03a8'	#  0xBE -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'	#  0xBF -> GREEK CAPITAL LETTER OMEGA
-    u'\u03ac'	#  0xC0 -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u039d'	#  0xC1 -> GREEK CAPITAL LETTER NU
-    u'\xac'	#  0xC2 -> NOT SIGN
-    u'\u039f'	#  0xC3 -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a1'	#  0xC4 -> GREEK CAPITAL LETTER RHO
-    u'\u2248'	#  0xC5 -> ALMOST EQUAL TO
-    u'\u03a4'	#  0xC6 -> GREEK CAPITAL LETTER TAU
-    u'\xab'	#  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'	#  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'	#  0xCA -> NO-BREAK SPACE
-    u'\u03a5'	#  0xCB -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a7'	#  0xCC -> GREEK CAPITAL LETTER CHI
-    u'\u0386'	#  0xCD -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\u0388'	#  0xCE -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0153'	#  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'	#  0xD0 -> EN DASH
-    u'\u2015'	#  0xD1 -> HORIZONTAL BAR
-    u'\u201c'	#  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'	#  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'	#  0xD6 -> DIVISION SIGN
-    u'\u0389'	#  0xD7 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'	#  0xD8 -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\u038c'	#  0xD9 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\u038e'	#  0xDA -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u03ad'	#  0xDB -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'	#  0xDC -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'	#  0xDD -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03cc'	#  0xDE -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u038f'	#  0xDF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\u03cd'	#  0xE0 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03b1'	#  0xE1 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'	#  0xE2 -> GREEK SMALL LETTER BETA
-    u'\u03c8'	#  0xE3 -> GREEK SMALL LETTER PSI
-    u'\u03b4'	#  0xE4 -> GREEK SMALL LETTER DELTA
-    u'\u03b5'	#  0xE5 -> GREEK SMALL LETTER EPSILON
-    u'\u03c6'	#  0xE6 -> GREEK SMALL LETTER PHI
-    u'\u03b3'	#  0xE7 -> GREEK SMALL LETTER GAMMA
-    u'\u03b7'	#  0xE8 -> GREEK SMALL LETTER ETA
-    u'\u03b9'	#  0xE9 -> GREEK SMALL LETTER IOTA
-    u'\u03be'	#  0xEA -> GREEK SMALL LETTER XI
-    u'\u03ba'	#  0xEB -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'	#  0xEC -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'	#  0xED -> GREEK SMALL LETTER MU
-    u'\u03bd'	#  0xEE -> GREEK SMALL LETTER NU
-    u'\u03bf'	#  0xEF -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'	#  0xF0 -> GREEK SMALL LETTER PI
-    u'\u03ce'	#  0xF1 -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u03c1'	#  0xF2 -> GREEK SMALL LETTER RHO
-    u'\u03c3'	#  0xF3 -> GREEK SMALL LETTER SIGMA
-    u'\u03c4'	#  0xF4 -> GREEK SMALL LETTER TAU
-    u'\u03b8'	#  0xF5 -> GREEK SMALL LETTER THETA
-    u'\u03c9'	#  0xF6 -> GREEK SMALL LETTER OMEGA
-    u'\u03c2'	#  0xF7 -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c7'	#  0xF8 -> GREEK SMALL LETTER CHI
-    u'\u03c5'	#  0xF9 -> GREEK SMALL LETTER UPSILON
-    u'\u03b6'	#  0xFA -> GREEK SMALL LETTER ZETA
-    u'\u03ca'	#  0xFB -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03cb'	#  0xFC -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u0390'	#  0xFD -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u03b0'	#  0xFE -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\xad'	#  0xFF -> SOFT HYPHEN # before Mac OS 9.2.2, was undefined
+    u'\x00'     #  0x00 -> CONTROL CHARACTER
+    u'\x01'     #  0x01 -> CONTROL CHARACTER
+    u'\x02'     #  0x02 -> CONTROL CHARACTER
+    u'\x03'     #  0x03 -> CONTROL CHARACTER
+    u'\x04'     #  0x04 -> CONTROL CHARACTER
+    u'\x05'     #  0x05 -> CONTROL CHARACTER
+    u'\x06'     #  0x06 -> CONTROL CHARACTER
+    u'\x07'     #  0x07 -> CONTROL CHARACTER
+    u'\x08'     #  0x08 -> CONTROL CHARACTER
+    u'\t'       #  0x09 -> CONTROL CHARACTER
+    u'\n'       #  0x0A -> CONTROL CHARACTER
+    u'\x0b'     #  0x0B -> CONTROL CHARACTER
+    u'\x0c'     #  0x0C -> CONTROL CHARACTER
+    u'\r'       #  0x0D -> CONTROL CHARACTER
+    u'\x0e'     #  0x0E -> CONTROL CHARACTER
+    u'\x0f'     #  0x0F -> CONTROL CHARACTER
+    u'\x10'     #  0x10 -> CONTROL CHARACTER
+    u'\x11'     #  0x11 -> CONTROL CHARACTER
+    u'\x12'     #  0x12 -> CONTROL CHARACTER
+    u'\x13'     #  0x13 -> CONTROL CHARACTER
+    u'\x14'     #  0x14 -> CONTROL CHARACTER
+    u'\x15'     #  0x15 -> CONTROL CHARACTER
+    u'\x16'     #  0x16 -> CONTROL CHARACTER
+    u'\x17'     #  0x17 -> CONTROL CHARACTER
+    u'\x18'     #  0x18 -> CONTROL CHARACTER
+    u'\x19'     #  0x19 -> CONTROL CHARACTER
+    u'\x1a'     #  0x1A -> CONTROL CHARACTER
+    u'\x1b'     #  0x1B -> CONTROL CHARACTER
+    u'\x1c'     #  0x1C -> CONTROL CHARACTER
+    u'\x1d'     #  0x1D -> CONTROL CHARACTER
+    u'\x1e'     #  0x1E -> CONTROL CHARACTER
+    u'\x1f'     #  0x1F -> CONTROL CHARACTER
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> CONTROL CHARACTER
+    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xb9'     #  0x81 -> SUPERSCRIPT ONE
+    u'\xb2'     #  0x82 -> SUPERSCRIPT TWO
+    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xb3'     #  0x84 -> SUPERSCRIPT THREE
+    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\u0385'   #  0x87 -> GREEK DIALYTIKA TONOS
+    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\u0384'   #  0x8B -> GREEK TONOS
+    u'\xa8'     #  0x8C -> DIAERESIS
+    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xa3'     #  0x92 -> POUND SIGN
+    u'\u2122'   #  0x93 -> TRADE MARK SIGN
+    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\u2022'   #  0x96 -> BULLET
+    u'\xbd'     #  0x97 -> VULGAR FRACTION ONE HALF
+    u'\u2030'   #  0x98 -> PER MILLE SIGN
+    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xa6'     #  0x9B -> BROKEN BAR
+    u'\u20ac'   #  0x9C -> EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
+    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'   #  0xA0 -> DAGGER
+    u'\u0393'   #  0xA1 -> GREEK CAPITAL LETTER GAMMA
+    u'\u0394'   #  0xA2 -> GREEK CAPITAL LETTER DELTA
+    u'\u0398'   #  0xA3 -> GREEK CAPITAL LETTER THETA
+    u'\u039b'   #  0xA4 -> GREEK CAPITAL LETTER LAMDA
+    u'\u039e'   #  0xA5 -> GREEK CAPITAL LETTER XI
+    u'\u03a0'   #  0xA6 -> GREEK CAPITAL LETTER PI
+    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'     #  0xA8 -> REGISTERED SIGN
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u03a3'   #  0xAA -> GREEK CAPITAL LETTER SIGMA
+    u'\u03aa'   #  0xAB -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    u'\xa7'     #  0xAC -> SECTION SIGN
+    u'\u2260'   #  0xAD -> NOT EQUAL TO
+    u'\xb0'     #  0xAE -> DEGREE SIGN
+    u'\xb7'     #  0xAF -> MIDDLE DOT
+    u'\u0391'   #  0xB0 -> GREEK CAPITAL LETTER ALPHA
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'     #  0xB4 -> YEN SIGN
+    u'\u0392'   #  0xB5 -> GREEK CAPITAL LETTER BETA
+    u'\u0395'   #  0xB6 -> GREEK CAPITAL LETTER EPSILON
+    u'\u0396'   #  0xB7 -> GREEK CAPITAL LETTER ZETA
+    u'\u0397'   #  0xB8 -> GREEK CAPITAL LETTER ETA
+    u'\u0399'   #  0xB9 -> GREEK CAPITAL LETTER IOTA
+    u'\u039a'   #  0xBA -> GREEK CAPITAL LETTER KAPPA
+    u'\u039c'   #  0xBB -> GREEK CAPITAL LETTER MU
+    u'\u03a6'   #  0xBC -> GREEK CAPITAL LETTER PHI
+    u'\u03ab'   #  0xBD -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    u'\u03a8'   #  0xBE -> GREEK CAPITAL LETTER PSI
+    u'\u03a9'   #  0xBF -> GREEK CAPITAL LETTER OMEGA
+    u'\u03ac'   #  0xC0 -> GREEK SMALL LETTER ALPHA WITH TONOS
+    u'\u039d'   #  0xC1 -> GREEK CAPITAL LETTER NU
+    u'\xac'     #  0xC2 -> NOT SIGN
+    u'\u039f'   #  0xC3 -> GREEK CAPITAL LETTER OMICRON
+    u'\u03a1'   #  0xC4 -> GREEK CAPITAL LETTER RHO
+    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
+    u'\u03a4'   #  0xC6 -> GREEK CAPITAL LETTER TAU
+    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'     #  0xCA -> NO-BREAK SPACE
+    u'\u03a5'   #  0xCB -> GREEK CAPITAL LETTER UPSILON
+    u'\u03a7'   #  0xCC -> GREEK CAPITAL LETTER CHI
+    u'\u0386'   #  0xCD -> GREEK CAPITAL LETTER ALPHA WITH TONOS
+    u'\u0388'   #  0xCE -> GREEK CAPITAL LETTER EPSILON WITH TONOS
+    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'   #  0xD0 -> EN DASH
+    u'\u2015'   #  0xD1 -> HORIZONTAL BAR
+    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'     #  0xD6 -> DIVISION SIGN
+    u'\u0389'   #  0xD7 -> GREEK CAPITAL LETTER ETA WITH TONOS
+    u'\u038a'   #  0xD8 -> GREEK CAPITAL LETTER IOTA WITH TONOS
+    u'\u038c'   #  0xD9 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
+    u'\u038e'   #  0xDA -> GREEK CAPITAL LETTER UPSILON WITH TONOS
+    u'\u03ad'   #  0xDB -> GREEK SMALL LETTER EPSILON WITH TONOS
+    u'\u03ae'   #  0xDC -> GREEK SMALL LETTER ETA WITH TONOS
+    u'\u03af'   #  0xDD -> GREEK SMALL LETTER IOTA WITH TONOS
+    u'\u03cc'   #  0xDE -> GREEK SMALL LETTER OMICRON WITH TONOS
+    u'\u038f'   #  0xDF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
+    u'\u03cd'   #  0xE0 -> GREEK SMALL LETTER UPSILON WITH TONOS
+    u'\u03b1'   #  0xE1 -> GREEK SMALL LETTER ALPHA
+    u'\u03b2'   #  0xE2 -> GREEK SMALL LETTER BETA
+    u'\u03c8'   #  0xE3 -> GREEK SMALL LETTER PSI
+    u'\u03b4'   #  0xE4 -> GREEK SMALL LETTER DELTA
+    u'\u03b5'   #  0xE5 -> GREEK SMALL LETTER EPSILON
+    u'\u03c6'   #  0xE6 -> GREEK SMALL LETTER PHI
+    u'\u03b3'   #  0xE7 -> GREEK SMALL LETTER GAMMA
+    u'\u03b7'   #  0xE8 -> GREEK SMALL LETTER ETA
+    u'\u03b9'   #  0xE9 -> GREEK SMALL LETTER IOTA
+    u'\u03be'   #  0xEA -> GREEK SMALL LETTER XI
+    u'\u03ba'   #  0xEB -> GREEK SMALL LETTER KAPPA
+    u'\u03bb'   #  0xEC -> GREEK SMALL LETTER LAMDA
+    u'\u03bc'   #  0xED -> GREEK SMALL LETTER MU
+    u'\u03bd'   #  0xEE -> GREEK SMALL LETTER NU
+    u'\u03bf'   #  0xEF -> GREEK SMALL LETTER OMICRON
+    u'\u03c0'   #  0xF0 -> GREEK SMALL LETTER PI
+    u'\u03ce'   #  0xF1 -> GREEK SMALL LETTER OMEGA WITH TONOS
+    u'\u03c1'   #  0xF2 -> GREEK SMALL LETTER RHO
+    u'\u03c3'   #  0xF3 -> GREEK SMALL LETTER SIGMA
+    u'\u03c4'   #  0xF4 -> GREEK SMALL LETTER TAU
+    u'\u03b8'   #  0xF5 -> GREEK SMALL LETTER THETA
+    u'\u03c9'   #  0xF6 -> GREEK SMALL LETTER OMEGA
+    u'\u03c2'   #  0xF7 -> GREEK SMALL LETTER FINAL SIGMA
+    u'\u03c7'   #  0xF8 -> GREEK SMALL LETTER CHI
+    u'\u03c5'   #  0xF9 -> GREEK SMALL LETTER UPSILON
+    u'\u03b6'   #  0xFA -> GREEK SMALL LETTER ZETA
+    u'\u03ca'   #  0xFB -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    u'\u03cb'   #  0xFC -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    u'\u0390'   #  0xFD -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    u'\u03b0'   #  0xFE -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    u'\xad'     #  0xFF -> SOFT HYPHEN # before Mac OS 9.2.2, was undefined
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  CONTROL CHARACTER
-    0x0001: 0x01,	#  CONTROL CHARACTER
-    0x0002: 0x02,	#  CONTROL CHARACTER
-    0x0003: 0x03,	#  CONTROL CHARACTER
-    0x0004: 0x04,	#  CONTROL CHARACTER
-    0x0005: 0x05,	#  CONTROL CHARACTER
-    0x0006: 0x06,	#  CONTROL CHARACTER
-    0x0007: 0x07,	#  CONTROL CHARACTER
-    0x0008: 0x08,	#  CONTROL CHARACTER
-    0x0009: 0x09,	#  CONTROL CHARACTER
-    0x000A: 0x0A,	#  CONTROL CHARACTER
-    0x000B: 0x0B,	#  CONTROL CHARACTER
-    0x000C: 0x0C,	#  CONTROL CHARACTER
-    0x000D: 0x0D,	#  CONTROL CHARACTER
-    0x000E: 0x0E,	#  CONTROL CHARACTER
-    0x000F: 0x0F,	#  CONTROL CHARACTER
-    0x0010: 0x10,	#  CONTROL CHARACTER
-    0x0011: 0x11,	#  CONTROL CHARACTER
-    0x0012: 0x12,	#  CONTROL CHARACTER
-    0x0013: 0x13,	#  CONTROL CHARACTER
-    0x0014: 0x14,	#  CONTROL CHARACTER
-    0x0015: 0x15,	#  CONTROL CHARACTER
-    0x0016: 0x16,	#  CONTROL CHARACTER
-    0x0017: 0x17,	#  CONTROL CHARACTER
-    0x0018: 0x18,	#  CONTROL CHARACTER
-    0x0019: 0x19,	#  CONTROL CHARACTER
-    0x001A: 0x1A,	#  CONTROL CHARACTER
-    0x001B: 0x1B,	#  CONTROL CHARACTER
-    0x001C: 0x1C,	#  CONTROL CHARACTER
-    0x001D: 0x1D,	#  CONTROL CHARACTER
-    0x001E: 0x1E,	#  CONTROL CHARACTER
-    0x001F: 0x1F,	#  CONTROL CHARACTER
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  CONTROL CHARACTER
-    0x00A0: 0xCA,	#  NO-BREAK SPACE
-    0x00A3: 0x92,	#  POUND SIGN
-    0x00A5: 0xB4,	#  YEN SIGN
-    0x00A6: 0x9B,	#  BROKEN BAR
-    0x00A7: 0xAC,	#  SECTION SIGN
-    0x00A8: 0x8C,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AB: 0xC7,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xC2,	#  NOT SIGN
-    0x00AD: 0xFF,	#  SOFT HYPHEN # before Mac OS 9.2.2, was undefined
-    0x00AE: 0xA8,	#  REGISTERED SIGN
-    0x00B0: 0xAE,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B2: 0x82,	#  SUPERSCRIPT TWO
-    0x00B3: 0x84,	#  SUPERSCRIPT THREE
-    0x00B7: 0xAF,	#  MIDDLE DOT
-    0x00B9: 0x81,	#  SUPERSCRIPT ONE
-    0x00BB: 0xC8,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BD: 0x97,	#  VULGAR FRACTION ONE HALF
-    0x00C4: 0x80,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C9: 0x83,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00D6: 0x85,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00DC: 0x86,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xA7,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0x88,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E2: 0x89,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E4: 0x8A,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E7: 0x8D,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x8F,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x8E,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x90,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x91,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EE: 0x94,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x95,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F4: 0x99,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F6: 0x9A,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xD6,	#  DIVISION SIGN
-    0x00F9: 0x9D,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FB: 0x9E,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0x9F,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0153: 0xCF,	#  LATIN SMALL LIGATURE OE
-    0x0384: 0x8B,	#  GREEK TONOS
-    0x0385: 0x87,	#  GREEK DIALYTIKA TONOS
-    0x0386: 0xCD,	#  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0xCE,	#  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0xD7,	#  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038A: 0xD8,	#  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038C: 0xD9,	#  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038E: 0xDA,	#  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038F: 0xDF,	#  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0xFD,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x0391: 0xB0,	#  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0xB5,	#  GREEK CAPITAL LETTER BETA
-    0x0393: 0xA1,	#  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0xA2,	#  GREEK CAPITAL LETTER DELTA
-    0x0395: 0xB6,	#  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0xB7,	#  GREEK CAPITAL LETTER ZETA
-    0x0397: 0xB8,	#  GREEK CAPITAL LETTER ETA
-    0x0398: 0xA3,	#  GREEK CAPITAL LETTER THETA
-    0x0399: 0xB9,	#  GREEK CAPITAL LETTER IOTA
-    0x039A: 0xBA,	#  GREEK CAPITAL LETTER KAPPA
-    0x039B: 0xA4,	#  GREEK CAPITAL LETTER LAMDA
-    0x039C: 0xBB,	#  GREEK CAPITAL LETTER MU
-    0x039D: 0xC1,	#  GREEK CAPITAL LETTER NU
-    0x039E: 0xA5,	#  GREEK CAPITAL LETTER XI
-    0x039F: 0xC3,	#  GREEK CAPITAL LETTER OMICRON
-    0x03A0: 0xA6,	#  GREEK CAPITAL LETTER PI
-    0x03A1: 0xC4,	#  GREEK CAPITAL LETTER RHO
-    0x03A3: 0xAA,	#  GREEK CAPITAL LETTER SIGMA
-    0x03A4: 0xC6,	#  GREEK CAPITAL LETTER TAU
-    0x03A5: 0xCB,	#  GREEK CAPITAL LETTER UPSILON
-    0x03A6: 0xBC,	#  GREEK CAPITAL LETTER PHI
-    0x03A7: 0xCC,	#  GREEK CAPITAL LETTER CHI
-    0x03A8: 0xBE,	#  GREEK CAPITAL LETTER PSI
-    0x03A9: 0xBF,	#  GREEK CAPITAL LETTER OMEGA
-    0x03AA: 0xAB,	#  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03AB: 0xBD,	#  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03AC: 0xC0,	#  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03AD: 0xDB,	#  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03AE: 0xDC,	#  GREEK SMALL LETTER ETA WITH TONOS
-    0x03AF: 0xDD,	#  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03B0: 0xFE,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03B1: 0xE1,	#  GREEK SMALL LETTER ALPHA
-    0x03B2: 0xE2,	#  GREEK SMALL LETTER BETA
-    0x03B3: 0xE7,	#  GREEK SMALL LETTER GAMMA
-    0x03B4: 0xE4,	#  GREEK SMALL LETTER DELTA
-    0x03B5: 0xE5,	#  GREEK SMALL LETTER EPSILON
-    0x03B6: 0xFA,	#  GREEK SMALL LETTER ZETA
-    0x03B7: 0xE8,	#  GREEK SMALL LETTER ETA
-    0x03B8: 0xF5,	#  GREEK SMALL LETTER THETA
-    0x03B9: 0xE9,	#  GREEK SMALL LETTER IOTA
-    0x03BA: 0xEB,	#  GREEK SMALL LETTER KAPPA
-    0x03BB: 0xEC,	#  GREEK SMALL LETTER LAMDA
-    0x03BC: 0xED,	#  GREEK SMALL LETTER MU
-    0x03BD: 0xEE,	#  GREEK SMALL LETTER NU
-    0x03BE: 0xEA,	#  GREEK SMALL LETTER XI
-    0x03BF: 0xEF,	#  GREEK SMALL LETTER OMICRON
-    0x03C0: 0xF0,	#  GREEK SMALL LETTER PI
-    0x03C1: 0xF2,	#  GREEK SMALL LETTER RHO
-    0x03C2: 0xF7,	#  GREEK SMALL LETTER FINAL SIGMA
-    0x03C3: 0xF3,	#  GREEK SMALL LETTER SIGMA
-    0x03C4: 0xF4,	#  GREEK SMALL LETTER TAU
-    0x03C5: 0xF9,	#  GREEK SMALL LETTER UPSILON
-    0x03C6: 0xE6,	#  GREEK SMALL LETTER PHI
-    0x03C7: 0xF8,	#  GREEK SMALL LETTER CHI
-    0x03C8: 0xE3,	#  GREEK SMALL LETTER PSI
-    0x03C9: 0xF6,	#  GREEK SMALL LETTER OMEGA
-    0x03CA: 0xFB,	#  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03CB: 0xFC,	#  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03CC: 0xDE,	#  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03CD: 0xE0,	#  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03CE: 0xF1,	#  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x2013: 0xD0,	#  EN DASH
-    0x2015: 0xD1,	#  HORIZONTAL BAR
-    0x2018: 0xD4,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xD5,	#  RIGHT SINGLE QUOTATION MARK
-    0x201C: 0xD2,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0xD3,	#  RIGHT DOUBLE QUOTATION MARK
-    0x2020: 0xA0,	#  DAGGER
-    0x2022: 0x96,	#  BULLET
-    0x2026: 0xC9,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0x98,	#  PER MILLE SIGN
-    0x20AC: 0x9C,	#  EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
-    0x2122: 0x93,	#  TRADE MARK SIGN
-    0x2248: 0xC5,	#  ALMOST EQUAL TO
-    0x2260: 0xAD,	#  NOT EQUAL TO
-    0x2264: 0xB2,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0xB3,	#  GREATER-THAN OR EQUAL TO
+    0x0000: 0x00,       #  CONTROL CHARACTER
+    0x0001: 0x01,       #  CONTROL CHARACTER
+    0x0002: 0x02,       #  CONTROL CHARACTER
+    0x0003: 0x03,       #  CONTROL CHARACTER
+    0x0004: 0x04,       #  CONTROL CHARACTER
+    0x0005: 0x05,       #  CONTROL CHARACTER
+    0x0006: 0x06,       #  CONTROL CHARACTER
+    0x0007: 0x07,       #  CONTROL CHARACTER
+    0x0008: 0x08,       #  CONTROL CHARACTER
+    0x0009: 0x09,       #  CONTROL CHARACTER
+    0x000A: 0x0A,       #  CONTROL CHARACTER
+    0x000B: 0x0B,       #  CONTROL CHARACTER
+    0x000C: 0x0C,       #  CONTROL CHARACTER
+    0x000D: 0x0D,       #  CONTROL CHARACTER
+    0x000E: 0x0E,       #  CONTROL CHARACTER
+    0x000F: 0x0F,       #  CONTROL CHARACTER
+    0x0010: 0x10,       #  CONTROL CHARACTER
+    0x0011: 0x11,       #  CONTROL CHARACTER
+    0x0012: 0x12,       #  CONTROL CHARACTER
+    0x0013: 0x13,       #  CONTROL CHARACTER
+    0x0014: 0x14,       #  CONTROL CHARACTER
+    0x0015: 0x15,       #  CONTROL CHARACTER
+    0x0016: 0x16,       #  CONTROL CHARACTER
+    0x0017: 0x17,       #  CONTROL CHARACTER
+    0x0018: 0x18,       #  CONTROL CHARACTER
+    0x0019: 0x19,       #  CONTROL CHARACTER
+    0x001A: 0x1A,       #  CONTROL CHARACTER
+    0x001B: 0x1B,       #  CONTROL CHARACTER
+    0x001C: 0x1C,       #  CONTROL CHARACTER
+    0x001D: 0x1D,       #  CONTROL CHARACTER
+    0x001E: 0x1E,       #  CONTROL CHARACTER
+    0x001F: 0x1F,       #  CONTROL CHARACTER
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  CONTROL CHARACTER
+    0x00A0: 0xCA,       #  NO-BREAK SPACE
+    0x00A3: 0x92,       #  POUND SIGN
+    0x00A5: 0xB4,       #  YEN SIGN
+    0x00A6: 0x9B,       #  BROKEN BAR
+    0x00A7: 0xAC,       #  SECTION SIGN
+    0x00A8: 0x8C,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AB: 0xC7,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,       #  NOT SIGN
+    0x00AD: 0xFF,       #  SOFT HYPHEN # before Mac OS 9.2.2, was undefined
+    0x00AE: 0xA8,       #  REGISTERED SIGN
+    0x00B0: 0xAE,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B2: 0x82,       #  SUPERSCRIPT TWO
+    0x00B3: 0x84,       #  SUPERSCRIPT THREE
+    0x00B7: 0xAF,       #  MIDDLE DOT
+    0x00B9: 0x81,       #  SUPERSCRIPT ONE
+    0x00BB: 0xC8,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BD: 0x97,       #  VULGAR FRACTION ONE HALF
+    0x00C4: 0x80,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C9: 0x83,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00D6: 0x85,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00DC: 0x86,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E2: 0x89,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E4: 0x8A,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E7: 0x8D,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EE: 0x94,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F4: 0x99,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F6: 0x9A,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,       #  DIVISION SIGN
+    0x00F9: 0x9D,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FB: 0x9E,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x0153: 0xCF,       #  LATIN SMALL LIGATURE OE
+    0x0384: 0x8B,       #  GREEK TONOS
+    0x0385: 0x87,       #  GREEK DIALYTIKA TONOS
+    0x0386: 0xCD,       #  GREEK CAPITAL LETTER ALPHA WITH TONOS
+    0x0388: 0xCE,       #  GREEK CAPITAL LETTER EPSILON WITH TONOS
+    0x0389: 0xD7,       #  GREEK CAPITAL LETTER ETA WITH TONOS
+    0x038A: 0xD8,       #  GREEK CAPITAL LETTER IOTA WITH TONOS
+    0x038C: 0xD9,       #  GREEK CAPITAL LETTER OMICRON WITH TONOS
+    0x038E: 0xDA,       #  GREEK CAPITAL LETTER UPSILON WITH TONOS
+    0x038F: 0xDF,       #  GREEK CAPITAL LETTER OMEGA WITH TONOS
+    0x0390: 0xFD,       #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+    0x0391: 0xB0,       #  GREEK CAPITAL LETTER ALPHA
+    0x0392: 0xB5,       #  GREEK CAPITAL LETTER BETA
+    0x0393: 0xA1,       #  GREEK CAPITAL LETTER GAMMA
+    0x0394: 0xA2,       #  GREEK CAPITAL LETTER DELTA
+    0x0395: 0xB6,       #  GREEK CAPITAL LETTER EPSILON
+    0x0396: 0xB7,       #  GREEK CAPITAL LETTER ZETA
+    0x0397: 0xB8,       #  GREEK CAPITAL LETTER ETA
+    0x0398: 0xA3,       #  GREEK CAPITAL LETTER THETA
+    0x0399: 0xB9,       #  GREEK CAPITAL LETTER IOTA
+    0x039A: 0xBA,       #  GREEK CAPITAL LETTER KAPPA
+    0x039B: 0xA4,       #  GREEK CAPITAL LETTER LAMDA
+    0x039C: 0xBB,       #  GREEK CAPITAL LETTER MU
+    0x039D: 0xC1,       #  GREEK CAPITAL LETTER NU
+    0x039E: 0xA5,       #  GREEK CAPITAL LETTER XI
+    0x039F: 0xC3,       #  GREEK CAPITAL LETTER OMICRON
+    0x03A0: 0xA6,       #  GREEK CAPITAL LETTER PI
+    0x03A1: 0xC4,       #  GREEK CAPITAL LETTER RHO
+    0x03A3: 0xAA,       #  GREEK CAPITAL LETTER SIGMA
+    0x03A4: 0xC6,       #  GREEK CAPITAL LETTER TAU
+    0x03A5: 0xCB,       #  GREEK CAPITAL LETTER UPSILON
+    0x03A6: 0xBC,       #  GREEK CAPITAL LETTER PHI
+    0x03A7: 0xCC,       #  GREEK CAPITAL LETTER CHI
+    0x03A8: 0xBE,       #  GREEK CAPITAL LETTER PSI
+    0x03A9: 0xBF,       #  GREEK CAPITAL LETTER OMEGA
+    0x03AA: 0xAB,       #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+    0x03AB: 0xBD,       #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+    0x03AC: 0xC0,       #  GREEK SMALL LETTER ALPHA WITH TONOS
+    0x03AD: 0xDB,       #  GREEK SMALL LETTER EPSILON WITH TONOS
+    0x03AE: 0xDC,       #  GREEK SMALL LETTER ETA WITH TONOS
+    0x03AF: 0xDD,       #  GREEK SMALL LETTER IOTA WITH TONOS
+    0x03B0: 0xFE,       #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+    0x03B1: 0xE1,       #  GREEK SMALL LETTER ALPHA
+    0x03B2: 0xE2,       #  GREEK SMALL LETTER BETA
+    0x03B3: 0xE7,       #  GREEK SMALL LETTER GAMMA
+    0x03B4: 0xE4,       #  GREEK SMALL LETTER DELTA
+    0x03B5: 0xE5,       #  GREEK SMALL LETTER EPSILON
+    0x03B6: 0xFA,       #  GREEK SMALL LETTER ZETA
+    0x03B7: 0xE8,       #  GREEK SMALL LETTER ETA
+    0x03B8: 0xF5,       #  GREEK SMALL LETTER THETA
+    0x03B9: 0xE9,       #  GREEK SMALL LETTER IOTA
+    0x03BA: 0xEB,       #  GREEK SMALL LETTER KAPPA
+    0x03BB: 0xEC,       #  GREEK SMALL LETTER LAMDA
+    0x03BC: 0xED,       #  GREEK SMALL LETTER MU
+    0x03BD: 0xEE,       #  GREEK SMALL LETTER NU
+    0x03BE: 0xEA,       #  GREEK SMALL LETTER XI
+    0x03BF: 0xEF,       #  GREEK SMALL LETTER OMICRON
+    0x03C0: 0xF0,       #  GREEK SMALL LETTER PI
+    0x03C1: 0xF2,       #  GREEK SMALL LETTER RHO
+    0x03C2: 0xF7,       #  GREEK SMALL LETTER FINAL SIGMA
+    0x03C3: 0xF3,       #  GREEK SMALL LETTER SIGMA
+    0x03C4: 0xF4,       #  GREEK SMALL LETTER TAU
+    0x03C5: 0xF9,       #  GREEK SMALL LETTER UPSILON
+    0x03C6: 0xE6,       #  GREEK SMALL LETTER PHI
+    0x03C7: 0xF8,       #  GREEK SMALL LETTER CHI
+    0x03C8: 0xE3,       #  GREEK SMALL LETTER PSI
+    0x03C9: 0xF6,       #  GREEK SMALL LETTER OMEGA
+    0x03CA: 0xFB,       #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
+    0x03CB: 0xFC,       #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+    0x03CC: 0xDE,       #  GREEK SMALL LETTER OMICRON WITH TONOS
+    0x03CD: 0xE0,       #  GREEK SMALL LETTER UPSILON WITH TONOS
+    0x03CE: 0xF1,       #  GREEK SMALL LETTER OMEGA WITH TONOS
+    0x2013: 0xD0,       #  EN DASH
+    0x2015: 0xD1,       #  HORIZONTAL BAR
+    0x2018: 0xD4,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,       #  RIGHT SINGLE QUOTATION MARK
+    0x201C: 0xD2,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,       #  RIGHT DOUBLE QUOTATION MARK
+    0x2020: 0xA0,       #  DAGGER
+    0x2022: 0x96,       #  BULLET
+    0x2026: 0xC9,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0x98,       #  PER MILLE SIGN
+    0x20AC: 0x9C,       #  EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
+    0x2122: 0x93,       #  TRADE MARK SIGN
+    0x2248: 0xC5,       #  ALMOST EQUAL TO
+    0x2260: 0xAD,       #  NOT EQUAL TO
+    0x2264: 0xB2,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,       #  GREATER-THAN OR EQUAL TO
 }
-

Modified: python/trunk/Lib/encodings/mac_iceland.py
==============================================================================
--- python/trunk/Lib/encodings/mac_iceland.py	(original)
+++ python/trunk/Lib/encodings/mac_iceland.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> CONTROL CHARACTER
-    u'\x01'	#  0x01 -> CONTROL CHARACTER
-    u'\x02'	#  0x02 -> CONTROL CHARACTER
-    u'\x03'	#  0x03 -> CONTROL CHARACTER
-    u'\x04'	#  0x04 -> CONTROL CHARACTER
-    u'\x05'	#  0x05 -> CONTROL CHARACTER
-    u'\x06'	#  0x06 -> CONTROL CHARACTER
-    u'\x07'	#  0x07 -> CONTROL CHARACTER
-    u'\x08'	#  0x08 -> CONTROL CHARACTER
-    u'\t'	#  0x09 -> CONTROL CHARACTER
-    u'\n'	#  0x0A -> CONTROL CHARACTER
-    u'\x0b'	#  0x0B -> CONTROL CHARACTER
-    u'\x0c'	#  0x0C -> CONTROL CHARACTER
-    u'\r'	#  0x0D -> CONTROL CHARACTER
-    u'\x0e'	#  0x0E -> CONTROL CHARACTER
-    u'\x0f'	#  0x0F -> CONTROL CHARACTER
-    u'\x10'	#  0x10 -> CONTROL CHARACTER
-    u'\x11'	#  0x11 -> CONTROL CHARACTER
-    u'\x12'	#  0x12 -> CONTROL CHARACTER
-    u'\x13'	#  0x13 -> CONTROL CHARACTER
-    u'\x14'	#  0x14 -> CONTROL CHARACTER
-    u'\x15'	#  0x15 -> CONTROL CHARACTER
-    u'\x16'	#  0x16 -> CONTROL CHARACTER
-    u'\x17'	#  0x17 -> CONTROL CHARACTER
-    u'\x18'	#  0x18 -> CONTROL CHARACTER
-    u'\x19'	#  0x19 -> CONTROL CHARACTER
-    u'\x1a'	#  0x1A -> CONTROL CHARACTER
-    u'\x1b'	#  0x1B -> CONTROL CHARACTER
-    u'\x1c'	#  0x1C -> CONTROL CHARACTER
-    u'\x1d'	#  0x1D -> CONTROL CHARACTER
-    u'\x1e'	#  0x1E -> CONTROL CHARACTER
-    u'\x1f'	#  0x1F -> CONTROL CHARACTER
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> CONTROL CHARACTER
-    u'\xc4'	#  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'	#  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'	#  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'	#  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'	#  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'	#  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'	#  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'	#  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'	#  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'	#  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'	#  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'	#  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'	#  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'	#  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'	#  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'	#  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'	#  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'	#  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'	#  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'	#  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'	#  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'	#  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'	#  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'	#  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xdd'	#  0xA0 -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xb0'	#  0xA1 -> DEGREE SIGN
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa7'	#  0xA4 -> SECTION SIGN
-    u'\u2022'	#  0xA5 -> BULLET
-    u'\xb6'	#  0xA6 -> PILCROW SIGN
-    u'\xdf'	#  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'	#  0xA8 -> REGISTERED SIGN
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'	#  0xAA -> TRADE MARK SIGN
-    u'\xb4'	#  0xAB -> ACUTE ACCENT
-    u'\xa8'	#  0xAC -> DIAERESIS
-    u'\u2260'	#  0xAD -> NOT EQUAL TO
-    u'\xc6'	#  0xAE -> LATIN CAPITAL LETTER AE
-    u'\xd8'	#  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'	#  0xB0 -> INFINITY
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'	#  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'	#  0xB4 -> YEN SIGN
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\u2202'	#  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'	#  0xB7 -> N-ARY SUMMATION
-    u'\u220f'	#  0xB8 -> N-ARY PRODUCT
-    u'\u03c0'	#  0xB9 -> GREEK SMALL LETTER PI
-    u'\u222b'	#  0xBA -> INTEGRAL
-    u'\xaa'	#  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'	#  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\xe6'	#  0xBE -> LATIN SMALL LETTER AE
-    u'\xf8'	#  0xBF -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'	#  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'	#  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'	#  0xC2 -> NOT SIGN
-    u'\u221a'	#  0xC3 -> SQUARE ROOT
-    u'\u0192'	#  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'	#  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'	#  0xC6 -> INCREMENT
-    u'\xab'	#  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'	#  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'	#  0xCA -> NO-BREAK SPACE
-    u'\xc0'	#  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'	#  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'	#  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'	#  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'	#  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'	#  0xD0 -> EN DASH
-    u'\u2014'	#  0xD1 -> EM DASH
-    u'\u201c'	#  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'	#  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'	#  0xD6 -> DIVISION SIGN
-    u'\u25ca'	#  0xD7 -> LOZENGE
-    u'\xff'	#  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'	#  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u2044'	#  0xDA -> FRACTION SLASH
-    u'\u20ac'	#  0xDB -> EURO SIGN
-    u'\xd0'	#  0xDC -> LATIN CAPITAL LETTER ETH
-    u'\xf0'	#  0xDD -> LATIN SMALL LETTER ETH
-    u'\xde'	#  0xDE -> LATIN CAPITAL LETTER THORN
-    u'\xfe'	#  0xDF -> LATIN SMALL LETTER THORN
-    u'\xfd'	#  0xE0 -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xb7'	#  0xE1 -> MIDDLE DOT
-    u'\u201a'	#  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'	#  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'	#  0xE4 -> PER MILLE SIGN
-    u'\xc2'	#  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'	#  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'	#  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'	#  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'	#  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'	#  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'	#  0xF0 -> Apple logo
-    u'\xd2'	#  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'	#  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'	#  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'	#  0xF5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'	#  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'	#  0xF7 -> SMALL TILDE
-    u'\xaf'	#  0xF8 -> MACRON
-    u'\u02d8'	#  0xF9 -> BREVE
-    u'\u02d9'	#  0xFA -> DOT ABOVE
-    u'\u02da'	#  0xFB -> RING ABOVE
-    u'\xb8'	#  0xFC -> CEDILLA
-    u'\u02dd'	#  0xFD -> DOUBLE ACUTE ACCENT
-    u'\u02db'	#  0xFE -> OGONEK
-    u'\u02c7'	#  0xFF -> CARON
+    u'\x00'     #  0x00 -> CONTROL CHARACTER
+    u'\x01'     #  0x01 -> CONTROL CHARACTER
+    u'\x02'     #  0x02 -> CONTROL CHARACTER
+    u'\x03'     #  0x03 -> CONTROL CHARACTER
+    u'\x04'     #  0x04 -> CONTROL CHARACTER
+    u'\x05'     #  0x05 -> CONTROL CHARACTER
+    u'\x06'     #  0x06 -> CONTROL CHARACTER
+    u'\x07'     #  0x07 -> CONTROL CHARACTER
+    u'\x08'     #  0x08 -> CONTROL CHARACTER
+    u'\t'       #  0x09 -> CONTROL CHARACTER
+    u'\n'       #  0x0A -> CONTROL CHARACTER
+    u'\x0b'     #  0x0B -> CONTROL CHARACTER
+    u'\x0c'     #  0x0C -> CONTROL CHARACTER
+    u'\r'       #  0x0D -> CONTROL CHARACTER
+    u'\x0e'     #  0x0E -> CONTROL CHARACTER
+    u'\x0f'     #  0x0F -> CONTROL CHARACTER
+    u'\x10'     #  0x10 -> CONTROL CHARACTER
+    u'\x11'     #  0x11 -> CONTROL CHARACTER
+    u'\x12'     #  0x12 -> CONTROL CHARACTER
+    u'\x13'     #  0x13 -> CONTROL CHARACTER
+    u'\x14'     #  0x14 -> CONTROL CHARACTER
+    u'\x15'     #  0x15 -> CONTROL CHARACTER
+    u'\x16'     #  0x16 -> CONTROL CHARACTER
+    u'\x17'     #  0x17 -> CONTROL CHARACTER
+    u'\x18'     #  0x18 -> CONTROL CHARACTER
+    u'\x19'     #  0x19 -> CONTROL CHARACTER
+    u'\x1a'     #  0x1A -> CONTROL CHARACTER
+    u'\x1b'     #  0x1B -> CONTROL CHARACTER
+    u'\x1c'     #  0x1C -> CONTROL CHARACTER
+    u'\x1d'     #  0x1D -> CONTROL CHARACTER
+    u'\x1e'     #  0x1E -> CONTROL CHARACTER
+    u'\x1f'     #  0x1F -> CONTROL CHARACTER
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> CONTROL CHARACTER
+    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\xdd'     #  0xA0 -> LATIN CAPITAL LETTER Y WITH ACUTE
+    u'\xb0'     #  0xA1 -> DEGREE SIGN
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa7'     #  0xA4 -> SECTION SIGN
+    u'\u2022'   #  0xA5 -> BULLET
+    u'\xb6'     #  0xA6 -> PILCROW SIGN
+    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'     #  0xA8 -> REGISTERED SIGN
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'   #  0xAA -> TRADE MARK SIGN
+    u'\xb4'     #  0xAB -> ACUTE ACCENT
+    u'\xa8'     #  0xAC -> DIAERESIS
+    u'\u2260'   #  0xAD -> NOT EQUAL TO
+    u'\xc6'     #  0xAE -> LATIN CAPITAL LETTER AE
+    u'\xd8'     #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u221e'   #  0xB0 -> INFINITY
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'     #  0xB4 -> YEN SIGN
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
+    u'\u03c0'   #  0xB9 -> GREEK SMALL LETTER PI
+    u'\u222b'   #  0xBA -> INTEGRAL
+    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\xe6'     #  0xBE -> LATIN SMALL LETTER AE
+    u'\xf8'     #  0xBF -> LATIN SMALL LETTER O WITH STROKE
+    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'     #  0xC2 -> NOT SIGN
+    u'\u221a'   #  0xC3 -> SQUARE ROOT
+    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'   #  0xC6 -> INCREMENT
+    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'     #  0xCA -> NO-BREAK SPACE
+    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'   #  0xD0 -> EN DASH
+    u'\u2014'   #  0xD1 -> EM DASH
+    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'     #  0xD6 -> DIVISION SIGN
+    u'\u25ca'   #  0xD7 -> LOZENGE
+    u'\xff'     #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0178'   #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u2044'   #  0xDA -> FRACTION SLASH
+    u'\u20ac'   #  0xDB -> EURO SIGN
+    u'\xd0'     #  0xDC -> LATIN CAPITAL LETTER ETH
+    u'\xf0'     #  0xDD -> LATIN SMALL LETTER ETH
+    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN
+    u'\xfe'     #  0xDF -> LATIN SMALL LETTER THORN
+    u'\xfd'     #  0xE0 -> LATIN SMALL LETTER Y WITH ACUTE
+    u'\xb7'     #  0xE1 -> MIDDLE DOT
+    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'   #  0xE4 -> PER MILLE SIGN
+    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xca'     #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xcb'     #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\uf8ff'   #  0xF0 -> Apple logo
+    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\u0131'   #  0xF5 -> LATIN SMALL LETTER DOTLESS I
+    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'   #  0xF7 -> SMALL TILDE
+    u'\xaf'     #  0xF8 -> MACRON
+    u'\u02d8'   #  0xF9 -> BREVE
+    u'\u02d9'   #  0xFA -> DOT ABOVE
+    u'\u02da'   #  0xFB -> RING ABOVE
+    u'\xb8'     #  0xFC -> CEDILLA
+    u'\u02dd'   #  0xFD -> DOUBLE ACUTE ACCENT
+    u'\u02db'   #  0xFE -> OGONEK
+    u'\u02c7'   #  0xFF -> CARON
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  CONTROL CHARACTER
-    0x0001: 0x01,	#  CONTROL CHARACTER
-    0x0002: 0x02,	#  CONTROL CHARACTER
-    0x0003: 0x03,	#  CONTROL CHARACTER
-    0x0004: 0x04,	#  CONTROL CHARACTER
-    0x0005: 0x05,	#  CONTROL CHARACTER
-    0x0006: 0x06,	#  CONTROL CHARACTER
-    0x0007: 0x07,	#  CONTROL CHARACTER
-    0x0008: 0x08,	#  CONTROL CHARACTER
-    0x0009: 0x09,	#  CONTROL CHARACTER
-    0x000A: 0x0A,	#  CONTROL CHARACTER
-    0x000B: 0x0B,	#  CONTROL CHARACTER
-    0x000C: 0x0C,	#  CONTROL CHARACTER
-    0x000D: 0x0D,	#  CONTROL CHARACTER
-    0x000E: 0x0E,	#  CONTROL CHARACTER
-    0x000F: 0x0F,	#  CONTROL CHARACTER
-    0x0010: 0x10,	#  CONTROL CHARACTER
-    0x0011: 0x11,	#  CONTROL CHARACTER
-    0x0012: 0x12,	#  CONTROL CHARACTER
-    0x0013: 0x13,	#  CONTROL CHARACTER
-    0x0014: 0x14,	#  CONTROL CHARACTER
-    0x0015: 0x15,	#  CONTROL CHARACTER
-    0x0016: 0x16,	#  CONTROL CHARACTER
-    0x0017: 0x17,	#  CONTROL CHARACTER
-    0x0018: 0x18,	#  CONTROL CHARACTER
-    0x0019: 0x19,	#  CONTROL CHARACTER
-    0x001A: 0x1A,	#  CONTROL CHARACTER
-    0x001B: 0x1B,	#  CONTROL CHARACTER
-    0x001C: 0x1C,	#  CONTROL CHARACTER
-    0x001D: 0x1D,	#  CONTROL CHARACTER
-    0x001E: 0x1E,	#  CONTROL CHARACTER
-    0x001F: 0x1F,	#  CONTROL CHARACTER
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  CONTROL CHARACTER
-    0x00A0: 0xCA,	#  NO-BREAK SPACE
-    0x00A1: 0xC1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A5: 0xB4,	#  YEN SIGN
-    0x00A7: 0xA4,	#  SECTION SIGN
-    0x00A8: 0xAC,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xBB,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xC7,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xC2,	#  NOT SIGN
-    0x00AE: 0xA8,	#  REGISTERED SIGN
-    0x00AF: 0xF8,	#  MACRON
-    0x00B0: 0xA1,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B4: 0xAB,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xA6,	#  PILCROW SIGN
-    0x00B7: 0xE1,	#  MIDDLE DOT
-    0x00B8: 0xFC,	#  CEDILLA
-    0x00BA: 0xBC,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xC8,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BF: 0xC0,	#  INVERTED QUESTION MARK
-    0x00C0: 0xCB,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xE7,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xE5,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xCC,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0x80,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0x81,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xAE,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0x82,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xE9,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0x83,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xE6,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xE8,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xED,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xEA,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xEB,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xEC,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D0: 0xDC,	#  LATIN CAPITAL LETTER ETH
-    0x00D1: 0x84,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xF1,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEF,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xCD,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0x85,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D8: 0xAF,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xF4,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xF2,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xF3,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0x86,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DD: 0xA0,	#  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00DE: 0xDE,	#  LATIN CAPITAL LETTER THORN
-    0x00DF: 0xA7,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0x88,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x87,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x89,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0x8B,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0x8A,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0x8C,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xBE,	#  LATIN SMALL LETTER AE
-    0x00E7: 0x8D,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x8F,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x8E,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x90,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x91,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0x93,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0x92,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x94,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x95,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F0: 0xDD,	#  LATIN SMALL LETTER ETH
-    0x00F1: 0x96,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0x98,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0x97,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0x99,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0x9B,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0x9A,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xD6,	#  DIVISION SIGN
-    0x00F8: 0xBF,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0x9D,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0x9C,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0x9E,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0x9F,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FD: 0xE0,	#  LATIN SMALL LETTER Y WITH ACUTE
-    0x00FE: 0xDF,	#  LATIN SMALL LETTER THORN
-    0x00FF: 0xD8,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0131: 0xF5,	#  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xCE,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xCF,	#  LATIN SMALL LIGATURE OE
-    0x0178: 0xD9,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0xC4,	#  LATIN SMALL LETTER F WITH HOOK
-    0x02C6: 0xF6,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02C7: 0xFF,	#  CARON
-    0x02D8: 0xF9,	#  BREVE
-    0x02D9: 0xFA,	#  DOT ABOVE
-    0x02DA: 0xFB,	#  RING ABOVE
-    0x02DB: 0xFE,	#  OGONEK
-    0x02DC: 0xF7,	#  SMALL TILDE
-    0x02DD: 0xFD,	#  DOUBLE ACUTE ACCENT
-    0x03A9: 0xBD,	#  GREEK CAPITAL LETTER OMEGA
-    0x03C0: 0xB9,	#  GREEK SMALL LETTER PI
-    0x2013: 0xD0,	#  EN DASH
-    0x2014: 0xD1,	#  EM DASH
-    0x2018: 0xD4,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xD5,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0xE2,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0xD2,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0xD3,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0xE3,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2022: 0xA5,	#  BULLET
-    0x2026: 0xC9,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0xE4,	#  PER MILLE SIGN
-    0x2044: 0xDA,	#  FRACTION SLASH
-    0x20AC: 0xDB,	#  EURO SIGN
-    0x2122: 0xAA,	#  TRADE MARK SIGN
-    0x2202: 0xB6,	#  PARTIAL DIFFERENTIAL
-    0x2206: 0xC6,	#  INCREMENT
-    0x220F: 0xB8,	#  N-ARY PRODUCT
-    0x2211: 0xB7,	#  N-ARY SUMMATION
-    0x221A: 0xC3,	#  SQUARE ROOT
-    0x221E: 0xB0,	#  INFINITY
-    0x222B: 0xBA,	#  INTEGRAL
-    0x2248: 0xC5,	#  ALMOST EQUAL TO
-    0x2260: 0xAD,	#  NOT EQUAL TO
-    0x2264: 0xB2,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0xB3,	#  GREATER-THAN OR EQUAL TO
-    0x25CA: 0xD7,	#  LOZENGE
-    0xF8FF: 0xF0,	#  Apple logo
+    0x0000: 0x00,       #  CONTROL CHARACTER
+    0x0001: 0x01,       #  CONTROL CHARACTER
+    0x0002: 0x02,       #  CONTROL CHARACTER
+    0x0003: 0x03,       #  CONTROL CHARACTER
+    0x0004: 0x04,       #  CONTROL CHARACTER
+    0x0005: 0x05,       #  CONTROL CHARACTER
+    0x0006: 0x06,       #  CONTROL CHARACTER
+    0x0007: 0x07,       #  CONTROL CHARACTER
+    0x0008: 0x08,       #  CONTROL CHARACTER
+    0x0009: 0x09,       #  CONTROL CHARACTER
+    0x000A: 0x0A,       #  CONTROL CHARACTER
+    0x000B: 0x0B,       #  CONTROL CHARACTER
+    0x000C: 0x0C,       #  CONTROL CHARACTER
+    0x000D: 0x0D,       #  CONTROL CHARACTER
+    0x000E: 0x0E,       #  CONTROL CHARACTER
+    0x000F: 0x0F,       #  CONTROL CHARACTER
+    0x0010: 0x10,       #  CONTROL CHARACTER
+    0x0011: 0x11,       #  CONTROL CHARACTER
+    0x0012: 0x12,       #  CONTROL CHARACTER
+    0x0013: 0x13,       #  CONTROL CHARACTER
+    0x0014: 0x14,       #  CONTROL CHARACTER
+    0x0015: 0x15,       #  CONTROL CHARACTER
+    0x0016: 0x16,       #  CONTROL CHARACTER
+    0x0017: 0x17,       #  CONTROL CHARACTER
+    0x0018: 0x18,       #  CONTROL CHARACTER
+    0x0019: 0x19,       #  CONTROL CHARACTER
+    0x001A: 0x1A,       #  CONTROL CHARACTER
+    0x001B: 0x1B,       #  CONTROL CHARACTER
+    0x001C: 0x1C,       #  CONTROL CHARACTER
+    0x001D: 0x1D,       #  CONTROL CHARACTER
+    0x001E: 0x1E,       #  CONTROL CHARACTER
+    0x001F: 0x1F,       #  CONTROL CHARACTER
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  CONTROL CHARACTER
+    0x00A0: 0xCA,       #  NO-BREAK SPACE
+    0x00A1: 0xC1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A5: 0xB4,       #  YEN SIGN
+    0x00A7: 0xA4,       #  SECTION SIGN
+    0x00A8: 0xAC,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xBB,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,       #  NOT SIGN
+    0x00AE: 0xA8,       #  REGISTERED SIGN
+    0x00AF: 0xF8,       #  MACRON
+    0x00B0: 0xA1,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xA6,       #  PILCROW SIGN
+    0x00B7: 0xE1,       #  MIDDLE DOT
+    0x00B8: 0xFC,       #  CEDILLA
+    0x00BA: 0xBC,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xC8,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,       #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAE,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0x82,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xE6,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xE8,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D0: 0xDC,       #  LATIN CAPITAL LETTER ETH
+    0x00D1: 0x84,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xAF,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xF4,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DD: 0xA0,       #  LATIN CAPITAL LETTER Y WITH ACUTE
+    0x00DE: 0xDE,       #  LATIN CAPITAL LETTER THORN
+    0x00DF: 0xA7,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBE,       #  LATIN SMALL LETTER AE
+    0x00E7: 0x8D,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F0: 0xDD,       #  LATIN SMALL LETTER ETH
+    0x00F1: 0x96,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,       #  DIVISION SIGN
+    0x00F8: 0xBF,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0x9D,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FD: 0xE0,       #  LATIN SMALL LETTER Y WITH ACUTE
+    0x00FE: 0xDF,       #  LATIN SMALL LETTER THORN
+    0x00FF: 0xD8,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0131: 0xF5,       #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,       #  LATIN SMALL LIGATURE OE
+    0x0178: 0xD9,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0xC4,       #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0xF6,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,       #  CARON
+    0x02D8: 0xF9,       #  BREVE
+    0x02D9: 0xFA,       #  DOT ABOVE
+    0x02DA: 0xFB,       #  RING ABOVE
+    0x02DB: 0xFE,       #  OGONEK
+    0x02DC: 0xF7,       #  SMALL TILDE
+    0x02DD: 0xFD,       #  DOUBLE ACUTE ACCENT
+    0x03A9: 0xBD,       #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xB9,       #  GREEK SMALL LETTER PI
+    0x2013: 0xD0,       #  EN DASH
+    0x2014: 0xD1,       #  EM DASH
+    0x2018: 0xD4,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2022: 0xA5,       #  BULLET
+    0x2026: 0xC9,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,       #  PER MILLE SIGN
+    0x2044: 0xDA,       #  FRACTION SLASH
+    0x20AC: 0xDB,       #  EURO SIGN
+    0x2122: 0xAA,       #  TRADE MARK SIGN
+    0x2202: 0xB6,       #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,       #  INCREMENT
+    0x220F: 0xB8,       #  N-ARY PRODUCT
+    0x2211: 0xB7,       #  N-ARY SUMMATION
+    0x221A: 0xC3,       #  SQUARE ROOT
+    0x221E: 0xB0,       #  INFINITY
+    0x222B: 0xBA,       #  INTEGRAL
+    0x2248: 0xC5,       #  ALMOST EQUAL TO
+    0x2260: 0xAD,       #  NOT EQUAL TO
+    0x2264: 0xB2,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,       #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,       #  LOZENGE
+    0xF8FF: 0xF0,       #  Apple logo
 }
-

Modified: python/trunk/Lib/encodings/mac_roman.py
==============================================================================
--- python/trunk/Lib/encodings/mac_roman.py	(original)
+++ python/trunk/Lib/encodings/mac_roman.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> CONTROL CHARACTER
-    u'\x01'	#  0x01 -> CONTROL CHARACTER
-    u'\x02'	#  0x02 -> CONTROL CHARACTER
-    u'\x03'	#  0x03 -> CONTROL CHARACTER
-    u'\x04'	#  0x04 -> CONTROL CHARACTER
-    u'\x05'	#  0x05 -> CONTROL CHARACTER
-    u'\x06'	#  0x06 -> CONTROL CHARACTER
-    u'\x07'	#  0x07 -> CONTROL CHARACTER
-    u'\x08'	#  0x08 -> CONTROL CHARACTER
-    u'\t'	#  0x09 -> CONTROL CHARACTER
-    u'\n'	#  0x0A -> CONTROL CHARACTER
-    u'\x0b'	#  0x0B -> CONTROL CHARACTER
-    u'\x0c'	#  0x0C -> CONTROL CHARACTER
-    u'\r'	#  0x0D -> CONTROL CHARACTER
-    u'\x0e'	#  0x0E -> CONTROL CHARACTER
-    u'\x0f'	#  0x0F -> CONTROL CHARACTER
-    u'\x10'	#  0x10 -> CONTROL CHARACTER
-    u'\x11'	#  0x11 -> CONTROL CHARACTER
-    u'\x12'	#  0x12 -> CONTROL CHARACTER
-    u'\x13'	#  0x13 -> CONTROL CHARACTER
-    u'\x14'	#  0x14 -> CONTROL CHARACTER
-    u'\x15'	#  0x15 -> CONTROL CHARACTER
-    u'\x16'	#  0x16 -> CONTROL CHARACTER
-    u'\x17'	#  0x17 -> CONTROL CHARACTER
-    u'\x18'	#  0x18 -> CONTROL CHARACTER
-    u'\x19'	#  0x19 -> CONTROL CHARACTER
-    u'\x1a'	#  0x1A -> CONTROL CHARACTER
-    u'\x1b'	#  0x1B -> CONTROL CHARACTER
-    u'\x1c'	#  0x1C -> CONTROL CHARACTER
-    u'\x1d'	#  0x1D -> CONTROL CHARACTER
-    u'\x1e'	#  0x1E -> CONTROL CHARACTER
-    u'\x1f'	#  0x1F -> CONTROL CHARACTER
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> CONTROL CHARACTER
-    u'\xc4'	#  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'	#  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'	#  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'	#  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'	#  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'	#  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'	#  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'	#  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'	#  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'	#  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'	#  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'	#  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'	#  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'	#  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'	#  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'	#  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'	#  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'	#  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'	#  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'	#  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'	#  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'	#  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'	#  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'	#  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'	#  0xA0 -> DAGGER
-    u'\xb0'	#  0xA1 -> DEGREE SIGN
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa7'	#  0xA4 -> SECTION SIGN
-    u'\u2022'	#  0xA5 -> BULLET
-    u'\xb6'	#  0xA6 -> PILCROW SIGN
-    u'\xdf'	#  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'	#  0xA8 -> REGISTERED SIGN
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'	#  0xAA -> TRADE MARK SIGN
-    u'\xb4'	#  0xAB -> ACUTE ACCENT
-    u'\xa8'	#  0xAC -> DIAERESIS
-    u'\u2260'	#  0xAD -> NOT EQUAL TO
-    u'\xc6'	#  0xAE -> LATIN CAPITAL LETTER AE
-    u'\xd8'	#  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'	#  0xB0 -> INFINITY
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'	#  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'	#  0xB4 -> YEN SIGN
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\u2202'	#  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'	#  0xB7 -> N-ARY SUMMATION
-    u'\u220f'	#  0xB8 -> N-ARY PRODUCT
-    u'\u03c0'	#  0xB9 -> GREEK SMALL LETTER PI
-    u'\u222b'	#  0xBA -> INTEGRAL
-    u'\xaa'	#  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'	#  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\xe6'	#  0xBE -> LATIN SMALL LETTER AE
-    u'\xf8'	#  0xBF -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'	#  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'	#  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'	#  0xC2 -> NOT SIGN
-    u'\u221a'	#  0xC3 -> SQUARE ROOT
-    u'\u0192'	#  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'	#  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'	#  0xC6 -> INCREMENT
-    u'\xab'	#  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'	#  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'	#  0xCA -> NO-BREAK SPACE
-    u'\xc0'	#  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'	#  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'	#  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'	#  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'	#  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'	#  0xD0 -> EN DASH
-    u'\u2014'	#  0xD1 -> EM DASH
-    u'\u201c'	#  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'	#  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'	#  0xD6 -> DIVISION SIGN
-    u'\u25ca'	#  0xD7 -> LOZENGE
-    u'\xff'	#  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'	#  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u2044'	#  0xDA -> FRACTION SLASH
-    u'\u20ac'	#  0xDB -> EURO SIGN
-    u'\u2039'	#  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'	#  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufb01'	#  0xDE -> LATIN SMALL LIGATURE FI
-    u'\ufb02'	#  0xDF -> LATIN SMALL LIGATURE FL
-    u'\u2021'	#  0xE0 -> DOUBLE DAGGER
-    u'\xb7'	#  0xE1 -> MIDDLE DOT
-    u'\u201a'	#  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'	#  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'	#  0xE4 -> PER MILLE SIGN
-    u'\xc2'	#  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'	#  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'	#  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'	#  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'	#  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'	#  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'	#  0xF0 -> Apple logo
-    u'\xd2'	#  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'	#  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'	#  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'	#  0xF5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'	#  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'	#  0xF7 -> SMALL TILDE
-    u'\xaf'	#  0xF8 -> MACRON
-    u'\u02d8'	#  0xF9 -> BREVE
-    u'\u02d9'	#  0xFA -> DOT ABOVE
-    u'\u02da'	#  0xFB -> RING ABOVE
-    u'\xb8'	#  0xFC -> CEDILLA
-    u'\u02dd'	#  0xFD -> DOUBLE ACUTE ACCENT
-    u'\u02db'	#  0xFE -> OGONEK
-    u'\u02c7'	#  0xFF -> CARON
+    u'\x00'     #  0x00 -> CONTROL CHARACTER
+    u'\x01'     #  0x01 -> CONTROL CHARACTER
+    u'\x02'     #  0x02 -> CONTROL CHARACTER
+    u'\x03'     #  0x03 -> CONTROL CHARACTER
+    u'\x04'     #  0x04 -> CONTROL CHARACTER
+    u'\x05'     #  0x05 -> CONTROL CHARACTER
+    u'\x06'     #  0x06 -> CONTROL CHARACTER
+    u'\x07'     #  0x07 -> CONTROL CHARACTER
+    u'\x08'     #  0x08 -> CONTROL CHARACTER
+    u'\t'       #  0x09 -> CONTROL CHARACTER
+    u'\n'       #  0x0A -> CONTROL CHARACTER
+    u'\x0b'     #  0x0B -> CONTROL CHARACTER
+    u'\x0c'     #  0x0C -> CONTROL CHARACTER
+    u'\r'       #  0x0D -> CONTROL CHARACTER
+    u'\x0e'     #  0x0E -> CONTROL CHARACTER
+    u'\x0f'     #  0x0F -> CONTROL CHARACTER
+    u'\x10'     #  0x10 -> CONTROL CHARACTER
+    u'\x11'     #  0x11 -> CONTROL CHARACTER
+    u'\x12'     #  0x12 -> CONTROL CHARACTER
+    u'\x13'     #  0x13 -> CONTROL CHARACTER
+    u'\x14'     #  0x14 -> CONTROL CHARACTER
+    u'\x15'     #  0x15 -> CONTROL CHARACTER
+    u'\x16'     #  0x16 -> CONTROL CHARACTER
+    u'\x17'     #  0x17 -> CONTROL CHARACTER
+    u'\x18'     #  0x18 -> CONTROL CHARACTER
+    u'\x19'     #  0x19 -> CONTROL CHARACTER
+    u'\x1a'     #  0x1A -> CONTROL CHARACTER
+    u'\x1b'     #  0x1B -> CONTROL CHARACTER
+    u'\x1c'     #  0x1C -> CONTROL CHARACTER
+    u'\x1d'     #  0x1D -> CONTROL CHARACTER
+    u'\x1e'     #  0x1E -> CONTROL CHARACTER
+    u'\x1f'     #  0x1F -> CONTROL CHARACTER
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> CONTROL CHARACTER
+    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'   #  0xA0 -> DAGGER
+    u'\xb0'     #  0xA1 -> DEGREE SIGN
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa7'     #  0xA4 -> SECTION SIGN
+    u'\u2022'   #  0xA5 -> BULLET
+    u'\xb6'     #  0xA6 -> PILCROW SIGN
+    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'     #  0xA8 -> REGISTERED SIGN
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'   #  0xAA -> TRADE MARK SIGN
+    u'\xb4'     #  0xAB -> ACUTE ACCENT
+    u'\xa8'     #  0xAC -> DIAERESIS
+    u'\u2260'   #  0xAD -> NOT EQUAL TO
+    u'\xc6'     #  0xAE -> LATIN CAPITAL LETTER AE
+    u'\xd8'     #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u221e'   #  0xB0 -> INFINITY
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'     #  0xB4 -> YEN SIGN
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
+    u'\u03c0'   #  0xB9 -> GREEK SMALL LETTER PI
+    u'\u222b'   #  0xBA -> INTEGRAL
+    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\xe6'     #  0xBE -> LATIN SMALL LETTER AE
+    u'\xf8'     #  0xBF -> LATIN SMALL LETTER O WITH STROKE
+    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'     #  0xC2 -> NOT SIGN
+    u'\u221a'   #  0xC3 -> SQUARE ROOT
+    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'   #  0xC6 -> INCREMENT
+    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'     #  0xCA -> NO-BREAK SPACE
+    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'   #  0xD0 -> EN DASH
+    u'\u2014'   #  0xD1 -> EM DASH
+    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'     #  0xD6 -> DIVISION SIGN
+    u'\u25ca'   #  0xD7 -> LOZENGE
+    u'\xff'     #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0178'   #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u2044'   #  0xDA -> FRACTION SLASH
+    u'\u20ac'   #  0xDB -> EURO SIGN
+    u'\u2039'   #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u203a'   #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\ufb01'   #  0xDE -> LATIN SMALL LIGATURE FI
+    u'\ufb02'   #  0xDF -> LATIN SMALL LIGATURE FL
+    u'\u2021'   #  0xE0 -> DOUBLE DAGGER
+    u'\xb7'     #  0xE1 -> MIDDLE DOT
+    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'   #  0xE4 -> PER MILLE SIGN
+    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xca'     #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xcb'     #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\uf8ff'   #  0xF0 -> Apple logo
+    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\u0131'   #  0xF5 -> LATIN SMALL LETTER DOTLESS I
+    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'   #  0xF7 -> SMALL TILDE
+    u'\xaf'     #  0xF8 -> MACRON
+    u'\u02d8'   #  0xF9 -> BREVE
+    u'\u02d9'   #  0xFA -> DOT ABOVE
+    u'\u02da'   #  0xFB -> RING ABOVE
+    u'\xb8'     #  0xFC -> CEDILLA
+    u'\u02dd'   #  0xFD -> DOUBLE ACUTE ACCENT
+    u'\u02db'   #  0xFE -> OGONEK
+    u'\u02c7'   #  0xFF -> CARON
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  CONTROL CHARACTER
-    0x0001: 0x01,	#  CONTROL CHARACTER
-    0x0002: 0x02,	#  CONTROL CHARACTER
-    0x0003: 0x03,	#  CONTROL CHARACTER
-    0x0004: 0x04,	#  CONTROL CHARACTER
-    0x0005: 0x05,	#  CONTROL CHARACTER
-    0x0006: 0x06,	#  CONTROL CHARACTER
-    0x0007: 0x07,	#  CONTROL CHARACTER
-    0x0008: 0x08,	#  CONTROL CHARACTER
-    0x0009: 0x09,	#  CONTROL CHARACTER
-    0x000A: 0x0A,	#  CONTROL CHARACTER
-    0x000B: 0x0B,	#  CONTROL CHARACTER
-    0x000C: 0x0C,	#  CONTROL CHARACTER
-    0x000D: 0x0D,	#  CONTROL CHARACTER
-    0x000E: 0x0E,	#  CONTROL CHARACTER
-    0x000F: 0x0F,	#  CONTROL CHARACTER
-    0x0010: 0x10,	#  CONTROL CHARACTER
-    0x0011: 0x11,	#  CONTROL CHARACTER
-    0x0012: 0x12,	#  CONTROL CHARACTER
-    0x0013: 0x13,	#  CONTROL CHARACTER
-    0x0014: 0x14,	#  CONTROL CHARACTER
-    0x0015: 0x15,	#  CONTROL CHARACTER
-    0x0016: 0x16,	#  CONTROL CHARACTER
-    0x0017: 0x17,	#  CONTROL CHARACTER
-    0x0018: 0x18,	#  CONTROL CHARACTER
-    0x0019: 0x19,	#  CONTROL CHARACTER
-    0x001A: 0x1A,	#  CONTROL CHARACTER
-    0x001B: 0x1B,	#  CONTROL CHARACTER
-    0x001C: 0x1C,	#  CONTROL CHARACTER
-    0x001D: 0x1D,	#  CONTROL CHARACTER
-    0x001E: 0x1E,	#  CONTROL CHARACTER
-    0x001F: 0x1F,	#  CONTROL CHARACTER
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  CONTROL CHARACTER
-    0x00A0: 0xCA,	#  NO-BREAK SPACE
-    0x00A1: 0xC1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A5: 0xB4,	#  YEN SIGN
-    0x00A7: 0xA4,	#  SECTION SIGN
-    0x00A8: 0xAC,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xBB,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xC7,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xC2,	#  NOT SIGN
-    0x00AE: 0xA8,	#  REGISTERED SIGN
-    0x00AF: 0xF8,	#  MACRON
-    0x00B0: 0xA1,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B4: 0xAB,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xA6,	#  PILCROW SIGN
-    0x00B7: 0xE1,	#  MIDDLE DOT
-    0x00B8: 0xFC,	#  CEDILLA
-    0x00BA: 0xBC,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xC8,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BF: 0xC0,	#  INVERTED QUESTION MARK
-    0x00C0: 0xCB,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xE7,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xE5,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xCC,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0x80,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0x81,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xAE,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0x82,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xE9,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0x83,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xE6,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xE8,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xED,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xEA,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xEB,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xEC,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0x84,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xF1,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEF,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xCD,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0x85,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D8: 0xAF,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xF4,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xF2,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xF3,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0x86,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xA7,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0x88,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x87,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x89,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0x8B,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0x8A,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0x8C,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xBE,	#  LATIN SMALL LETTER AE
-    0x00E7: 0x8D,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x8F,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x8E,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x90,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x91,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0x93,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0x92,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x94,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x95,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0x96,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0x98,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0x97,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0x99,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0x9B,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0x9A,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xD6,	#  DIVISION SIGN
-    0x00F8: 0xBF,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0x9D,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0x9C,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0x9E,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0x9F,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FF: 0xD8,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0131: 0xF5,	#  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xCE,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xCF,	#  LATIN SMALL LIGATURE OE
-    0x0178: 0xD9,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0xC4,	#  LATIN SMALL LETTER F WITH HOOK
-    0x02C6: 0xF6,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02C7: 0xFF,	#  CARON
-    0x02D8: 0xF9,	#  BREVE
-    0x02D9: 0xFA,	#  DOT ABOVE
-    0x02DA: 0xFB,	#  RING ABOVE
-    0x02DB: 0xFE,	#  OGONEK
-    0x02DC: 0xF7,	#  SMALL TILDE
-    0x02DD: 0xFD,	#  DOUBLE ACUTE ACCENT
-    0x03A9: 0xBD,	#  GREEK CAPITAL LETTER OMEGA
-    0x03C0: 0xB9,	#  GREEK SMALL LETTER PI
-    0x2013: 0xD0,	#  EN DASH
-    0x2014: 0xD1,	#  EM DASH
-    0x2018: 0xD4,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xD5,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0xE2,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0xD2,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0xD3,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0xE3,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xA0,	#  DAGGER
-    0x2021: 0xE0,	#  DOUBLE DAGGER
-    0x2022: 0xA5,	#  BULLET
-    0x2026: 0xC9,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0xE4,	#  PER MILLE SIGN
-    0x2039: 0xDC,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0xDD,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x2044: 0xDA,	#  FRACTION SLASH
-    0x20AC: 0xDB,	#  EURO SIGN
-    0x2122: 0xAA,	#  TRADE MARK SIGN
-    0x2202: 0xB6,	#  PARTIAL DIFFERENTIAL
-    0x2206: 0xC6,	#  INCREMENT
-    0x220F: 0xB8,	#  N-ARY PRODUCT
-    0x2211: 0xB7,	#  N-ARY SUMMATION
-    0x221A: 0xC3,	#  SQUARE ROOT
-    0x221E: 0xB0,	#  INFINITY
-    0x222B: 0xBA,	#  INTEGRAL
-    0x2248: 0xC5,	#  ALMOST EQUAL TO
-    0x2260: 0xAD,	#  NOT EQUAL TO
-    0x2264: 0xB2,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0xB3,	#  GREATER-THAN OR EQUAL TO
-    0x25CA: 0xD7,	#  LOZENGE
-    0xF8FF: 0xF0,	#  Apple logo
-    0xFB01: 0xDE,	#  LATIN SMALL LIGATURE FI
-    0xFB02: 0xDF,	#  LATIN SMALL LIGATURE FL
+    0x0000: 0x00,       #  CONTROL CHARACTER
+    0x0001: 0x01,       #  CONTROL CHARACTER
+    0x0002: 0x02,       #  CONTROL CHARACTER
+    0x0003: 0x03,       #  CONTROL CHARACTER
+    0x0004: 0x04,       #  CONTROL CHARACTER
+    0x0005: 0x05,       #  CONTROL CHARACTER
+    0x0006: 0x06,       #  CONTROL CHARACTER
+    0x0007: 0x07,       #  CONTROL CHARACTER
+    0x0008: 0x08,       #  CONTROL CHARACTER
+    0x0009: 0x09,       #  CONTROL CHARACTER
+    0x000A: 0x0A,       #  CONTROL CHARACTER
+    0x000B: 0x0B,       #  CONTROL CHARACTER
+    0x000C: 0x0C,       #  CONTROL CHARACTER
+    0x000D: 0x0D,       #  CONTROL CHARACTER
+    0x000E: 0x0E,       #  CONTROL CHARACTER
+    0x000F: 0x0F,       #  CONTROL CHARACTER
+    0x0010: 0x10,       #  CONTROL CHARACTER
+    0x0011: 0x11,       #  CONTROL CHARACTER
+    0x0012: 0x12,       #  CONTROL CHARACTER
+    0x0013: 0x13,       #  CONTROL CHARACTER
+    0x0014: 0x14,       #  CONTROL CHARACTER
+    0x0015: 0x15,       #  CONTROL CHARACTER
+    0x0016: 0x16,       #  CONTROL CHARACTER
+    0x0017: 0x17,       #  CONTROL CHARACTER
+    0x0018: 0x18,       #  CONTROL CHARACTER
+    0x0019: 0x19,       #  CONTROL CHARACTER
+    0x001A: 0x1A,       #  CONTROL CHARACTER
+    0x001B: 0x1B,       #  CONTROL CHARACTER
+    0x001C: 0x1C,       #  CONTROL CHARACTER
+    0x001D: 0x1D,       #  CONTROL CHARACTER
+    0x001E: 0x1E,       #  CONTROL CHARACTER
+    0x001F: 0x1F,       #  CONTROL CHARACTER
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  CONTROL CHARACTER
+    0x00A0: 0xCA,       #  NO-BREAK SPACE
+    0x00A1: 0xC1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A5: 0xB4,       #  YEN SIGN
+    0x00A7: 0xA4,       #  SECTION SIGN
+    0x00A8: 0xAC,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xBB,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,       #  NOT SIGN
+    0x00AE: 0xA8,       #  REGISTERED SIGN
+    0x00AF: 0xF8,       #  MACRON
+    0x00B0: 0xA1,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xA6,       #  PILCROW SIGN
+    0x00B7: 0xE1,       #  MIDDLE DOT
+    0x00B8: 0xFC,       #  CEDILLA
+    0x00BA: 0xBC,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xC8,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,       #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAE,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0x82,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xE6,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xE8,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x84,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xAF,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xF4,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBE,       #  LATIN SMALL LETTER AE
+    0x00E7: 0x8D,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,       #  DIVISION SIGN
+    0x00F8: 0xBF,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0x9D,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xD8,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0131: 0xF5,       #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,       #  LATIN SMALL LIGATURE OE
+    0x0178: 0xD9,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0xC4,       #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0xF6,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,       #  CARON
+    0x02D8: 0xF9,       #  BREVE
+    0x02D9: 0xFA,       #  DOT ABOVE
+    0x02DA: 0xFB,       #  RING ABOVE
+    0x02DB: 0xFE,       #  OGONEK
+    0x02DC: 0xF7,       #  SMALL TILDE
+    0x02DD: 0xFD,       #  DOUBLE ACUTE ACCENT
+    0x03A9: 0xBD,       #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xB9,       #  GREEK SMALL LETTER PI
+    0x2013: 0xD0,       #  EN DASH
+    0x2014: 0xD1,       #  EM DASH
+    0x2018: 0xD4,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,       #  DAGGER
+    0x2021: 0xE0,       #  DOUBLE DAGGER
+    0x2022: 0xA5,       #  BULLET
+    0x2026: 0xC9,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,       #  PER MILLE SIGN
+    0x2039: 0xDC,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0xDD,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x2044: 0xDA,       #  FRACTION SLASH
+    0x20AC: 0xDB,       #  EURO SIGN
+    0x2122: 0xAA,       #  TRADE MARK SIGN
+    0x2202: 0xB6,       #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,       #  INCREMENT
+    0x220F: 0xB8,       #  N-ARY PRODUCT
+    0x2211: 0xB7,       #  N-ARY SUMMATION
+    0x221A: 0xC3,       #  SQUARE ROOT
+    0x221E: 0xB0,       #  INFINITY
+    0x222B: 0xBA,       #  INTEGRAL
+    0x2248: 0xC5,       #  ALMOST EQUAL TO
+    0x2260: 0xAD,       #  NOT EQUAL TO
+    0x2264: 0xB2,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,       #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,       #  LOZENGE
+    0xF8FF: 0xF0,       #  Apple logo
+    0xFB01: 0xDE,       #  LATIN SMALL LIGATURE FI
+    0xFB02: 0xDF,       #  LATIN SMALL LIGATURE FL
 }
-

Modified: python/trunk/Lib/encodings/mac_romanian.py
==============================================================================
--- python/trunk/Lib/encodings/mac_romanian.py	(original)
+++ python/trunk/Lib/encodings/mac_romanian.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> CONTROL CHARACTER
-    u'\x01'	#  0x01 -> CONTROL CHARACTER
-    u'\x02'	#  0x02 -> CONTROL CHARACTER
-    u'\x03'	#  0x03 -> CONTROL CHARACTER
-    u'\x04'	#  0x04 -> CONTROL CHARACTER
-    u'\x05'	#  0x05 -> CONTROL CHARACTER
-    u'\x06'	#  0x06 -> CONTROL CHARACTER
-    u'\x07'	#  0x07 -> CONTROL CHARACTER
-    u'\x08'	#  0x08 -> CONTROL CHARACTER
-    u'\t'	#  0x09 -> CONTROL CHARACTER
-    u'\n'	#  0x0A -> CONTROL CHARACTER
-    u'\x0b'	#  0x0B -> CONTROL CHARACTER
-    u'\x0c'	#  0x0C -> CONTROL CHARACTER
-    u'\r'	#  0x0D -> CONTROL CHARACTER
-    u'\x0e'	#  0x0E -> CONTROL CHARACTER
-    u'\x0f'	#  0x0F -> CONTROL CHARACTER
-    u'\x10'	#  0x10 -> CONTROL CHARACTER
-    u'\x11'	#  0x11 -> CONTROL CHARACTER
-    u'\x12'	#  0x12 -> CONTROL CHARACTER
-    u'\x13'	#  0x13 -> CONTROL CHARACTER
-    u'\x14'	#  0x14 -> CONTROL CHARACTER
-    u'\x15'	#  0x15 -> CONTROL CHARACTER
-    u'\x16'	#  0x16 -> CONTROL CHARACTER
-    u'\x17'	#  0x17 -> CONTROL CHARACTER
-    u'\x18'	#  0x18 -> CONTROL CHARACTER
-    u'\x19'	#  0x19 -> CONTROL CHARACTER
-    u'\x1a'	#  0x1A -> CONTROL CHARACTER
-    u'\x1b'	#  0x1B -> CONTROL CHARACTER
-    u'\x1c'	#  0x1C -> CONTROL CHARACTER
-    u'\x1d'	#  0x1D -> CONTROL CHARACTER
-    u'\x1e'	#  0x1E -> CONTROL CHARACTER
-    u'\x1f'	#  0x1F -> CONTROL CHARACTER
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> CONTROL CHARACTER
-    u'\xc4'	#  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'	#  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'	#  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'	#  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'	#  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'	#  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'	#  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'	#  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'	#  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'	#  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'	#  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'	#  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'	#  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'	#  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'	#  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'	#  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'	#  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'	#  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'	#  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'	#  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'	#  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'	#  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'	#  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'	#  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'	#  0xA0 -> DAGGER
-    u'\xb0'	#  0xA1 -> DEGREE SIGN
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa7'	#  0xA4 -> SECTION SIGN
-    u'\u2022'	#  0xA5 -> BULLET
-    u'\xb6'	#  0xA6 -> PILCROW SIGN
-    u'\xdf'	#  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'	#  0xA8 -> REGISTERED SIGN
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'	#  0xAA -> TRADE MARK SIGN
-    u'\xb4'	#  0xAB -> ACUTE ACCENT
-    u'\xa8'	#  0xAC -> DIAERESIS
-    u'\u2260'	#  0xAD -> NOT EQUAL TO
-    u'\u0102'	#  0xAE -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\u0218'	#  0xAF -> LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\u221e'	#  0xB0 -> INFINITY
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'	#  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'	#  0xB4 -> YEN SIGN
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\u2202'	#  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'	#  0xB7 -> N-ARY SUMMATION
-    u'\u220f'	#  0xB8 -> N-ARY PRODUCT
-    u'\u03c0'	#  0xB9 -> GREEK SMALL LETTER PI
-    u'\u222b'	#  0xBA -> INTEGRAL
-    u'\xaa'	#  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'	#  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\u0103'	#  0xBE -> LATIN SMALL LETTER A WITH BREVE
-    u'\u0219'	#  0xBF -> LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\xbf'	#  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'	#  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'	#  0xC2 -> NOT SIGN
-    u'\u221a'	#  0xC3 -> SQUARE ROOT
-    u'\u0192'	#  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'	#  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'	#  0xC6 -> INCREMENT
-    u'\xab'	#  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'	#  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'	#  0xCA -> NO-BREAK SPACE
-    u'\xc0'	#  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'	#  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'	#  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'	#  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'	#  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'	#  0xD0 -> EN DASH
-    u'\u2014'	#  0xD1 -> EM DASH
-    u'\u201c'	#  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'	#  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'	#  0xD6 -> DIVISION SIGN
-    u'\u25ca'	#  0xD7 -> LOZENGE
-    u'\xff'	#  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'	#  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u2044'	#  0xDA -> FRACTION SLASH
-    u'\u20ac'	#  0xDB -> EURO SIGN
-    u'\u2039'	#  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'	#  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u021a'	#  0xDE -> LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\u021b'	#  0xDF -> LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\u2021'	#  0xE0 -> DOUBLE DAGGER
-    u'\xb7'	#  0xE1 -> MIDDLE DOT
-    u'\u201a'	#  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'	#  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'	#  0xE4 -> PER MILLE SIGN
-    u'\xc2'	#  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'	#  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'	#  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'	#  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'	#  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'	#  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'	#  0xF0 -> Apple logo
-    u'\xd2'	#  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'	#  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'	#  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'	#  0xF5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'	#  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'	#  0xF7 -> SMALL TILDE
-    u'\xaf'	#  0xF8 -> MACRON
-    u'\u02d8'	#  0xF9 -> BREVE
-    u'\u02d9'	#  0xFA -> DOT ABOVE
-    u'\u02da'	#  0xFB -> RING ABOVE
-    u'\xb8'	#  0xFC -> CEDILLA
-    u'\u02dd'	#  0xFD -> DOUBLE ACUTE ACCENT
-    u'\u02db'	#  0xFE -> OGONEK
-    u'\u02c7'	#  0xFF -> CARON
+    u'\x00'     #  0x00 -> CONTROL CHARACTER
+    u'\x01'     #  0x01 -> CONTROL CHARACTER
+    u'\x02'     #  0x02 -> CONTROL CHARACTER
+    u'\x03'     #  0x03 -> CONTROL CHARACTER
+    u'\x04'     #  0x04 -> CONTROL CHARACTER
+    u'\x05'     #  0x05 -> CONTROL CHARACTER
+    u'\x06'     #  0x06 -> CONTROL CHARACTER
+    u'\x07'     #  0x07 -> CONTROL CHARACTER
+    u'\x08'     #  0x08 -> CONTROL CHARACTER
+    u'\t'       #  0x09 -> CONTROL CHARACTER
+    u'\n'       #  0x0A -> CONTROL CHARACTER
+    u'\x0b'     #  0x0B -> CONTROL CHARACTER
+    u'\x0c'     #  0x0C -> CONTROL CHARACTER
+    u'\r'       #  0x0D -> CONTROL CHARACTER
+    u'\x0e'     #  0x0E -> CONTROL CHARACTER
+    u'\x0f'     #  0x0F -> CONTROL CHARACTER
+    u'\x10'     #  0x10 -> CONTROL CHARACTER
+    u'\x11'     #  0x11 -> CONTROL CHARACTER
+    u'\x12'     #  0x12 -> CONTROL CHARACTER
+    u'\x13'     #  0x13 -> CONTROL CHARACTER
+    u'\x14'     #  0x14 -> CONTROL CHARACTER
+    u'\x15'     #  0x15 -> CONTROL CHARACTER
+    u'\x16'     #  0x16 -> CONTROL CHARACTER
+    u'\x17'     #  0x17 -> CONTROL CHARACTER
+    u'\x18'     #  0x18 -> CONTROL CHARACTER
+    u'\x19'     #  0x19 -> CONTROL CHARACTER
+    u'\x1a'     #  0x1A -> CONTROL CHARACTER
+    u'\x1b'     #  0x1B -> CONTROL CHARACTER
+    u'\x1c'     #  0x1C -> CONTROL CHARACTER
+    u'\x1d'     #  0x1D -> CONTROL CHARACTER
+    u'\x1e'     #  0x1E -> CONTROL CHARACTER
+    u'\x1f'     #  0x1F -> CONTROL CHARACTER
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> CONTROL CHARACTER
+    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'   #  0xA0 -> DAGGER
+    u'\xb0'     #  0xA1 -> DEGREE SIGN
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa7'     #  0xA4 -> SECTION SIGN
+    u'\u2022'   #  0xA5 -> BULLET
+    u'\xb6'     #  0xA6 -> PILCROW SIGN
+    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'     #  0xA8 -> REGISTERED SIGN
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'   #  0xAA -> TRADE MARK SIGN
+    u'\xb4'     #  0xAB -> ACUTE ACCENT
+    u'\xa8'     #  0xAC -> DIAERESIS
+    u'\u2260'   #  0xAD -> NOT EQUAL TO
+    u'\u0102'   #  0xAE -> LATIN CAPITAL LETTER A WITH BREVE
+    u'\u0218'   #  0xAF -> LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
+    u'\u221e'   #  0xB0 -> INFINITY
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'     #  0xB4 -> YEN SIGN
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
+    u'\u03c0'   #  0xB9 -> GREEK SMALL LETTER PI
+    u'\u222b'   #  0xBA -> INTEGRAL
+    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\u0103'   #  0xBE -> LATIN SMALL LETTER A WITH BREVE
+    u'\u0219'   #  0xBF -> LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
+    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'     #  0xC2 -> NOT SIGN
+    u'\u221a'   #  0xC3 -> SQUARE ROOT
+    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'   #  0xC6 -> INCREMENT
+    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'     #  0xCA -> NO-BREAK SPACE
+    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'   #  0xD0 -> EN DASH
+    u'\u2014'   #  0xD1 -> EM DASH
+    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'     #  0xD6 -> DIVISION SIGN
+    u'\u25ca'   #  0xD7 -> LOZENGE
+    u'\xff'     #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0178'   #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u2044'   #  0xDA -> FRACTION SLASH
+    u'\u20ac'   #  0xDB -> EURO SIGN
+    u'\u2039'   #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    u'\u203a'   #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    u'\u021a'   #  0xDE -> LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
+    u'\u021b'   #  0xDF -> LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
+    u'\u2021'   #  0xE0 -> DOUBLE DAGGER
+    u'\xb7'     #  0xE1 -> MIDDLE DOT
+    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'   #  0xE4 -> PER MILLE SIGN
+    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xca'     #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xcb'     #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\uf8ff'   #  0xF0 -> Apple logo
+    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\u0131'   #  0xF5 -> LATIN SMALL LETTER DOTLESS I
+    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'   #  0xF7 -> SMALL TILDE
+    u'\xaf'     #  0xF8 -> MACRON
+    u'\u02d8'   #  0xF9 -> BREVE
+    u'\u02d9'   #  0xFA -> DOT ABOVE
+    u'\u02da'   #  0xFB -> RING ABOVE
+    u'\xb8'     #  0xFC -> CEDILLA
+    u'\u02dd'   #  0xFD -> DOUBLE ACUTE ACCENT
+    u'\u02db'   #  0xFE -> OGONEK
+    u'\u02c7'   #  0xFF -> CARON
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  CONTROL CHARACTER
-    0x0001: 0x01,	#  CONTROL CHARACTER
-    0x0002: 0x02,	#  CONTROL CHARACTER
-    0x0003: 0x03,	#  CONTROL CHARACTER
-    0x0004: 0x04,	#  CONTROL CHARACTER
-    0x0005: 0x05,	#  CONTROL CHARACTER
-    0x0006: 0x06,	#  CONTROL CHARACTER
-    0x0007: 0x07,	#  CONTROL CHARACTER
-    0x0008: 0x08,	#  CONTROL CHARACTER
-    0x0009: 0x09,	#  CONTROL CHARACTER
-    0x000A: 0x0A,	#  CONTROL CHARACTER
-    0x000B: 0x0B,	#  CONTROL CHARACTER
-    0x000C: 0x0C,	#  CONTROL CHARACTER
-    0x000D: 0x0D,	#  CONTROL CHARACTER
-    0x000E: 0x0E,	#  CONTROL CHARACTER
-    0x000F: 0x0F,	#  CONTROL CHARACTER
-    0x0010: 0x10,	#  CONTROL CHARACTER
-    0x0011: 0x11,	#  CONTROL CHARACTER
-    0x0012: 0x12,	#  CONTROL CHARACTER
-    0x0013: 0x13,	#  CONTROL CHARACTER
-    0x0014: 0x14,	#  CONTROL CHARACTER
-    0x0015: 0x15,	#  CONTROL CHARACTER
-    0x0016: 0x16,	#  CONTROL CHARACTER
-    0x0017: 0x17,	#  CONTROL CHARACTER
-    0x0018: 0x18,	#  CONTROL CHARACTER
-    0x0019: 0x19,	#  CONTROL CHARACTER
-    0x001A: 0x1A,	#  CONTROL CHARACTER
-    0x001B: 0x1B,	#  CONTROL CHARACTER
-    0x001C: 0x1C,	#  CONTROL CHARACTER
-    0x001D: 0x1D,	#  CONTROL CHARACTER
-    0x001E: 0x1E,	#  CONTROL CHARACTER
-    0x001F: 0x1F,	#  CONTROL CHARACTER
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  CONTROL CHARACTER
-    0x00A0: 0xCA,	#  NO-BREAK SPACE
-    0x00A1: 0xC1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A5: 0xB4,	#  YEN SIGN
-    0x00A7: 0xA4,	#  SECTION SIGN
-    0x00A8: 0xAC,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xBB,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xC7,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xC2,	#  NOT SIGN
-    0x00AE: 0xA8,	#  REGISTERED SIGN
-    0x00AF: 0xF8,	#  MACRON
-    0x00B0: 0xA1,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B4: 0xAB,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xA6,	#  PILCROW SIGN
-    0x00B7: 0xE1,	#  MIDDLE DOT
-    0x00B8: 0xFC,	#  CEDILLA
-    0x00BA: 0xBC,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xC8,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BF: 0xC0,	#  INVERTED QUESTION MARK
-    0x00C0: 0xCB,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xE7,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xE5,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xCC,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0x80,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0x81,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C7: 0x82,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xE9,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0x83,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xE6,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xE8,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xED,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xEA,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xEB,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xEC,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0x84,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xF1,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEF,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xCD,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0x85,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D9: 0xF4,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xF2,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xF3,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0x86,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xA7,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0x88,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x87,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x89,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0x8B,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0x8A,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0x8C,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E7: 0x8D,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x8F,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x8E,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x90,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x91,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0x93,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0x92,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x94,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x95,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0x96,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0x98,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0x97,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0x99,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0x9B,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0x9A,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xD6,	#  DIVISION SIGN
-    0x00F9: 0x9D,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0x9C,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0x9E,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0x9F,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FF: 0xD8,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0102: 0xAE,	#  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0xBE,	#  LATIN SMALL LETTER A WITH BREVE
-    0x0131: 0xF5,	#  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xCE,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xCF,	#  LATIN SMALL LIGATURE OE
-    0x0178: 0xD9,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0xC4,	#  LATIN SMALL LETTER F WITH HOOK
-    0x0218: 0xAF,	#  LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    0x0219: 0xBF,	#  LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    0x021A: 0xDE,	#  LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    0x021B: 0xDF,	#  LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    0x02C6: 0xF6,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02C7: 0xFF,	#  CARON
-    0x02D8: 0xF9,	#  BREVE
-    0x02D9: 0xFA,	#  DOT ABOVE
-    0x02DA: 0xFB,	#  RING ABOVE
-    0x02DB: 0xFE,	#  OGONEK
-    0x02DC: 0xF7,	#  SMALL TILDE
-    0x02DD: 0xFD,	#  DOUBLE ACUTE ACCENT
-    0x03A9: 0xBD,	#  GREEK CAPITAL LETTER OMEGA
-    0x03C0: 0xB9,	#  GREEK SMALL LETTER PI
-    0x2013: 0xD0,	#  EN DASH
-    0x2014: 0xD1,	#  EM DASH
-    0x2018: 0xD4,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xD5,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0xE2,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0xD2,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0xD3,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0xE3,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xA0,	#  DAGGER
-    0x2021: 0xE0,	#  DOUBLE DAGGER
-    0x2022: 0xA5,	#  BULLET
-    0x2026: 0xC9,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0xE4,	#  PER MILLE SIGN
-    0x2039: 0xDC,	#  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    0x203A: 0xDD,	#  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    0x2044: 0xDA,	#  FRACTION SLASH
-    0x20AC: 0xDB,	#  EURO SIGN
-    0x2122: 0xAA,	#  TRADE MARK SIGN
-    0x2202: 0xB6,	#  PARTIAL DIFFERENTIAL
-    0x2206: 0xC6,	#  INCREMENT
-    0x220F: 0xB8,	#  N-ARY PRODUCT
-    0x2211: 0xB7,	#  N-ARY SUMMATION
-    0x221A: 0xC3,	#  SQUARE ROOT
-    0x221E: 0xB0,	#  INFINITY
-    0x222B: 0xBA,	#  INTEGRAL
-    0x2248: 0xC5,	#  ALMOST EQUAL TO
-    0x2260: 0xAD,	#  NOT EQUAL TO
-    0x2264: 0xB2,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0xB3,	#  GREATER-THAN OR EQUAL TO
-    0x25CA: 0xD7,	#  LOZENGE
-    0xF8FF: 0xF0,	#  Apple logo
+    0x0000: 0x00,       #  CONTROL CHARACTER
+    0x0001: 0x01,       #  CONTROL CHARACTER
+    0x0002: 0x02,       #  CONTROL CHARACTER
+    0x0003: 0x03,       #  CONTROL CHARACTER
+    0x0004: 0x04,       #  CONTROL CHARACTER
+    0x0005: 0x05,       #  CONTROL CHARACTER
+    0x0006: 0x06,       #  CONTROL CHARACTER
+    0x0007: 0x07,       #  CONTROL CHARACTER
+    0x0008: 0x08,       #  CONTROL CHARACTER
+    0x0009: 0x09,       #  CONTROL CHARACTER
+    0x000A: 0x0A,       #  CONTROL CHARACTER
+    0x000B: 0x0B,       #  CONTROL CHARACTER
+    0x000C: 0x0C,       #  CONTROL CHARACTER
+    0x000D: 0x0D,       #  CONTROL CHARACTER
+    0x000E: 0x0E,       #  CONTROL CHARACTER
+    0x000F: 0x0F,       #  CONTROL CHARACTER
+    0x0010: 0x10,       #  CONTROL CHARACTER
+    0x0011: 0x11,       #  CONTROL CHARACTER
+    0x0012: 0x12,       #  CONTROL CHARACTER
+    0x0013: 0x13,       #  CONTROL CHARACTER
+    0x0014: 0x14,       #  CONTROL CHARACTER
+    0x0015: 0x15,       #  CONTROL CHARACTER
+    0x0016: 0x16,       #  CONTROL CHARACTER
+    0x0017: 0x17,       #  CONTROL CHARACTER
+    0x0018: 0x18,       #  CONTROL CHARACTER
+    0x0019: 0x19,       #  CONTROL CHARACTER
+    0x001A: 0x1A,       #  CONTROL CHARACTER
+    0x001B: 0x1B,       #  CONTROL CHARACTER
+    0x001C: 0x1C,       #  CONTROL CHARACTER
+    0x001D: 0x1D,       #  CONTROL CHARACTER
+    0x001E: 0x1E,       #  CONTROL CHARACTER
+    0x001F: 0x1F,       #  CONTROL CHARACTER
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  CONTROL CHARACTER
+    0x00A0: 0xCA,       #  NO-BREAK SPACE
+    0x00A1: 0xC1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A5: 0xB4,       #  YEN SIGN
+    0x00A7: 0xA4,       #  SECTION SIGN
+    0x00A8: 0xAC,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xBB,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,       #  NOT SIGN
+    0x00AE: 0xA8,       #  REGISTERED SIGN
+    0x00AF: 0xF8,       #  MACRON
+    0x00B0: 0xA1,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xA6,       #  PILCROW SIGN
+    0x00B7: 0xE1,       #  MIDDLE DOT
+    0x00B8: 0xFC,       #  CEDILLA
+    0x00BA: 0xBC,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xC8,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,       #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C7: 0x82,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xE6,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xE8,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x84,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D9: 0xF4,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E7: 0x8D,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,       #  DIVISION SIGN
+    0x00F9: 0x9D,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xD8,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x0102: 0xAE,       #  LATIN CAPITAL LETTER A WITH BREVE
+    0x0103: 0xBE,       #  LATIN SMALL LETTER A WITH BREVE
+    0x0131: 0xF5,       #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,       #  LATIN SMALL LIGATURE OE
+    0x0178: 0xD9,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0xC4,       #  LATIN SMALL LETTER F WITH HOOK
+    0x0218: 0xAF,       #  LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
+    0x0219: 0xBF,       #  LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
+    0x021A: 0xDE,       #  LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
+    0x021B: 0xDF,       #  LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
+    0x02C6: 0xF6,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,       #  CARON
+    0x02D8: 0xF9,       #  BREVE
+    0x02D9: 0xFA,       #  DOT ABOVE
+    0x02DA: 0xFB,       #  RING ABOVE
+    0x02DB: 0xFE,       #  OGONEK
+    0x02DC: 0xF7,       #  SMALL TILDE
+    0x02DD: 0xFD,       #  DOUBLE ACUTE ACCENT
+    0x03A9: 0xBD,       #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xB9,       #  GREEK SMALL LETTER PI
+    0x2013: 0xD0,       #  EN DASH
+    0x2014: 0xD1,       #  EM DASH
+    0x2018: 0xD4,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,       #  DAGGER
+    0x2021: 0xE0,       #  DOUBLE DAGGER
+    0x2022: 0xA5,       #  BULLET
+    0x2026: 0xC9,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,       #  PER MILLE SIGN
+    0x2039: 0xDC,       #  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+    0x203A: 0xDD,       #  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+    0x2044: 0xDA,       #  FRACTION SLASH
+    0x20AC: 0xDB,       #  EURO SIGN
+    0x2122: 0xAA,       #  TRADE MARK SIGN
+    0x2202: 0xB6,       #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,       #  INCREMENT
+    0x220F: 0xB8,       #  N-ARY PRODUCT
+    0x2211: 0xB7,       #  N-ARY SUMMATION
+    0x221A: 0xC3,       #  SQUARE ROOT
+    0x221E: 0xB0,       #  INFINITY
+    0x222B: 0xBA,       #  INTEGRAL
+    0x2248: 0xC5,       #  ALMOST EQUAL TO
+    0x2260: 0xAD,       #  NOT EQUAL TO
+    0x2264: 0xB2,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,       #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,       #  LOZENGE
+    0xF8FF: 0xF0,       #  Apple logo
 }
-

Modified: python/trunk/Lib/encodings/mac_turkish.py
==============================================================================
--- python/trunk/Lib/encodings/mac_turkish.py	(original)
+++ python/trunk/Lib/encodings/mac_turkish.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,522 +32,521 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> CONTROL CHARACTER
-    u'\x01'	#  0x01 -> CONTROL CHARACTER
-    u'\x02'	#  0x02 -> CONTROL CHARACTER
-    u'\x03'	#  0x03 -> CONTROL CHARACTER
-    u'\x04'	#  0x04 -> CONTROL CHARACTER
-    u'\x05'	#  0x05 -> CONTROL CHARACTER
-    u'\x06'	#  0x06 -> CONTROL CHARACTER
-    u'\x07'	#  0x07 -> CONTROL CHARACTER
-    u'\x08'	#  0x08 -> CONTROL CHARACTER
-    u'\t'	#  0x09 -> CONTROL CHARACTER
-    u'\n'	#  0x0A -> CONTROL CHARACTER
-    u'\x0b'	#  0x0B -> CONTROL CHARACTER
-    u'\x0c'	#  0x0C -> CONTROL CHARACTER
-    u'\r'	#  0x0D -> CONTROL CHARACTER
-    u'\x0e'	#  0x0E -> CONTROL CHARACTER
-    u'\x0f'	#  0x0F -> CONTROL CHARACTER
-    u'\x10'	#  0x10 -> CONTROL CHARACTER
-    u'\x11'	#  0x11 -> CONTROL CHARACTER
-    u'\x12'	#  0x12 -> CONTROL CHARACTER
-    u'\x13'	#  0x13 -> CONTROL CHARACTER
-    u'\x14'	#  0x14 -> CONTROL CHARACTER
-    u'\x15'	#  0x15 -> CONTROL CHARACTER
-    u'\x16'	#  0x16 -> CONTROL CHARACTER
-    u'\x17'	#  0x17 -> CONTROL CHARACTER
-    u'\x18'	#  0x18 -> CONTROL CHARACTER
-    u'\x19'	#  0x19 -> CONTROL CHARACTER
-    u'\x1a'	#  0x1A -> CONTROL CHARACTER
-    u'\x1b'	#  0x1B -> CONTROL CHARACTER
-    u'\x1c'	#  0x1C -> CONTROL CHARACTER
-    u'\x1d'	#  0x1D -> CONTROL CHARACTER
-    u'\x1e'	#  0x1E -> CONTROL CHARACTER
-    u'\x1f'	#  0x1F -> CONTROL CHARACTER
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> CONTROL CHARACTER
-    u'\xc4'	#  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'	#  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'	#  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'	#  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'	#  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'	#  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'	#  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'	#  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'	#  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'	#  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'	#  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'	#  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'	#  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'	#  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'	#  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'	#  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'	#  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'	#  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'	#  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'	#  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'	#  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'	#  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'	#  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'	#  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'	#  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'	#  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'	#  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'	#  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'	#  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'	#  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'	#  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'	#  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'	#  0xA0 -> DAGGER
-    u'\xb0'	#  0xA1 -> DEGREE SIGN
-    u'\xa2'	#  0xA2 -> CENT SIGN
-    u'\xa3'	#  0xA3 -> POUND SIGN
-    u'\xa7'	#  0xA4 -> SECTION SIGN
-    u'\u2022'	#  0xA5 -> BULLET
-    u'\xb6'	#  0xA6 -> PILCROW SIGN
-    u'\xdf'	#  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'	#  0xA8 -> REGISTERED SIGN
-    u'\xa9'	#  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'	#  0xAA -> TRADE MARK SIGN
-    u'\xb4'	#  0xAB -> ACUTE ACCENT
-    u'\xa8'	#  0xAC -> DIAERESIS
-    u'\u2260'	#  0xAD -> NOT EQUAL TO
-    u'\xc6'	#  0xAE -> LATIN CAPITAL LETTER AE
-    u'\xd8'	#  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'	#  0xB0 -> INFINITY
-    u'\xb1'	#  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'	#  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'	#  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'	#  0xB4 -> YEN SIGN
-    u'\xb5'	#  0xB5 -> MICRO SIGN
-    u'\u2202'	#  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'	#  0xB7 -> N-ARY SUMMATION
-    u'\u220f'	#  0xB8 -> N-ARY PRODUCT
-    u'\u03c0'	#  0xB9 -> GREEK SMALL LETTER PI
-    u'\u222b'	#  0xBA -> INTEGRAL
-    u'\xaa'	#  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'	#  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'	#  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\xe6'	#  0xBE -> LATIN SMALL LETTER AE
-    u'\xf8'	#  0xBF -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'	#  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'	#  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'	#  0xC2 -> NOT SIGN
-    u'\u221a'	#  0xC3 -> SQUARE ROOT
-    u'\u0192'	#  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'	#  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'	#  0xC6 -> INCREMENT
-    u'\xab'	#  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'	#  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'	#  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'	#  0xCA -> NO-BREAK SPACE
-    u'\xc0'	#  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'	#  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'	#  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'	#  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'	#  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'	#  0xD0 -> EN DASH
-    u'\u2014'	#  0xD1 -> EM DASH
-    u'\u201c'	#  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'	#  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'	#  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'	#  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'	#  0xD6 -> DIVISION SIGN
-    u'\u25ca'	#  0xD7 -> LOZENGE
-    u'\xff'	#  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'	#  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u011e'	#  0xDA -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u011f'	#  0xDB -> LATIN SMALL LETTER G WITH BREVE
-    u'\u0130'	#  0xDC -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u0131'	#  0xDD -> LATIN SMALL LETTER DOTLESS I
-    u'\u015e'	#  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u015f'	#  0xDF -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\u2021'	#  0xE0 -> DOUBLE DAGGER
-    u'\xb7'	#  0xE1 -> MIDDLE DOT
-    u'\u201a'	#  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'	#  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'	#  0xE4 -> PER MILLE SIGN
-    u'\xc2'	#  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'	#  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'	#  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'	#  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'	#  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'	#  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'	#  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'	#  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'	#  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'	#  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'	#  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'	#  0xF0 -> Apple logo
-    u'\xd2'	#  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'	#  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'	#  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'	#  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\uf8a0'	#  0xF5 -> undefined1
-    u'\u02c6'	#  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'	#  0xF7 -> SMALL TILDE
-    u'\xaf'	#  0xF8 -> MACRON
-    u'\u02d8'	#  0xF9 -> BREVE
-    u'\u02d9'	#  0xFA -> DOT ABOVE
-    u'\u02da'	#  0xFB -> RING ABOVE
-    u'\xb8'	#  0xFC -> CEDILLA
-    u'\u02dd'	#  0xFD -> DOUBLE ACUTE ACCENT
-    u'\u02db'	#  0xFE -> OGONEK
-    u'\u02c7'	#  0xFF -> CARON
+    u'\x00'     #  0x00 -> CONTROL CHARACTER
+    u'\x01'     #  0x01 -> CONTROL CHARACTER
+    u'\x02'     #  0x02 -> CONTROL CHARACTER
+    u'\x03'     #  0x03 -> CONTROL CHARACTER
+    u'\x04'     #  0x04 -> CONTROL CHARACTER
+    u'\x05'     #  0x05 -> CONTROL CHARACTER
+    u'\x06'     #  0x06 -> CONTROL CHARACTER
+    u'\x07'     #  0x07 -> CONTROL CHARACTER
+    u'\x08'     #  0x08 -> CONTROL CHARACTER
+    u'\t'       #  0x09 -> CONTROL CHARACTER
+    u'\n'       #  0x0A -> CONTROL CHARACTER
+    u'\x0b'     #  0x0B -> CONTROL CHARACTER
+    u'\x0c'     #  0x0C -> CONTROL CHARACTER
+    u'\r'       #  0x0D -> CONTROL CHARACTER
+    u'\x0e'     #  0x0E -> CONTROL CHARACTER
+    u'\x0f'     #  0x0F -> CONTROL CHARACTER
+    u'\x10'     #  0x10 -> CONTROL CHARACTER
+    u'\x11'     #  0x11 -> CONTROL CHARACTER
+    u'\x12'     #  0x12 -> CONTROL CHARACTER
+    u'\x13'     #  0x13 -> CONTROL CHARACTER
+    u'\x14'     #  0x14 -> CONTROL CHARACTER
+    u'\x15'     #  0x15 -> CONTROL CHARACTER
+    u'\x16'     #  0x16 -> CONTROL CHARACTER
+    u'\x17'     #  0x17 -> CONTROL CHARACTER
+    u'\x18'     #  0x18 -> CONTROL CHARACTER
+    u'\x19'     #  0x19 -> CONTROL CHARACTER
+    u'\x1a'     #  0x1A -> CONTROL CHARACTER
+    u'\x1b'     #  0x1B -> CONTROL CHARACTER
+    u'\x1c'     #  0x1C -> CONTROL CHARACTER
+    u'\x1d'     #  0x1D -> CONTROL CHARACTER
+    u'\x1e'     #  0x1E -> CONTROL CHARACTER
+    u'\x1f'     #  0x1F -> CONTROL CHARACTER
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> CONTROL CHARACTER
+    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
+    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
+    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
+    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
+    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
+    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
+    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
+    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
+    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
+    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
+    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
+    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
+    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
+    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
+    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
+    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
+    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
+    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
+    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
+    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
+    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
+    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
+    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
+    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
+    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
+    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
+    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
+    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
+    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
+    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
+    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
+    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
+    u'\u2020'   #  0xA0 -> DAGGER
+    u'\xb0'     #  0xA1 -> DEGREE SIGN
+    u'\xa2'     #  0xA2 -> CENT SIGN
+    u'\xa3'     #  0xA3 -> POUND SIGN
+    u'\xa7'     #  0xA4 -> SECTION SIGN
+    u'\u2022'   #  0xA5 -> BULLET
+    u'\xb6'     #  0xA6 -> PILCROW SIGN
+    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
+    u'\xae'     #  0xA8 -> REGISTERED SIGN
+    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
+    u'\u2122'   #  0xAA -> TRADE MARK SIGN
+    u'\xb4'     #  0xAB -> ACUTE ACCENT
+    u'\xa8'     #  0xAC -> DIAERESIS
+    u'\u2260'   #  0xAD -> NOT EQUAL TO
+    u'\xc6'     #  0xAE -> LATIN CAPITAL LETTER AE
+    u'\xd8'     #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
+    u'\u221e'   #  0xB0 -> INFINITY
+    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
+    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
+    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
+    u'\xa5'     #  0xB4 -> YEN SIGN
+    u'\xb5'     #  0xB5 -> MICRO SIGN
+    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
+    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
+    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
+    u'\u03c0'   #  0xB9 -> GREEK SMALL LETTER PI
+    u'\u222b'   #  0xBA -> INTEGRAL
+    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
+    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
+    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
+    u'\xe6'     #  0xBE -> LATIN SMALL LETTER AE
+    u'\xf8'     #  0xBF -> LATIN SMALL LETTER O WITH STROKE
+    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
+    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
+    u'\xac'     #  0xC2 -> NOT SIGN
+    u'\u221a'   #  0xC3 -> SQUARE ROOT
+    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
+    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
+    u'\u2206'   #  0xC6 -> INCREMENT
+    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
+    u'\xa0'     #  0xCA -> NO-BREAK SPACE
+    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
+    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
+    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
+    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
+    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
+    u'\u2013'   #  0xD0 -> EN DASH
+    u'\u2014'   #  0xD1 -> EM DASH
+    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
+    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
+    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
+    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
+    u'\xf7'     #  0xD6 -> DIVISION SIGN
+    u'\u25ca'   #  0xD7 -> LOZENGE
+    u'\xff'     #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
+    u'\u0178'   #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
+    u'\u011e'   #  0xDA -> LATIN CAPITAL LETTER G WITH BREVE
+    u'\u011f'   #  0xDB -> LATIN SMALL LETTER G WITH BREVE
+    u'\u0130'   #  0xDC -> LATIN CAPITAL LETTER I WITH DOT ABOVE
+    u'\u0131'   #  0xDD -> LATIN SMALL LETTER DOTLESS I
+    u'\u015e'   #  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
+    u'\u015f'   #  0xDF -> LATIN SMALL LETTER S WITH CEDILLA
+    u'\u2021'   #  0xE0 -> DOUBLE DAGGER
+    u'\xb7'     #  0xE1 -> MIDDLE DOT
+    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
+    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
+    u'\u2030'   #  0xE4 -> PER MILLE SIGN
+    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    u'\xca'     #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
+    u'\xcb'     #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
+    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
+    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
+    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
+    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
+    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
+    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    u'\uf8ff'   #  0xF0 -> Apple logo
+    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
+    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
+    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
+    u'\uf8a0'   #  0xF5 -> undefined1
+    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
+    u'\u02dc'   #  0xF7 -> SMALL TILDE
+    u'\xaf'     #  0xF8 -> MACRON
+    u'\u02d8'   #  0xF9 -> BREVE
+    u'\u02d9'   #  0xFA -> DOT ABOVE
+    u'\u02da'   #  0xFB -> RING ABOVE
+    u'\xb8'     #  0xFC -> CEDILLA
+    u'\u02dd'   #  0xFD -> DOUBLE ACUTE ACCENT
+    u'\u02db'   #  0xFE -> OGONEK
+    u'\u02c7'   #  0xFF -> CARON
 )
 
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  CONTROL CHARACTER
-    0x0001: 0x01,	#  CONTROL CHARACTER
-    0x0002: 0x02,	#  CONTROL CHARACTER
-    0x0003: 0x03,	#  CONTROL CHARACTER
-    0x0004: 0x04,	#  CONTROL CHARACTER
-    0x0005: 0x05,	#  CONTROL CHARACTER
-    0x0006: 0x06,	#  CONTROL CHARACTER
-    0x0007: 0x07,	#  CONTROL CHARACTER
-    0x0008: 0x08,	#  CONTROL CHARACTER
-    0x0009: 0x09,	#  CONTROL CHARACTER
-    0x000A: 0x0A,	#  CONTROL CHARACTER
-    0x000B: 0x0B,	#  CONTROL CHARACTER
-    0x000C: 0x0C,	#  CONTROL CHARACTER
-    0x000D: 0x0D,	#  CONTROL CHARACTER
-    0x000E: 0x0E,	#  CONTROL CHARACTER
-    0x000F: 0x0F,	#  CONTROL CHARACTER
-    0x0010: 0x10,	#  CONTROL CHARACTER
-    0x0011: 0x11,	#  CONTROL CHARACTER
-    0x0012: 0x12,	#  CONTROL CHARACTER
-    0x0013: 0x13,	#  CONTROL CHARACTER
-    0x0014: 0x14,	#  CONTROL CHARACTER
-    0x0015: 0x15,	#  CONTROL CHARACTER
-    0x0016: 0x16,	#  CONTROL CHARACTER
-    0x0017: 0x17,	#  CONTROL CHARACTER
-    0x0018: 0x18,	#  CONTROL CHARACTER
-    0x0019: 0x19,	#  CONTROL CHARACTER
-    0x001A: 0x1A,	#  CONTROL CHARACTER
-    0x001B: 0x1B,	#  CONTROL CHARACTER
-    0x001C: 0x1C,	#  CONTROL CHARACTER
-    0x001D: 0x1D,	#  CONTROL CHARACTER
-    0x001E: 0x1E,	#  CONTROL CHARACTER
-    0x001F: 0x1F,	#  CONTROL CHARACTER
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  CONTROL CHARACTER
-    0x00A0: 0xCA,	#  NO-BREAK SPACE
-    0x00A1: 0xC1,	#  INVERTED EXCLAMATION MARK
-    0x00A2: 0xA2,	#  CENT SIGN
-    0x00A3: 0xA3,	#  POUND SIGN
-    0x00A5: 0xB4,	#  YEN SIGN
-    0x00A7: 0xA4,	#  SECTION SIGN
-    0x00A8: 0xAC,	#  DIAERESIS
-    0x00A9: 0xA9,	#  COPYRIGHT SIGN
-    0x00AA: 0xBB,	#  FEMININE ORDINAL INDICATOR
-    0x00AB: 0xC7,	#  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00AC: 0xC2,	#  NOT SIGN
-    0x00AE: 0xA8,	#  REGISTERED SIGN
-    0x00AF: 0xF8,	#  MACRON
-    0x00B0: 0xA1,	#  DEGREE SIGN
-    0x00B1: 0xB1,	#  PLUS-MINUS SIGN
-    0x00B4: 0xAB,	#  ACUTE ACCENT
-    0x00B5: 0xB5,	#  MICRO SIGN
-    0x00B6: 0xA6,	#  PILCROW SIGN
-    0x00B7: 0xE1,	#  MIDDLE DOT
-    0x00B8: 0xFC,	#  CEDILLA
-    0x00BA: 0xBC,	#  MASCULINE ORDINAL INDICATOR
-    0x00BB: 0xC8,	#  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00BF: 0xC0,	#  INVERTED QUESTION MARK
-    0x00C0: 0xCB,	#  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00C1: 0xE7,	#  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00C2: 0xE5,	#  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00C3: 0xCC,	#  LATIN CAPITAL LETTER A WITH TILDE
-    0x00C4: 0x80,	#  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00C5: 0x81,	#  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00C6: 0xAE,	#  LATIN CAPITAL LETTER AE
-    0x00C7: 0x82,	#  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00C8: 0xE9,	#  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00C9: 0x83,	#  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00CA: 0xE6,	#  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00CB: 0xE8,	#  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00CC: 0xED,	#  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00CD: 0xEA,	#  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00CE: 0xEB,	#  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00CF: 0xEC,	#  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00D1: 0x84,	#  LATIN CAPITAL LETTER N WITH TILDE
-    0x00D2: 0xF1,	#  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00D3: 0xEE,	#  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00D4: 0xEF,	#  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00D5: 0xCD,	#  LATIN CAPITAL LETTER O WITH TILDE
-    0x00D6: 0x85,	#  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00D8: 0xAF,	#  LATIN CAPITAL LETTER O WITH STROKE
-    0x00D9: 0xF4,	#  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00DA: 0xF2,	#  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00DB: 0xF3,	#  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00DC: 0x86,	#  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00DF: 0xA7,	#  LATIN SMALL LETTER SHARP S
-    0x00E0: 0x88,	#  LATIN SMALL LETTER A WITH GRAVE
-    0x00E1: 0x87,	#  LATIN SMALL LETTER A WITH ACUTE
-    0x00E2: 0x89,	#  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00E3: 0x8B,	#  LATIN SMALL LETTER A WITH TILDE
-    0x00E4: 0x8A,	#  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00E5: 0x8C,	#  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00E6: 0xBE,	#  LATIN SMALL LETTER AE
-    0x00E7: 0x8D,	#  LATIN SMALL LETTER C WITH CEDILLA
-    0x00E8: 0x8F,	#  LATIN SMALL LETTER E WITH GRAVE
-    0x00E9: 0x8E,	#  LATIN SMALL LETTER E WITH ACUTE
-    0x00EA: 0x90,	#  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00EB: 0x91,	#  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00EC: 0x93,	#  LATIN SMALL LETTER I WITH GRAVE
-    0x00ED: 0x92,	#  LATIN SMALL LETTER I WITH ACUTE
-    0x00EE: 0x94,	#  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00EF: 0x95,	#  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00F1: 0x96,	#  LATIN SMALL LETTER N WITH TILDE
-    0x00F2: 0x98,	#  LATIN SMALL LETTER O WITH GRAVE
-    0x00F3: 0x97,	#  LATIN SMALL LETTER O WITH ACUTE
-    0x00F4: 0x99,	#  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00F5: 0x9B,	#  LATIN SMALL LETTER O WITH TILDE
-    0x00F6: 0x9A,	#  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00F7: 0xD6,	#  DIVISION SIGN
-    0x00F8: 0xBF,	#  LATIN SMALL LETTER O WITH STROKE
-    0x00F9: 0x9D,	#  LATIN SMALL LETTER U WITH GRAVE
-    0x00FA: 0x9C,	#  LATIN SMALL LETTER U WITH ACUTE
-    0x00FB: 0x9E,	#  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00FC: 0x9F,	#  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00FF: 0xD8,	#  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011E: 0xDA,	#  LATIN CAPITAL LETTER G WITH BREVE
-    0x011F: 0xDB,	#  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0xDC,	#  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0xDD,	#  LATIN SMALL LETTER DOTLESS I
-    0x0152: 0xCE,	#  LATIN CAPITAL LIGATURE OE
-    0x0153: 0xCF,	#  LATIN SMALL LIGATURE OE
-    0x015E: 0xDE,	#  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015F: 0xDF,	#  LATIN SMALL LETTER S WITH CEDILLA
-    0x0178: 0xD9,	#  LATIN CAPITAL LETTER Y WITH DIAERESIS
-    0x0192: 0xC4,	#  LATIN SMALL LETTER F WITH HOOK
-    0x02C6: 0xF6,	#  MODIFIER LETTER CIRCUMFLEX ACCENT
-    0x02C7: 0xFF,	#  CARON
-    0x02D8: 0xF9,	#  BREVE
-    0x02D9: 0xFA,	#  DOT ABOVE
-    0x02DA: 0xFB,	#  RING ABOVE
-    0x02DB: 0xFE,	#  OGONEK
-    0x02DC: 0xF7,	#  SMALL TILDE
-    0x02DD: 0xFD,	#  DOUBLE ACUTE ACCENT
-    0x03A9: 0xBD,	#  GREEK CAPITAL LETTER OMEGA
-    0x03C0: 0xB9,	#  GREEK SMALL LETTER PI
-    0x2013: 0xD0,	#  EN DASH
-    0x2014: 0xD1,	#  EM DASH
-    0x2018: 0xD4,	#  LEFT SINGLE QUOTATION MARK
-    0x2019: 0xD5,	#  RIGHT SINGLE QUOTATION MARK
-    0x201A: 0xE2,	#  SINGLE LOW-9 QUOTATION MARK
-    0x201C: 0xD2,	#  LEFT DOUBLE QUOTATION MARK
-    0x201D: 0xD3,	#  RIGHT DOUBLE QUOTATION MARK
-    0x201E: 0xE3,	#  DOUBLE LOW-9 QUOTATION MARK
-    0x2020: 0xA0,	#  DAGGER
-    0x2021: 0xE0,	#  DOUBLE DAGGER
-    0x2022: 0xA5,	#  BULLET
-    0x2026: 0xC9,	#  HORIZONTAL ELLIPSIS
-    0x2030: 0xE4,	#  PER MILLE SIGN
-    0x2122: 0xAA,	#  TRADE MARK SIGN
-    0x2202: 0xB6,	#  PARTIAL DIFFERENTIAL
-    0x2206: 0xC6,	#  INCREMENT
-    0x220F: 0xB8,	#  N-ARY PRODUCT
-    0x2211: 0xB7,	#  N-ARY SUMMATION
-    0x221A: 0xC3,	#  SQUARE ROOT
-    0x221E: 0xB0,	#  INFINITY
-    0x222B: 0xBA,	#  INTEGRAL
-    0x2248: 0xC5,	#  ALMOST EQUAL TO
-    0x2260: 0xAD,	#  NOT EQUAL TO
-    0x2264: 0xB2,	#  LESS-THAN OR EQUAL TO
-    0x2265: 0xB3,	#  GREATER-THAN OR EQUAL TO
-    0x25CA: 0xD7,	#  LOZENGE
-    0xF8A0: 0xF5,	#  undefined1
-    0xF8FF: 0xF0,	#  Apple logo
+    0x0000: 0x00,       #  CONTROL CHARACTER
+    0x0001: 0x01,       #  CONTROL CHARACTER
+    0x0002: 0x02,       #  CONTROL CHARACTER
+    0x0003: 0x03,       #  CONTROL CHARACTER
+    0x0004: 0x04,       #  CONTROL CHARACTER
+    0x0005: 0x05,       #  CONTROL CHARACTER
+    0x0006: 0x06,       #  CONTROL CHARACTER
+    0x0007: 0x07,       #  CONTROL CHARACTER
+    0x0008: 0x08,       #  CONTROL CHARACTER
+    0x0009: 0x09,       #  CONTROL CHARACTER
+    0x000A: 0x0A,       #  CONTROL CHARACTER
+    0x000B: 0x0B,       #  CONTROL CHARACTER
+    0x000C: 0x0C,       #  CONTROL CHARACTER
+    0x000D: 0x0D,       #  CONTROL CHARACTER
+    0x000E: 0x0E,       #  CONTROL CHARACTER
+    0x000F: 0x0F,       #  CONTROL CHARACTER
+    0x0010: 0x10,       #  CONTROL CHARACTER
+    0x0011: 0x11,       #  CONTROL CHARACTER
+    0x0012: 0x12,       #  CONTROL CHARACTER
+    0x0013: 0x13,       #  CONTROL CHARACTER
+    0x0014: 0x14,       #  CONTROL CHARACTER
+    0x0015: 0x15,       #  CONTROL CHARACTER
+    0x0016: 0x16,       #  CONTROL CHARACTER
+    0x0017: 0x17,       #  CONTROL CHARACTER
+    0x0018: 0x18,       #  CONTROL CHARACTER
+    0x0019: 0x19,       #  CONTROL CHARACTER
+    0x001A: 0x1A,       #  CONTROL CHARACTER
+    0x001B: 0x1B,       #  CONTROL CHARACTER
+    0x001C: 0x1C,       #  CONTROL CHARACTER
+    0x001D: 0x1D,       #  CONTROL CHARACTER
+    0x001E: 0x1E,       #  CONTROL CHARACTER
+    0x001F: 0x1F,       #  CONTROL CHARACTER
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  CONTROL CHARACTER
+    0x00A0: 0xCA,       #  NO-BREAK SPACE
+    0x00A1: 0xC1,       #  INVERTED EXCLAMATION MARK
+    0x00A2: 0xA2,       #  CENT SIGN
+    0x00A3: 0xA3,       #  POUND SIGN
+    0x00A5: 0xB4,       #  YEN SIGN
+    0x00A7: 0xA4,       #  SECTION SIGN
+    0x00A8: 0xAC,       #  DIAERESIS
+    0x00A9: 0xA9,       #  COPYRIGHT SIGN
+    0x00AA: 0xBB,       #  FEMININE ORDINAL INDICATOR
+    0x00AB: 0xC7,       #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00AC: 0xC2,       #  NOT SIGN
+    0x00AE: 0xA8,       #  REGISTERED SIGN
+    0x00AF: 0xF8,       #  MACRON
+    0x00B0: 0xA1,       #  DEGREE SIGN
+    0x00B1: 0xB1,       #  PLUS-MINUS SIGN
+    0x00B4: 0xAB,       #  ACUTE ACCENT
+    0x00B5: 0xB5,       #  MICRO SIGN
+    0x00B6: 0xA6,       #  PILCROW SIGN
+    0x00B7: 0xE1,       #  MIDDLE DOT
+    0x00B8: 0xFC,       #  CEDILLA
+    0x00BA: 0xBC,       #  MASCULINE ORDINAL INDICATOR
+    0x00BB: 0xC8,       #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+    0x00BF: 0xC0,       #  INVERTED QUESTION MARK
+    0x00C0: 0xCB,       #  LATIN CAPITAL LETTER A WITH GRAVE
+    0x00C1: 0xE7,       #  LATIN CAPITAL LETTER A WITH ACUTE
+    0x00C2: 0xE5,       #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+    0x00C3: 0xCC,       #  LATIN CAPITAL LETTER A WITH TILDE
+    0x00C4: 0x80,       #  LATIN CAPITAL LETTER A WITH DIAERESIS
+    0x00C5: 0x81,       #  LATIN CAPITAL LETTER A WITH RING ABOVE
+    0x00C6: 0xAE,       #  LATIN CAPITAL LETTER AE
+    0x00C7: 0x82,       #  LATIN CAPITAL LETTER C WITH CEDILLA
+    0x00C8: 0xE9,       #  LATIN CAPITAL LETTER E WITH GRAVE
+    0x00C9: 0x83,       #  LATIN CAPITAL LETTER E WITH ACUTE
+    0x00CA: 0xE6,       #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+    0x00CB: 0xE8,       #  LATIN CAPITAL LETTER E WITH DIAERESIS
+    0x00CC: 0xED,       #  LATIN CAPITAL LETTER I WITH GRAVE
+    0x00CD: 0xEA,       #  LATIN CAPITAL LETTER I WITH ACUTE
+    0x00CE: 0xEB,       #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+    0x00CF: 0xEC,       #  LATIN CAPITAL LETTER I WITH DIAERESIS
+    0x00D1: 0x84,       #  LATIN CAPITAL LETTER N WITH TILDE
+    0x00D2: 0xF1,       #  LATIN CAPITAL LETTER O WITH GRAVE
+    0x00D3: 0xEE,       #  LATIN CAPITAL LETTER O WITH ACUTE
+    0x00D4: 0xEF,       #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+    0x00D5: 0xCD,       #  LATIN CAPITAL LETTER O WITH TILDE
+    0x00D6: 0x85,       #  LATIN CAPITAL LETTER O WITH DIAERESIS
+    0x00D8: 0xAF,       #  LATIN CAPITAL LETTER O WITH STROKE
+    0x00D9: 0xF4,       #  LATIN CAPITAL LETTER U WITH GRAVE
+    0x00DA: 0xF2,       #  LATIN CAPITAL LETTER U WITH ACUTE
+    0x00DB: 0xF3,       #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+    0x00DC: 0x86,       #  LATIN CAPITAL LETTER U WITH DIAERESIS
+    0x00DF: 0xA7,       #  LATIN SMALL LETTER SHARP S
+    0x00E0: 0x88,       #  LATIN SMALL LETTER A WITH GRAVE
+    0x00E1: 0x87,       #  LATIN SMALL LETTER A WITH ACUTE
+    0x00E2: 0x89,       #  LATIN SMALL LETTER A WITH CIRCUMFLEX
+    0x00E3: 0x8B,       #  LATIN SMALL LETTER A WITH TILDE
+    0x00E4: 0x8A,       #  LATIN SMALL LETTER A WITH DIAERESIS
+    0x00E5: 0x8C,       #  LATIN SMALL LETTER A WITH RING ABOVE
+    0x00E6: 0xBE,       #  LATIN SMALL LETTER AE
+    0x00E7: 0x8D,       #  LATIN SMALL LETTER C WITH CEDILLA
+    0x00E8: 0x8F,       #  LATIN SMALL LETTER E WITH GRAVE
+    0x00E9: 0x8E,       #  LATIN SMALL LETTER E WITH ACUTE
+    0x00EA: 0x90,       #  LATIN SMALL LETTER E WITH CIRCUMFLEX
+    0x00EB: 0x91,       #  LATIN SMALL LETTER E WITH DIAERESIS
+    0x00EC: 0x93,       #  LATIN SMALL LETTER I WITH GRAVE
+    0x00ED: 0x92,       #  LATIN SMALL LETTER I WITH ACUTE
+    0x00EE: 0x94,       #  LATIN SMALL LETTER I WITH CIRCUMFLEX
+    0x00EF: 0x95,       #  LATIN SMALL LETTER I WITH DIAERESIS
+    0x00F1: 0x96,       #  LATIN SMALL LETTER N WITH TILDE
+    0x00F2: 0x98,       #  LATIN SMALL LETTER O WITH GRAVE
+    0x00F3: 0x97,       #  LATIN SMALL LETTER O WITH ACUTE
+    0x00F4: 0x99,       #  LATIN SMALL LETTER O WITH CIRCUMFLEX
+    0x00F5: 0x9B,       #  LATIN SMALL LETTER O WITH TILDE
+    0x00F6: 0x9A,       #  LATIN SMALL LETTER O WITH DIAERESIS
+    0x00F7: 0xD6,       #  DIVISION SIGN
+    0x00F8: 0xBF,       #  LATIN SMALL LETTER O WITH STROKE
+    0x00F9: 0x9D,       #  LATIN SMALL LETTER U WITH GRAVE
+    0x00FA: 0x9C,       #  LATIN SMALL LETTER U WITH ACUTE
+    0x00FB: 0x9E,       #  LATIN SMALL LETTER U WITH CIRCUMFLEX
+    0x00FC: 0x9F,       #  LATIN SMALL LETTER U WITH DIAERESIS
+    0x00FF: 0xD8,       #  LATIN SMALL LETTER Y WITH DIAERESIS
+    0x011E: 0xDA,       #  LATIN CAPITAL LETTER G WITH BREVE
+    0x011F: 0xDB,       #  LATIN SMALL LETTER G WITH BREVE
+    0x0130: 0xDC,       #  LATIN CAPITAL LETTER I WITH DOT ABOVE
+    0x0131: 0xDD,       #  LATIN SMALL LETTER DOTLESS I
+    0x0152: 0xCE,       #  LATIN CAPITAL LIGATURE OE
+    0x0153: 0xCF,       #  LATIN SMALL LIGATURE OE
+    0x015E: 0xDE,       #  LATIN CAPITAL LETTER S WITH CEDILLA
+    0x015F: 0xDF,       #  LATIN SMALL LETTER S WITH CEDILLA
+    0x0178: 0xD9,       #  LATIN CAPITAL LETTER Y WITH DIAERESIS
+    0x0192: 0xC4,       #  LATIN SMALL LETTER F WITH HOOK
+    0x02C6: 0xF6,       #  MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x02C7: 0xFF,       #  CARON
+    0x02D8: 0xF9,       #  BREVE
+    0x02D9: 0xFA,       #  DOT ABOVE
+    0x02DA: 0xFB,       #  RING ABOVE
+    0x02DB: 0xFE,       #  OGONEK
+    0x02DC: 0xF7,       #  SMALL TILDE
+    0x02DD: 0xFD,       #  DOUBLE ACUTE ACCENT
+    0x03A9: 0xBD,       #  GREEK CAPITAL LETTER OMEGA
+    0x03C0: 0xB9,       #  GREEK SMALL LETTER PI
+    0x2013: 0xD0,       #  EN DASH
+    0x2014: 0xD1,       #  EM DASH
+    0x2018: 0xD4,       #  LEFT SINGLE QUOTATION MARK
+    0x2019: 0xD5,       #  RIGHT SINGLE QUOTATION MARK
+    0x201A: 0xE2,       #  SINGLE LOW-9 QUOTATION MARK
+    0x201C: 0xD2,       #  LEFT DOUBLE QUOTATION MARK
+    0x201D: 0xD3,       #  RIGHT DOUBLE QUOTATION MARK
+    0x201E: 0xE3,       #  DOUBLE LOW-9 QUOTATION MARK
+    0x2020: 0xA0,       #  DAGGER
+    0x2021: 0xE0,       #  DOUBLE DAGGER
+    0x2022: 0xA5,       #  BULLET
+    0x2026: 0xC9,       #  HORIZONTAL ELLIPSIS
+    0x2030: 0xE4,       #  PER MILLE SIGN
+    0x2122: 0xAA,       #  TRADE MARK SIGN
+    0x2202: 0xB6,       #  PARTIAL DIFFERENTIAL
+    0x2206: 0xC6,       #  INCREMENT
+    0x220F: 0xB8,       #  N-ARY PRODUCT
+    0x2211: 0xB7,       #  N-ARY SUMMATION
+    0x221A: 0xC3,       #  SQUARE ROOT
+    0x221E: 0xB0,       #  INFINITY
+    0x222B: 0xBA,       #  INTEGRAL
+    0x2248: 0xC5,       #  ALMOST EQUAL TO
+    0x2260: 0xAD,       #  NOT EQUAL TO
+    0x2264: 0xB2,       #  LESS-THAN OR EQUAL TO
+    0x2265: 0xB3,       #  GREATER-THAN OR EQUAL TO
+    0x25CA: 0xD7,       #  LOZENGE
+    0xF8A0: 0xF5,       #  undefined1
+    0xF8FF: 0xF0,       #  Apple logo
 }
-

Modified: python/trunk/Lib/encodings/tis_620.py
==============================================================================
--- python/trunk/Lib/encodings/tis_620.py	(original)
+++ python/trunk/Lib/encodings/tis_620.py	Mon Dec 26 00:18:31 2005
@@ -15,7 +15,7 @@
     def decode(self,input,errors='strict'):
 
         return codecs.charmap_decode(input,errors,decoding_table)
-    
+
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -32,258 +32,258 @@
 ### Decoding Table
 
 decoding_table = (
-    u'\x00'	#  0x00 -> NULL
-    u'\x01'	#  0x01 -> START OF HEADING
-    u'\x02'	#  0x02 -> START OF TEXT
-    u'\x03'	#  0x03 -> END OF TEXT
-    u'\x04'	#  0x04 -> END OF TRANSMISSION
-    u'\x05'	#  0x05 -> ENQUIRY
-    u'\x06'	#  0x06 -> ACKNOWLEDGE
-    u'\x07'	#  0x07 -> BELL
-    u'\x08'	#  0x08 -> BACKSPACE
-    u'\t'	#  0x09 -> HORIZONTAL TABULATION
-    u'\n'	#  0x0A -> LINE FEED
-    u'\x0b'	#  0x0B -> VERTICAL TABULATION
-    u'\x0c'	#  0x0C -> FORM FEED
-    u'\r'	#  0x0D -> CARRIAGE RETURN
-    u'\x0e'	#  0x0E -> SHIFT OUT
-    u'\x0f'	#  0x0F -> SHIFT IN
-    u'\x10'	#  0x10 -> DATA LINK ESCAPE
-    u'\x11'	#  0x11 -> DEVICE CONTROL ONE
-    u'\x12'	#  0x12 -> DEVICE CONTROL TWO
-    u'\x13'	#  0x13 -> DEVICE CONTROL THREE
-    u'\x14'	#  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'	#  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'	#  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'	#  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'	#  0x18 -> CANCEL
-    u'\x19'	#  0x19 -> END OF MEDIUM
-    u'\x1a'	#  0x1A -> SUBSTITUTE
-    u'\x1b'	#  0x1B -> ESCAPE
-    u'\x1c'	#  0x1C -> FILE SEPARATOR
-    u'\x1d'	#  0x1D -> GROUP SEPARATOR
-    u'\x1e'	#  0x1E -> RECORD SEPARATOR
-    u'\x1f'	#  0x1F -> UNIT SEPARATOR
-    u' '	#  0x20 -> SPACE
-    u'!'	#  0x21 -> EXCLAMATION MARK
-    u'"'	#  0x22 -> QUOTATION MARK
-    u'#'	#  0x23 -> NUMBER SIGN
-    u'$'	#  0x24 -> DOLLAR SIGN
-    u'%'	#  0x25 -> PERCENT SIGN
-    u'&'	#  0x26 -> AMPERSAND
-    u"'"	#  0x27 -> APOSTROPHE
-    u'('	#  0x28 -> LEFT PARENTHESIS
-    u')'	#  0x29 -> RIGHT PARENTHESIS
-    u'*'	#  0x2A -> ASTERISK
-    u'+'	#  0x2B -> PLUS SIGN
-    u','	#  0x2C -> COMMA
-    u'-'	#  0x2D -> HYPHEN-MINUS
-    u'.'	#  0x2E -> FULL STOP
-    u'/'	#  0x2F -> SOLIDUS
-    u'0'	#  0x30 -> DIGIT ZERO
-    u'1'	#  0x31 -> DIGIT ONE
-    u'2'	#  0x32 -> DIGIT TWO
-    u'3'	#  0x33 -> DIGIT THREE
-    u'4'	#  0x34 -> DIGIT FOUR
-    u'5'	#  0x35 -> DIGIT FIVE
-    u'6'	#  0x36 -> DIGIT SIX
-    u'7'	#  0x37 -> DIGIT SEVEN
-    u'8'	#  0x38 -> DIGIT EIGHT
-    u'9'	#  0x39 -> DIGIT NINE
-    u':'	#  0x3A -> COLON
-    u';'	#  0x3B -> SEMICOLON
-    u'<'	#  0x3C -> LESS-THAN SIGN
-    u'='	#  0x3D -> EQUALS SIGN
-    u'>'	#  0x3E -> GREATER-THAN SIGN
-    u'?'	#  0x3F -> QUESTION MARK
-    u'@'	#  0x40 -> COMMERCIAL AT
-    u'A'	#  0x41 -> LATIN CAPITAL LETTER A
-    u'B'	#  0x42 -> LATIN CAPITAL LETTER B
-    u'C'	#  0x43 -> LATIN CAPITAL LETTER C
-    u'D'	#  0x44 -> LATIN CAPITAL LETTER D
-    u'E'	#  0x45 -> LATIN CAPITAL LETTER E
-    u'F'	#  0x46 -> LATIN CAPITAL LETTER F
-    u'G'	#  0x47 -> LATIN CAPITAL LETTER G
-    u'H'	#  0x48 -> LATIN CAPITAL LETTER H
-    u'I'	#  0x49 -> LATIN CAPITAL LETTER I
-    u'J'	#  0x4A -> LATIN CAPITAL LETTER J
-    u'K'	#  0x4B -> LATIN CAPITAL LETTER K
-    u'L'	#  0x4C -> LATIN CAPITAL LETTER L
-    u'M'	#  0x4D -> LATIN CAPITAL LETTER M
-    u'N'	#  0x4E -> LATIN CAPITAL LETTER N
-    u'O'	#  0x4F -> LATIN CAPITAL LETTER O
-    u'P'	#  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'	#  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'	#  0x52 -> LATIN CAPITAL LETTER R
-    u'S'	#  0x53 -> LATIN CAPITAL LETTER S
-    u'T'	#  0x54 -> LATIN CAPITAL LETTER T
-    u'U'	#  0x55 -> LATIN CAPITAL LETTER U
-    u'V'	#  0x56 -> LATIN CAPITAL LETTER V
-    u'W'	#  0x57 -> LATIN CAPITAL LETTER W
-    u'X'	#  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'	#  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'	#  0x5A -> LATIN CAPITAL LETTER Z
-    u'['	#  0x5B -> LEFT SQUARE BRACKET
-    u'\\'	#  0x5C -> REVERSE SOLIDUS
-    u']'	#  0x5D -> RIGHT SQUARE BRACKET
-    u'^'	#  0x5E -> CIRCUMFLEX ACCENT
-    u'_'	#  0x5F -> LOW LINE
-    u'`'	#  0x60 -> GRAVE ACCENT
-    u'a'	#  0x61 -> LATIN SMALL LETTER A
-    u'b'	#  0x62 -> LATIN SMALL LETTER B
-    u'c'	#  0x63 -> LATIN SMALL LETTER C
-    u'd'	#  0x64 -> LATIN SMALL LETTER D
-    u'e'	#  0x65 -> LATIN SMALL LETTER E
-    u'f'	#  0x66 -> LATIN SMALL LETTER F
-    u'g'	#  0x67 -> LATIN SMALL LETTER G
-    u'h'	#  0x68 -> LATIN SMALL LETTER H
-    u'i'	#  0x69 -> LATIN SMALL LETTER I
-    u'j'	#  0x6A -> LATIN SMALL LETTER J
-    u'k'	#  0x6B -> LATIN SMALL LETTER K
-    u'l'	#  0x6C -> LATIN SMALL LETTER L
-    u'm'	#  0x6D -> LATIN SMALL LETTER M
-    u'n'	#  0x6E -> LATIN SMALL LETTER N
-    u'o'	#  0x6F -> LATIN SMALL LETTER O
-    u'p'	#  0x70 -> LATIN SMALL LETTER P
-    u'q'	#  0x71 -> LATIN SMALL LETTER Q
-    u'r'	#  0x72 -> LATIN SMALL LETTER R
-    u's'	#  0x73 -> LATIN SMALL LETTER S
-    u't'	#  0x74 -> LATIN SMALL LETTER T
-    u'u'	#  0x75 -> LATIN SMALL LETTER U
-    u'v'	#  0x76 -> LATIN SMALL LETTER V
-    u'w'	#  0x77 -> LATIN SMALL LETTER W
-    u'x'	#  0x78 -> LATIN SMALL LETTER X
-    u'y'	#  0x79 -> LATIN SMALL LETTER Y
-    u'z'	#  0x7A -> LATIN SMALL LETTER Z
-    u'{'	#  0x7B -> LEFT CURLY BRACKET
-    u'|'	#  0x7C -> VERTICAL LINE
-    u'}'	#  0x7D -> RIGHT CURLY BRACKET
-    u'~'	#  0x7E -> TILDE
-    u'\x7f'	#  0x7F -> DELETE
-    u'\x80'	#  0x80 -> <control>
-    u'\x81'	#  0x81 -> <control>
-    u'\x82'	#  0x82 -> <control>
-    u'\x83'	#  0x83 -> <control>
-    u'\x84'	#  0x84 -> <control>
-    u'\x85'	#  0x85 -> <control>
-    u'\x86'	#  0x86 -> <control>
-    u'\x87'	#  0x87 -> <control>
-    u'\x88'	#  0x88 -> <control>
-    u'\x89'	#  0x89 -> <control>
-    u'\x8a'	#  0x8A -> <control>
-    u'\x8b'	#  0x8B -> <control>
-    u'\x8c'	#  0x8C -> <control>
-    u'\x8d'	#  0x8D -> <control>
-    u'\x8e'	#  0x8E -> <control>
-    u'\x8f'	#  0x8F -> <control>
-    u'\x90'	#  0x90 -> <control>
-    u'\x91'	#  0x91 -> <control>
-    u'\x92'	#  0x92 -> <control>
-    u'\x93'	#  0x93 -> <control>
-    u'\x94'	#  0x94 -> <control>
-    u'\x95'	#  0x95 -> <control>
-    u'\x96'	#  0x96 -> <control>
-    u'\x97'	#  0x97 -> <control>
-    u'\x98'	#  0x98 -> <control>
-    u'\x99'	#  0x99 -> <control>
-    u'\x9a'	#  0x9A -> <control>
-    u'\x9b'	#  0x9B -> <control>
-    u'\x9c'	#  0x9C -> <control>
-    u'\x9d'	#  0x9D -> <control>
-    u'\x9e'	#  0x9E -> <control>
-    u'\x9f'	#  0x9F -> <control>
+    u'\x00'     #  0x00 -> NULL
+    u'\x01'     #  0x01 -> START OF HEADING
+    u'\x02'     #  0x02 -> START OF TEXT
+    u'\x03'     #  0x03 -> END OF TEXT
+    u'\x04'     #  0x04 -> END OF TRANSMISSION
+    u'\x05'     #  0x05 -> ENQUIRY
+    u'\x06'     #  0x06 -> ACKNOWLEDGE
+    u'\x07'     #  0x07 -> BELL
+    u'\x08'     #  0x08 -> BACKSPACE
+    u'\t'       #  0x09 -> HORIZONTAL TABULATION
+    u'\n'       #  0x0A -> LINE FEED
+    u'\x0b'     #  0x0B -> VERTICAL TABULATION
+    u'\x0c'     #  0x0C -> FORM FEED
+    u'\r'       #  0x0D -> CARRIAGE RETURN
+    u'\x0e'     #  0x0E -> SHIFT OUT
+    u'\x0f'     #  0x0F -> SHIFT IN
+    u'\x10'     #  0x10 -> DATA LINK ESCAPE
+    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
+    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
+    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
+    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
+    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
+    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
+    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
+    u'\x18'     #  0x18 -> CANCEL
+    u'\x19'     #  0x19 -> END OF MEDIUM
+    u'\x1a'     #  0x1A -> SUBSTITUTE
+    u'\x1b'     #  0x1B -> ESCAPE
+    u'\x1c'     #  0x1C -> FILE SEPARATOR
+    u'\x1d'     #  0x1D -> GROUP SEPARATOR
+    u'\x1e'     #  0x1E -> RECORD SEPARATOR
+    u'\x1f'     #  0x1F -> UNIT SEPARATOR
+    u' '        #  0x20 -> SPACE
+    u'!'        #  0x21 -> EXCLAMATION MARK
+    u'"'        #  0x22 -> QUOTATION MARK
+    u'#'        #  0x23 -> NUMBER SIGN
+    u'$'        #  0x24 -> DOLLAR SIGN
+    u'%'        #  0x25 -> PERCENT SIGN
+    u'&'        #  0x26 -> AMPERSAND
+    u"'"        #  0x27 -> APOSTROPHE
+    u'('        #  0x28 -> LEFT PARENTHESIS
+    u')'        #  0x29 -> RIGHT PARENTHESIS
+    u'*'        #  0x2A -> ASTERISK
+    u'+'        #  0x2B -> PLUS SIGN
+    u','        #  0x2C -> COMMA
+    u'-'        #  0x2D -> HYPHEN-MINUS
+    u'.'        #  0x2E -> FULL STOP
+    u'/'        #  0x2F -> SOLIDUS
+    u'0'        #  0x30 -> DIGIT ZERO
+    u'1'        #  0x31 -> DIGIT ONE
+    u'2'        #  0x32 -> DIGIT TWO
+    u'3'        #  0x33 -> DIGIT THREE
+    u'4'        #  0x34 -> DIGIT FOUR
+    u'5'        #  0x35 -> DIGIT FIVE
+    u'6'        #  0x36 -> DIGIT SIX
+    u'7'        #  0x37 -> DIGIT SEVEN
+    u'8'        #  0x38 -> DIGIT EIGHT
+    u'9'        #  0x39 -> DIGIT NINE
+    u':'        #  0x3A -> COLON
+    u';'        #  0x3B -> SEMICOLON
+    u'<'        #  0x3C -> LESS-THAN SIGN
+    u'='        #  0x3D -> EQUALS SIGN
+    u'>'        #  0x3E -> GREATER-THAN SIGN
+    u'?'        #  0x3F -> QUESTION MARK
+    u'@'        #  0x40 -> COMMERCIAL AT
+    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
+    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
+    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
+    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
+    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
+    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
+    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
+    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
+    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
+    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
+    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
+    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
+    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
+    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
+    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
+    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
+    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
+    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
+    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
+    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
+    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
+    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
+    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
+    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
+    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
+    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
+    u'['        #  0x5B -> LEFT SQUARE BRACKET
+    u'\\'       #  0x5C -> REVERSE SOLIDUS
+    u']'        #  0x5D -> RIGHT SQUARE BRACKET
+    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
+    u'_'        #  0x5F -> LOW LINE
+    u'`'        #  0x60 -> GRAVE ACCENT
+    u'a'        #  0x61 -> LATIN SMALL LETTER A
+    u'b'        #  0x62 -> LATIN SMALL LETTER B
+    u'c'        #  0x63 -> LATIN SMALL LETTER C
+    u'd'        #  0x64 -> LATIN SMALL LETTER D
+    u'e'        #  0x65 -> LATIN SMALL LETTER E
+    u'f'        #  0x66 -> LATIN SMALL LETTER F
+    u'g'        #  0x67 -> LATIN SMALL LETTER G
+    u'h'        #  0x68 -> LATIN SMALL LETTER H
+    u'i'        #  0x69 -> LATIN SMALL LETTER I
+    u'j'        #  0x6A -> LATIN SMALL LETTER J
+    u'k'        #  0x6B -> LATIN SMALL LETTER K
+    u'l'        #  0x6C -> LATIN SMALL LETTER L
+    u'm'        #  0x6D -> LATIN SMALL LETTER M
+    u'n'        #  0x6E -> LATIN SMALL LETTER N
+    u'o'        #  0x6F -> LATIN SMALL LETTER O
+    u'p'        #  0x70 -> LATIN SMALL LETTER P
+    u'q'        #  0x71 -> LATIN SMALL LETTER Q
+    u'r'        #  0x72 -> LATIN SMALL LETTER R
+    u's'        #  0x73 -> LATIN SMALL LETTER S
+    u't'        #  0x74 -> LATIN SMALL LETTER T
+    u'u'        #  0x75 -> LATIN SMALL LETTER U
+    u'v'        #  0x76 -> LATIN SMALL LETTER V
+    u'w'        #  0x77 -> LATIN SMALL LETTER W
+    u'x'        #  0x78 -> LATIN SMALL LETTER X
+    u'y'        #  0x79 -> LATIN SMALL LETTER Y
+    u'z'        #  0x7A -> LATIN SMALL LETTER Z
+    u'{'        #  0x7B -> LEFT CURLY BRACKET
+    u'|'        #  0x7C -> VERTICAL LINE
+    u'}'        #  0x7D -> RIGHT CURLY BRACKET
+    u'~'        #  0x7E -> TILDE
+    u'\x7f'     #  0x7F -> DELETE
+    u'\x80'     #  0x80 -> <control>
+    u'\x81'     #  0x81 -> <control>
+    u'\x82'     #  0x82 -> <control>
+    u'\x83'     #  0x83 -> <control>
+    u'\x84'     #  0x84 -> <control>
+    u'\x85'     #  0x85 -> <control>
+    u'\x86'     #  0x86 -> <control>
+    u'\x87'     #  0x87 -> <control>
+    u'\x88'     #  0x88 -> <control>
+    u'\x89'     #  0x89 -> <control>
+    u'\x8a'     #  0x8A -> <control>
+    u'\x8b'     #  0x8B -> <control>
+    u'\x8c'     #  0x8C -> <control>
+    u'\x8d'     #  0x8D -> <control>
+    u'\x8e'     #  0x8E -> <control>
+    u'\x8f'     #  0x8F -> <control>
+    u'\x90'     #  0x90 -> <control>
+    u'\x91'     #  0x91 -> <control>
+    u'\x92'     #  0x92 -> <control>
+    u'\x93'     #  0x93 -> <control>
+    u'\x94'     #  0x94 -> <control>
+    u'\x95'     #  0x95 -> <control>
+    u'\x96'     #  0x96 -> <control>
+    u'\x97'     #  0x97 -> <control>
+    u'\x98'     #  0x98 -> <control>
+    u'\x99'     #  0x99 -> <control>
+    u'\x9a'     #  0x9A -> <control>
+    u'\x9b'     #  0x9B -> <control>
+    u'\x9c'     #  0x9C -> <control>
+    u'\x9d'     #  0x9D -> <control>
+    u'\x9e'     #  0x9E -> <control>
+    u'\x9f'     #  0x9F -> <control>
     u'\ufffe'
-    u'\u0e01'	#  0xA1 -> THAI CHARACTER KO KAI
-    u'\u0e02'	#  0xA2 -> THAI CHARACTER KHO KHAI
-    u'\u0e03'	#  0xA3 -> THAI CHARACTER KHO KHUAT
-    u'\u0e04'	#  0xA4 -> THAI CHARACTER KHO KHWAI
-    u'\u0e05'	#  0xA5 -> THAI CHARACTER KHO KHON
-    u'\u0e06'	#  0xA6 -> THAI CHARACTER KHO RAKHANG
-    u'\u0e07'	#  0xA7 -> THAI CHARACTER NGO NGU
-    u'\u0e08'	#  0xA8 -> THAI CHARACTER CHO CHAN
-    u'\u0e09'	#  0xA9 -> THAI CHARACTER CHO CHING
-    u'\u0e0a'	#  0xAA -> THAI CHARACTER CHO CHANG
-    u'\u0e0b'	#  0xAB -> THAI CHARACTER SO SO
-    u'\u0e0c'	#  0xAC -> THAI CHARACTER CHO CHOE
-    u'\u0e0d'	#  0xAD -> THAI CHARACTER YO YING
-    u'\u0e0e'	#  0xAE -> THAI CHARACTER DO CHADA
-    u'\u0e0f'	#  0xAF -> THAI CHARACTER TO PATAK
-    u'\u0e10'	#  0xB0 -> THAI CHARACTER THO THAN
-    u'\u0e11'	#  0xB1 -> THAI CHARACTER THO NANGMONTHO
-    u'\u0e12'	#  0xB2 -> THAI CHARACTER THO PHUTHAO
-    u'\u0e13'	#  0xB3 -> THAI CHARACTER NO NEN
-    u'\u0e14'	#  0xB4 -> THAI CHARACTER DO DEK
-    u'\u0e15'	#  0xB5 -> THAI CHARACTER TO TAO
-    u'\u0e16'	#  0xB6 -> THAI CHARACTER THO THUNG
-    u'\u0e17'	#  0xB7 -> THAI CHARACTER THO THAHAN
-    u'\u0e18'	#  0xB8 -> THAI CHARACTER THO THONG
-    u'\u0e19'	#  0xB9 -> THAI CHARACTER NO NU
-    u'\u0e1a'	#  0xBA -> THAI CHARACTER BO BAIMAI
-    u'\u0e1b'	#  0xBB -> THAI CHARACTER PO PLA
-    u'\u0e1c'	#  0xBC -> THAI CHARACTER PHO PHUNG
-    u'\u0e1d'	#  0xBD -> THAI CHARACTER FO FA
-    u'\u0e1e'	#  0xBE -> THAI CHARACTER PHO PHAN
-    u'\u0e1f'	#  0xBF -> THAI CHARACTER FO FAN
-    u'\u0e20'	#  0xC0 -> THAI CHARACTER PHO SAMPHAO
-    u'\u0e21'	#  0xC1 -> THAI CHARACTER MO MA
-    u'\u0e22'	#  0xC2 -> THAI CHARACTER YO YAK
-    u'\u0e23'	#  0xC3 -> THAI CHARACTER RO RUA
-    u'\u0e24'	#  0xC4 -> THAI CHARACTER RU
-    u'\u0e25'	#  0xC5 -> THAI CHARACTER LO LING
-    u'\u0e26'	#  0xC6 -> THAI CHARACTER LU
-    u'\u0e27'	#  0xC7 -> THAI CHARACTER WO WAEN
-    u'\u0e28'	#  0xC8 -> THAI CHARACTER SO SALA
-    u'\u0e29'	#  0xC9 -> THAI CHARACTER SO RUSI
-    u'\u0e2a'	#  0xCA -> THAI CHARACTER SO SUA
-    u'\u0e2b'	#  0xCB -> THAI CHARACTER HO HIP
-    u'\u0e2c'	#  0xCC -> THAI CHARACTER LO CHULA
-    u'\u0e2d'	#  0xCD -> THAI CHARACTER O ANG
-    u'\u0e2e'	#  0xCE -> THAI CHARACTER HO NOKHUK
-    u'\u0e2f'	#  0xCF -> THAI CHARACTER PAIYANNOI
-    u'\u0e30'	#  0xD0 -> THAI CHARACTER SARA A
-    u'\u0e31'	#  0xD1 -> THAI CHARACTER MAI HAN-AKAT
-    u'\u0e32'	#  0xD2 -> THAI CHARACTER SARA AA
-    u'\u0e33'	#  0xD3 -> THAI CHARACTER SARA AM
-    u'\u0e34'	#  0xD4 -> THAI CHARACTER SARA I
-    u'\u0e35'	#  0xD5 -> THAI CHARACTER SARA II
-    u'\u0e36'	#  0xD6 -> THAI CHARACTER SARA UE
-    u'\u0e37'	#  0xD7 -> THAI CHARACTER SARA UEE
-    u'\u0e38'	#  0xD8 -> THAI CHARACTER SARA U
-    u'\u0e39'	#  0xD9 -> THAI CHARACTER SARA UU
-    u'\u0e3a'	#  0xDA -> THAI CHARACTER PHINTHU
+    u'\u0e01'   #  0xA1 -> THAI CHARACTER KO KAI
+    u'\u0e02'   #  0xA2 -> THAI CHARACTER KHO KHAI
+    u'\u0e03'   #  0xA3 -> THAI CHARACTER KHO KHUAT
+    u'\u0e04'   #  0xA4 -> THAI CHARACTER KHO KHWAI
+    u'\u0e05'   #  0xA5 -> THAI CHARACTER KHO KHON
+    u'\u0e06'   #  0xA6 -> THAI CHARACTER KHO RAKHANG
+    u'\u0e07'   #  0xA7 -> THAI CHARACTER NGO NGU
+    u'\u0e08'   #  0xA8 -> THAI CHARACTER CHO CHAN
+    u'\u0e09'   #  0xA9 -> THAI CHARACTER CHO CHING
+    u'\u0e0a'   #  0xAA -> THAI CHARACTER CHO CHANG
+    u'\u0e0b'   #  0xAB -> THAI CHARACTER SO SO
+    u'\u0e0c'   #  0xAC -> THAI CHARACTER CHO CHOE
+    u'\u0e0d'   #  0xAD -> THAI CHARACTER YO YING
+    u'\u0e0e'   #  0xAE -> THAI CHARACTER DO CHADA
+    u'\u0e0f'   #  0xAF -> THAI CHARACTER TO PATAK
+    u'\u0e10'   #  0xB0 -> THAI CHARACTER THO THAN
+    u'\u0e11'   #  0xB1 -> THAI CHARACTER THO NANGMONTHO
+    u'\u0e12'   #  0xB2 -> THAI CHARACTER THO PHUTHAO
+    u'\u0e13'   #  0xB3 -> THAI CHARACTER NO NEN
+    u'\u0e14'   #  0xB4 -> THAI CHARACTER DO DEK
+    u'\u0e15'   #  0xB5 -> THAI CHARACTER TO TAO
+    u'\u0e16'   #  0xB6 -> THAI CHARACTER THO THUNG
+    u'\u0e17'   #  0xB7 -> THAI CHARACTER THO THAHAN
+    u'\u0e18'   #  0xB8 -> THAI CHARACTER THO THONG
+    u'\u0e19'   #  0xB9 -> THAI CHARACTER NO NU
+    u'\u0e1a'   #  0xBA -> THAI CHARACTER BO BAIMAI
+    u'\u0e1b'   #  0xBB -> THAI CHARACTER PO PLA
+    u'\u0e1c'   #  0xBC -> THAI CHARACTER PHO PHUNG
+    u'\u0e1d'   #  0xBD -> THAI CHARACTER FO FA
+    u'\u0e1e'   #  0xBE -> THAI CHARACTER PHO PHAN
+    u'\u0e1f'   #  0xBF -> THAI CHARACTER FO FAN
+    u'\u0e20'   #  0xC0 -> THAI CHARACTER PHO SAMPHAO
+    u'\u0e21'   #  0xC1 -> THAI CHARACTER MO MA
+    u'\u0e22'   #  0xC2 -> THAI CHARACTER YO YAK
+    u'\u0e23'   #  0xC3 -> THAI CHARACTER RO RUA
+    u'\u0e24'   #  0xC4 -> THAI CHARACTER RU
+    u'\u0e25'   #  0xC5 -> THAI CHARACTER LO LING
+    u'\u0e26'   #  0xC6 -> THAI CHARACTER LU
+    u'\u0e27'   #  0xC7 -> THAI CHARACTER WO WAEN
+    u'\u0e28'   #  0xC8 -> THAI CHARACTER SO SALA
+    u'\u0e29'   #  0xC9 -> THAI CHARACTER SO RUSI
+    u'\u0e2a'   #  0xCA -> THAI CHARACTER SO SUA
+    u'\u0e2b'   #  0xCB -> THAI CHARACTER HO HIP
+    u'\u0e2c'   #  0xCC -> THAI CHARACTER LO CHULA
+    u'\u0e2d'   #  0xCD -> THAI CHARACTER O ANG
+    u'\u0e2e'   #  0xCE -> THAI CHARACTER HO NOKHUK
+    u'\u0e2f'   #  0xCF -> THAI CHARACTER PAIYANNOI
+    u'\u0e30'   #  0xD0 -> THAI CHARACTER SARA A
+    u'\u0e31'   #  0xD1 -> THAI CHARACTER MAI HAN-AKAT
+    u'\u0e32'   #  0xD2 -> THAI CHARACTER SARA AA
+    u'\u0e33'   #  0xD3 -> THAI CHARACTER SARA AM
+    u'\u0e34'   #  0xD4 -> THAI CHARACTER SARA I
+    u'\u0e35'   #  0xD5 -> THAI CHARACTER SARA II
+    u'\u0e36'   #  0xD6 -> THAI CHARACTER SARA UE
+    u'\u0e37'   #  0xD7 -> THAI CHARACTER SARA UEE
+    u'\u0e38'   #  0xD8 -> THAI CHARACTER SARA U
+    u'\u0e39'   #  0xD9 -> THAI CHARACTER SARA UU
+    u'\u0e3a'   #  0xDA -> THAI CHARACTER PHINTHU
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
-    u'\u0e3f'	#  0xDF -> THAI CURRENCY SYMBOL BAHT
-    u'\u0e40'	#  0xE0 -> THAI CHARACTER SARA E
-    u'\u0e41'	#  0xE1 -> THAI CHARACTER SARA AE
-    u'\u0e42'	#  0xE2 -> THAI CHARACTER SARA O
-    u'\u0e43'	#  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
-    u'\u0e44'	#  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
-    u'\u0e45'	#  0xE5 -> THAI CHARACTER LAKKHANGYAO
-    u'\u0e46'	#  0xE6 -> THAI CHARACTER MAIYAMOK
-    u'\u0e47'	#  0xE7 -> THAI CHARACTER MAITAIKHU
-    u'\u0e48'	#  0xE8 -> THAI CHARACTER MAI EK
-    u'\u0e49'	#  0xE9 -> THAI CHARACTER MAI THO
-    u'\u0e4a'	#  0xEA -> THAI CHARACTER MAI TRI
-    u'\u0e4b'	#  0xEB -> THAI CHARACTER MAI CHATTAWA
-    u'\u0e4c'	#  0xEC -> THAI CHARACTER THANTHAKHAT
-    u'\u0e4d'	#  0xED -> THAI CHARACTER NIKHAHIT
-    u'\u0e4e'	#  0xEE -> THAI CHARACTER YAMAKKAN
-    u'\u0e4f'	#  0xEF -> THAI CHARACTER FONGMAN
-    u'\u0e50'	#  0xF0 -> THAI DIGIT ZERO
-    u'\u0e51'	#  0xF1 -> THAI DIGIT ONE
-    u'\u0e52'	#  0xF2 -> THAI DIGIT TWO
-    u'\u0e53'	#  0xF3 -> THAI DIGIT THREE
-    u'\u0e54'	#  0xF4 -> THAI DIGIT FOUR
-    u'\u0e55'	#  0xF5 -> THAI DIGIT FIVE
-    u'\u0e56'	#  0xF6 -> THAI DIGIT SIX
-    u'\u0e57'	#  0xF7 -> THAI DIGIT SEVEN
-    u'\u0e58'	#  0xF8 -> THAI DIGIT EIGHT
-    u'\u0e59'	#  0xF9 -> THAI DIGIT NINE
-    u'\u0e5a'	#  0xFA -> THAI CHARACTER ANGKHANKHU
-    u'\u0e5b'	#  0xFB -> THAI CHARACTER KHOMUT
+    u'\u0e3f'   #  0xDF -> THAI CURRENCY SYMBOL BAHT
+    u'\u0e40'   #  0xE0 -> THAI CHARACTER SARA E
+    u'\u0e41'   #  0xE1 -> THAI CHARACTER SARA AE
+    u'\u0e42'   #  0xE2 -> THAI CHARACTER SARA O
+    u'\u0e43'   #  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
+    u'\u0e44'   #  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
+    u'\u0e45'   #  0xE5 -> THAI CHARACTER LAKKHANGYAO
+    u'\u0e46'   #  0xE6 -> THAI CHARACTER MAIYAMOK
+    u'\u0e47'   #  0xE7 -> THAI CHARACTER MAITAIKHU
+    u'\u0e48'   #  0xE8 -> THAI CHARACTER MAI EK
+    u'\u0e49'   #  0xE9 -> THAI CHARACTER MAI THO
+    u'\u0e4a'   #  0xEA -> THAI CHARACTER MAI TRI
+    u'\u0e4b'   #  0xEB -> THAI CHARACTER MAI CHATTAWA
+    u'\u0e4c'   #  0xEC -> THAI CHARACTER THANTHAKHAT
+    u'\u0e4d'   #  0xED -> THAI CHARACTER NIKHAHIT
+    u'\u0e4e'   #  0xEE -> THAI CHARACTER YAMAKKAN
+    u'\u0e4f'   #  0xEF -> THAI CHARACTER FONGMAN
+    u'\u0e50'   #  0xF0 -> THAI DIGIT ZERO
+    u'\u0e51'   #  0xF1 -> THAI DIGIT ONE
+    u'\u0e52'   #  0xF2 -> THAI DIGIT TWO
+    u'\u0e53'   #  0xF3 -> THAI DIGIT THREE
+    u'\u0e54'   #  0xF4 -> THAI DIGIT FOUR
+    u'\u0e55'   #  0xF5 -> THAI DIGIT FIVE
+    u'\u0e56'   #  0xF6 -> THAI DIGIT SIX
+    u'\u0e57'   #  0xF7 -> THAI DIGIT SEVEN
+    u'\u0e58'   #  0xF8 -> THAI DIGIT EIGHT
+    u'\u0e59'   #  0xF9 -> THAI DIGIT NINE
+    u'\u0e5a'   #  0xFA -> THAI CHARACTER ANGKHANKHU
+    u'\u0e5b'   #  0xFB -> THAI CHARACTER KHOMUT
     u'\ufffe'
     u'\ufffe'
     u'\ufffe'
@@ -293,252 +293,251 @@
 ### Encoding Map
 
 encoding_map = {
-    0x0000: 0x00,	#  NULL
-    0x0001: 0x01,	#  START OF HEADING
-    0x0002: 0x02,	#  START OF TEXT
-    0x0003: 0x03,	#  END OF TEXT
-    0x0004: 0x04,	#  END OF TRANSMISSION
-    0x0005: 0x05,	#  ENQUIRY
-    0x0006: 0x06,	#  ACKNOWLEDGE
-    0x0007: 0x07,	#  BELL
-    0x0008: 0x08,	#  BACKSPACE
-    0x0009: 0x09,	#  HORIZONTAL TABULATION
-    0x000A: 0x0A,	#  LINE FEED
-    0x000B: 0x0B,	#  VERTICAL TABULATION
-    0x000C: 0x0C,	#  FORM FEED
-    0x000D: 0x0D,	#  CARRIAGE RETURN
-    0x000E: 0x0E,	#  SHIFT OUT
-    0x000F: 0x0F,	#  SHIFT IN
-    0x0010: 0x10,	#  DATA LINK ESCAPE
-    0x0011: 0x11,	#  DEVICE CONTROL ONE
-    0x0012: 0x12,	#  DEVICE CONTROL TWO
-    0x0013: 0x13,	#  DEVICE CONTROL THREE
-    0x0014: 0x14,	#  DEVICE CONTROL FOUR
-    0x0015: 0x15,	#  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x16,	#  SYNCHRONOUS IDLE
-    0x0017: 0x17,	#  END OF TRANSMISSION BLOCK
-    0x0018: 0x18,	#  CANCEL
-    0x0019: 0x19,	#  END OF MEDIUM
-    0x001A: 0x1A,	#  SUBSTITUTE
-    0x001B: 0x1B,	#  ESCAPE
-    0x001C: 0x1C,	#  FILE SEPARATOR
-    0x001D: 0x1D,	#  GROUP SEPARATOR
-    0x001E: 0x1E,	#  RECORD SEPARATOR
-    0x001F: 0x1F,	#  UNIT SEPARATOR
-    0x0020: 0x20,	#  SPACE
-    0x0021: 0x21,	#  EXCLAMATION MARK
-    0x0022: 0x22,	#  QUOTATION MARK
-    0x0023: 0x23,	#  NUMBER SIGN
-    0x0024: 0x24,	#  DOLLAR SIGN
-    0x0025: 0x25,	#  PERCENT SIGN
-    0x0026: 0x26,	#  AMPERSAND
-    0x0027: 0x27,	#  APOSTROPHE
-    0x0028: 0x28,	#  LEFT PARENTHESIS
-    0x0029: 0x29,	#  RIGHT PARENTHESIS
-    0x002A: 0x2A,	#  ASTERISK
-    0x002B: 0x2B,	#  PLUS SIGN
-    0x002C: 0x2C,	#  COMMA
-    0x002D: 0x2D,	#  HYPHEN-MINUS
-    0x002E: 0x2E,	#  FULL STOP
-    0x002F: 0x2F,	#  SOLIDUS
-    0x0030: 0x30,	#  DIGIT ZERO
-    0x0031: 0x31,	#  DIGIT ONE
-    0x0032: 0x32,	#  DIGIT TWO
-    0x0033: 0x33,	#  DIGIT THREE
-    0x0034: 0x34,	#  DIGIT FOUR
-    0x0035: 0x35,	#  DIGIT FIVE
-    0x0036: 0x36,	#  DIGIT SIX
-    0x0037: 0x37,	#  DIGIT SEVEN
-    0x0038: 0x38,	#  DIGIT EIGHT
-    0x0039: 0x39,	#  DIGIT NINE
-    0x003A: 0x3A,	#  COLON
-    0x003B: 0x3B,	#  SEMICOLON
-    0x003C: 0x3C,	#  LESS-THAN SIGN
-    0x003D: 0x3D,	#  EQUALS SIGN
-    0x003E: 0x3E,	#  GREATER-THAN SIGN
-    0x003F: 0x3F,	#  QUESTION MARK
-    0x0040: 0x40,	#  COMMERCIAL AT
-    0x0041: 0x41,	#  LATIN CAPITAL LETTER A
-    0x0042: 0x42,	#  LATIN CAPITAL LETTER B
-    0x0043: 0x43,	#  LATIN CAPITAL LETTER C
-    0x0044: 0x44,	#  LATIN CAPITAL LETTER D
-    0x0045: 0x45,	#  LATIN CAPITAL LETTER E
-    0x0046: 0x46,	#  LATIN CAPITAL LETTER F
-    0x0047: 0x47,	#  LATIN CAPITAL LETTER G
-    0x0048: 0x48,	#  LATIN CAPITAL LETTER H
-    0x0049: 0x49,	#  LATIN CAPITAL LETTER I
-    0x004A: 0x4A,	#  LATIN CAPITAL LETTER J
-    0x004B: 0x4B,	#  LATIN CAPITAL LETTER K
-    0x004C: 0x4C,	#  LATIN CAPITAL LETTER L
-    0x004D: 0x4D,	#  LATIN CAPITAL LETTER M
-    0x004E: 0x4E,	#  LATIN CAPITAL LETTER N
-    0x004F: 0x4F,	#  LATIN CAPITAL LETTER O
-    0x0050: 0x50,	#  LATIN CAPITAL LETTER P
-    0x0051: 0x51,	#  LATIN CAPITAL LETTER Q
-    0x0052: 0x52,	#  LATIN CAPITAL LETTER R
-    0x0053: 0x53,	#  LATIN CAPITAL LETTER S
-    0x0054: 0x54,	#  LATIN CAPITAL LETTER T
-    0x0055: 0x55,	#  LATIN CAPITAL LETTER U
-    0x0056: 0x56,	#  LATIN CAPITAL LETTER V
-    0x0057: 0x57,	#  LATIN CAPITAL LETTER W
-    0x0058: 0x58,	#  LATIN CAPITAL LETTER X
-    0x0059: 0x59,	#  LATIN CAPITAL LETTER Y
-    0x005A: 0x5A,	#  LATIN CAPITAL LETTER Z
-    0x005B: 0x5B,	#  LEFT SQUARE BRACKET
-    0x005C: 0x5C,	#  REVERSE SOLIDUS
-    0x005D: 0x5D,	#  RIGHT SQUARE BRACKET
-    0x005E: 0x5E,	#  CIRCUMFLEX ACCENT
-    0x005F: 0x5F,	#  LOW LINE
-    0x0060: 0x60,	#  GRAVE ACCENT
-    0x0061: 0x61,	#  LATIN SMALL LETTER A
-    0x0062: 0x62,	#  LATIN SMALL LETTER B
-    0x0063: 0x63,	#  LATIN SMALL LETTER C
-    0x0064: 0x64,	#  LATIN SMALL LETTER D
-    0x0065: 0x65,	#  LATIN SMALL LETTER E
-    0x0066: 0x66,	#  LATIN SMALL LETTER F
-    0x0067: 0x67,	#  LATIN SMALL LETTER G
-    0x0068: 0x68,	#  LATIN SMALL LETTER H
-    0x0069: 0x69,	#  LATIN SMALL LETTER I
-    0x006A: 0x6A,	#  LATIN SMALL LETTER J
-    0x006B: 0x6B,	#  LATIN SMALL LETTER K
-    0x006C: 0x6C,	#  LATIN SMALL LETTER L
-    0x006D: 0x6D,	#  LATIN SMALL LETTER M
-    0x006E: 0x6E,	#  LATIN SMALL LETTER N
-    0x006F: 0x6F,	#  LATIN SMALL LETTER O
-    0x0070: 0x70,	#  LATIN SMALL LETTER P
-    0x0071: 0x71,	#  LATIN SMALL LETTER Q
-    0x0072: 0x72,	#  LATIN SMALL LETTER R
-    0x0073: 0x73,	#  LATIN SMALL LETTER S
-    0x0074: 0x74,	#  LATIN SMALL LETTER T
-    0x0075: 0x75,	#  LATIN SMALL LETTER U
-    0x0076: 0x76,	#  LATIN SMALL LETTER V
-    0x0077: 0x77,	#  LATIN SMALL LETTER W
-    0x0078: 0x78,	#  LATIN SMALL LETTER X
-    0x0079: 0x79,	#  LATIN SMALL LETTER Y
-    0x007A: 0x7A,	#  LATIN SMALL LETTER Z
-    0x007B: 0x7B,	#  LEFT CURLY BRACKET
-    0x007C: 0x7C,	#  VERTICAL LINE
-    0x007D: 0x7D,	#  RIGHT CURLY BRACKET
-    0x007E: 0x7E,	#  TILDE
-    0x007F: 0x7F,	#  DELETE
-    0x0080: 0x80,	#  <control>
-    0x0081: 0x81,	#  <control>
-    0x0082: 0x82,	#  <control>
-    0x0083: 0x83,	#  <control>
-    0x0084: 0x84,	#  <control>
-    0x0085: 0x85,	#  <control>
-    0x0086: 0x86,	#  <control>
-    0x0087: 0x87,	#  <control>
-    0x0088: 0x88,	#  <control>
-    0x0089: 0x89,	#  <control>
-    0x008A: 0x8A,	#  <control>
-    0x008B: 0x8B,	#  <control>
-    0x008C: 0x8C,	#  <control>
-    0x008D: 0x8D,	#  <control>
-    0x008E: 0x8E,	#  <control>
-    0x008F: 0x8F,	#  <control>
-    0x0090: 0x90,	#  <control>
-    0x0091: 0x91,	#  <control>
-    0x0092: 0x92,	#  <control>
-    0x0093: 0x93,	#  <control>
-    0x0094: 0x94,	#  <control>
-    0x0095: 0x95,	#  <control>
-    0x0096: 0x96,	#  <control>
-    0x0097: 0x97,	#  <control>
-    0x0098: 0x98,	#  <control>
-    0x0099: 0x99,	#  <control>
-    0x009A: 0x9A,	#  <control>
-    0x009B: 0x9B,	#  <control>
-    0x009C: 0x9C,	#  <control>
-    0x009D: 0x9D,	#  <control>
-    0x009E: 0x9E,	#  <control>
-    0x009F: 0x9F,	#  <control>
-    0x0E01: 0xA1,	#  THAI CHARACTER KO KAI
-    0x0E02: 0xA2,	#  THAI CHARACTER KHO KHAI
-    0x0E03: 0xA3,	#  THAI CHARACTER KHO KHUAT
-    0x0E04: 0xA4,	#  THAI CHARACTER KHO KHWAI
-    0x0E05: 0xA5,	#  THAI CHARACTER KHO KHON
-    0x0E06: 0xA6,	#  THAI CHARACTER KHO RAKHANG
-    0x0E07: 0xA7,	#  THAI CHARACTER NGO NGU
-    0x0E08: 0xA8,	#  THAI CHARACTER CHO CHAN
-    0x0E09: 0xA9,	#  THAI CHARACTER CHO CHING
-    0x0E0A: 0xAA,	#  THAI CHARACTER CHO CHANG
-    0x0E0B: 0xAB,	#  THAI CHARACTER SO SO
-    0x0E0C: 0xAC,	#  THAI CHARACTER CHO CHOE
-    0x0E0D: 0xAD,	#  THAI CHARACTER YO YING
-    0x0E0E: 0xAE,	#  THAI CHARACTER DO CHADA
-    0x0E0F: 0xAF,	#  THAI CHARACTER TO PATAK
-    0x0E10: 0xB0,	#  THAI CHARACTER THO THAN
-    0x0E11: 0xB1,	#  THAI CHARACTER THO NANGMONTHO
-    0x0E12: 0xB2,	#  THAI CHARACTER THO PHUTHAO
-    0x0E13: 0xB3,	#  THAI CHARACTER NO NEN
-    0x0E14: 0xB4,	#  THAI CHARACTER DO DEK
-    0x0E15: 0xB5,	#  THAI CHARACTER TO TAO
-    0x0E16: 0xB6,	#  THAI CHARACTER THO THUNG
-    0x0E17: 0xB7,	#  THAI CHARACTER THO THAHAN
-    0x0E18: 0xB8,	#  THAI CHARACTER THO THONG
-    0x0E19: 0xB9,	#  THAI CHARACTER NO NU
-    0x0E1A: 0xBA,	#  THAI CHARACTER BO BAIMAI
-    0x0E1B: 0xBB,	#  THAI CHARACTER PO PLA
-    0x0E1C: 0xBC,	#  THAI CHARACTER PHO PHUNG
-    0x0E1D: 0xBD,	#  THAI CHARACTER FO FA
-    0x0E1E: 0xBE,	#  THAI CHARACTER PHO PHAN
-    0x0E1F: 0xBF,	#  THAI CHARACTER FO FAN
-    0x0E20: 0xC0,	#  THAI CHARACTER PHO SAMPHAO
-    0x0E21: 0xC1,	#  THAI CHARACTER MO MA
-    0x0E22: 0xC2,	#  THAI CHARACTER YO YAK
-    0x0E23: 0xC3,	#  THAI CHARACTER RO RUA
-    0x0E24: 0xC4,	#  THAI CHARACTER RU
-    0x0E25: 0xC5,	#  THAI CHARACTER LO LING
-    0x0E26: 0xC6,	#  THAI CHARACTER LU
-    0x0E27: 0xC7,	#  THAI CHARACTER WO WAEN
-    0x0E28: 0xC8,	#  THAI CHARACTER SO SALA
-    0x0E29: 0xC9,	#  THAI CHARACTER SO RUSI
-    0x0E2A: 0xCA,	#  THAI CHARACTER SO SUA
-    0x0E2B: 0xCB,	#  THAI CHARACTER HO HIP
-    0x0E2C: 0xCC,	#  THAI CHARACTER LO CHULA
-    0x0E2D: 0xCD,	#  THAI CHARACTER O ANG
-    0x0E2E: 0xCE,	#  THAI CHARACTER HO NOKHUK
-    0x0E2F: 0xCF,	#  THAI CHARACTER PAIYANNOI
-    0x0E30: 0xD0,	#  THAI CHARACTER SARA A
-    0x0E31: 0xD1,	#  THAI CHARACTER MAI HAN-AKAT
-    0x0E32: 0xD2,	#  THAI CHARACTER SARA AA
-    0x0E33: 0xD3,	#  THAI CHARACTER SARA AM
-    0x0E34: 0xD4,	#  THAI CHARACTER SARA I
-    0x0E35: 0xD5,	#  THAI CHARACTER SARA II
-    0x0E36: 0xD6,	#  THAI CHARACTER SARA UE
-    0x0E37: 0xD7,	#  THAI CHARACTER SARA UEE
-    0x0E38: 0xD8,	#  THAI CHARACTER SARA U
-    0x0E39: 0xD9,	#  THAI CHARACTER SARA UU
-    0x0E3A: 0xDA,	#  THAI CHARACTER PHINTHU
-    0x0E3F: 0xDF,	#  THAI CURRENCY SYMBOL BAHT
-    0x0E40: 0xE0,	#  THAI CHARACTER SARA E
-    0x0E41: 0xE1,	#  THAI CHARACTER SARA AE
-    0x0E42: 0xE2,	#  THAI CHARACTER SARA O
-    0x0E43: 0xE3,	#  THAI CHARACTER SARA AI MAIMUAN
-    0x0E44: 0xE4,	#  THAI CHARACTER SARA AI MAIMALAI
-    0x0E45: 0xE5,	#  THAI CHARACTER LAKKHANGYAO
-    0x0E46: 0xE6,	#  THAI CHARACTER MAIYAMOK
-    0x0E47: 0xE7,	#  THAI CHARACTER MAITAIKHU
-    0x0E48: 0xE8,	#  THAI CHARACTER MAI EK
-    0x0E49: 0xE9,	#  THAI CHARACTER MAI THO
-    0x0E4A: 0xEA,	#  THAI CHARACTER MAI TRI
-    0x0E4B: 0xEB,	#  THAI CHARACTER MAI CHATTAWA
-    0x0E4C: 0xEC,	#  THAI CHARACTER THANTHAKHAT
-    0x0E4D: 0xED,	#  THAI CHARACTER NIKHAHIT
-    0x0E4E: 0xEE,	#  THAI CHARACTER YAMAKKAN
-    0x0E4F: 0xEF,	#  THAI CHARACTER FONGMAN
-    0x0E50: 0xF0,	#  THAI DIGIT ZERO
-    0x0E51: 0xF1,	#  THAI DIGIT ONE
-    0x0E52: 0xF2,	#  THAI DIGIT TWO
-    0x0E53: 0xF3,	#  THAI DIGIT THREE
-    0x0E54: 0xF4,	#  THAI DIGIT FOUR
-    0x0E55: 0xF5,	#  THAI DIGIT FIVE
-    0x0E56: 0xF6,	#  THAI DIGIT SIX
-    0x0E57: 0xF7,	#  THAI DIGIT SEVEN
-    0x0E58: 0xF8,	#  THAI DIGIT EIGHT
-    0x0E59: 0xF9,	#  THAI DIGIT NINE
-    0x0E5A: 0xFA,	#  THAI CHARACTER ANGKHANKHU
-    0x0E5B: 0xFB,	#  THAI CHARACTER KHOMUT
+    0x0000: 0x00,       #  NULL
+    0x0001: 0x01,       #  START OF HEADING
+    0x0002: 0x02,       #  START OF TEXT
+    0x0003: 0x03,       #  END OF TEXT
+    0x0004: 0x04,       #  END OF TRANSMISSION
+    0x0005: 0x05,       #  ENQUIRY
+    0x0006: 0x06,       #  ACKNOWLEDGE
+    0x0007: 0x07,       #  BELL
+    0x0008: 0x08,       #  BACKSPACE
+    0x0009: 0x09,       #  HORIZONTAL TABULATION
+    0x000A: 0x0A,       #  LINE FEED
+    0x000B: 0x0B,       #  VERTICAL TABULATION
+    0x000C: 0x0C,       #  FORM FEED
+    0x000D: 0x0D,       #  CARRIAGE RETURN
+    0x000E: 0x0E,       #  SHIFT OUT
+    0x000F: 0x0F,       #  SHIFT IN
+    0x0010: 0x10,       #  DATA LINK ESCAPE
+    0x0011: 0x11,       #  DEVICE CONTROL ONE
+    0x0012: 0x12,       #  DEVICE CONTROL TWO
+    0x0013: 0x13,       #  DEVICE CONTROL THREE
+    0x0014: 0x14,       #  DEVICE CONTROL FOUR
+    0x0015: 0x15,       #  NEGATIVE ACKNOWLEDGE
+    0x0016: 0x16,       #  SYNCHRONOUS IDLE
+    0x0017: 0x17,       #  END OF TRANSMISSION BLOCK
+    0x0018: 0x18,       #  CANCEL
+    0x0019: 0x19,       #  END OF MEDIUM
+    0x001A: 0x1A,       #  SUBSTITUTE
+    0x001B: 0x1B,       #  ESCAPE
+    0x001C: 0x1C,       #  FILE SEPARATOR
+    0x001D: 0x1D,       #  GROUP SEPARATOR
+    0x001E: 0x1E,       #  RECORD SEPARATOR
+    0x001F: 0x1F,       #  UNIT SEPARATOR
+    0x0020: 0x20,       #  SPACE
+    0x0021: 0x21,       #  EXCLAMATION MARK
+    0x0022: 0x22,       #  QUOTATION MARK
+    0x0023: 0x23,       #  NUMBER SIGN
+    0x0024: 0x24,       #  DOLLAR SIGN
+    0x0025: 0x25,       #  PERCENT SIGN
+    0x0026: 0x26,       #  AMPERSAND
+    0x0027: 0x27,       #  APOSTROPHE
+    0x0028: 0x28,       #  LEFT PARENTHESIS
+    0x0029: 0x29,       #  RIGHT PARENTHESIS
+    0x002A: 0x2A,       #  ASTERISK
+    0x002B: 0x2B,       #  PLUS SIGN
+    0x002C: 0x2C,       #  COMMA
+    0x002D: 0x2D,       #  HYPHEN-MINUS
+    0x002E: 0x2E,       #  FULL STOP
+    0x002F: 0x2F,       #  SOLIDUS
+    0x0030: 0x30,       #  DIGIT ZERO
+    0x0031: 0x31,       #  DIGIT ONE
+    0x0032: 0x32,       #  DIGIT TWO
+    0x0033: 0x33,       #  DIGIT THREE
+    0x0034: 0x34,       #  DIGIT FOUR
+    0x0035: 0x35,       #  DIGIT FIVE
+    0x0036: 0x36,       #  DIGIT SIX
+    0x0037: 0x37,       #  DIGIT SEVEN
+    0x0038: 0x38,       #  DIGIT EIGHT
+    0x0039: 0x39,       #  DIGIT NINE
+    0x003A: 0x3A,       #  COLON
+    0x003B: 0x3B,       #  SEMICOLON
+    0x003C: 0x3C,       #  LESS-THAN SIGN
+    0x003D: 0x3D,       #  EQUALS SIGN
+    0x003E: 0x3E,       #  GREATER-THAN SIGN
+    0x003F: 0x3F,       #  QUESTION MARK
+    0x0040: 0x40,       #  COMMERCIAL AT
+    0x0041: 0x41,       #  LATIN CAPITAL LETTER A
+    0x0042: 0x42,       #  LATIN CAPITAL LETTER B
+    0x0043: 0x43,       #  LATIN CAPITAL LETTER C
+    0x0044: 0x44,       #  LATIN CAPITAL LETTER D
+    0x0045: 0x45,       #  LATIN CAPITAL LETTER E
+    0x0046: 0x46,       #  LATIN CAPITAL LETTER F
+    0x0047: 0x47,       #  LATIN CAPITAL LETTER G
+    0x0048: 0x48,       #  LATIN CAPITAL LETTER H
+    0x0049: 0x49,       #  LATIN CAPITAL LETTER I
+    0x004A: 0x4A,       #  LATIN CAPITAL LETTER J
+    0x004B: 0x4B,       #  LATIN CAPITAL LETTER K
+    0x004C: 0x4C,       #  LATIN CAPITAL LETTER L
+    0x004D: 0x4D,       #  LATIN CAPITAL LETTER M
+    0x004E: 0x4E,       #  LATIN CAPITAL LETTER N
+    0x004F: 0x4F,       #  LATIN CAPITAL LETTER O
+    0x0050: 0x50,       #  LATIN CAPITAL LETTER P
+    0x0051: 0x51,       #  LATIN CAPITAL LETTER Q
+    0x0052: 0x52,       #  LATIN CAPITAL LETTER R
+    0x0053: 0x53,       #  LATIN CAPITAL LETTER S
+    0x0054: 0x54,       #  LATIN CAPITAL LETTER T
+    0x0055: 0x55,       #  LATIN CAPITAL LETTER U
+    0x0056: 0x56,       #  LATIN CAPITAL LETTER V
+    0x0057: 0x57,       #  LATIN CAPITAL LETTER W
+    0x0058: 0x58,       #  LATIN CAPITAL LETTER X
+    0x0059: 0x59,       #  LATIN CAPITAL LETTER Y
+    0x005A: 0x5A,       #  LATIN CAPITAL LETTER Z
+    0x005B: 0x5B,       #  LEFT SQUARE BRACKET
+    0x005C: 0x5C,       #  REVERSE SOLIDUS
+    0x005D: 0x5D,       #  RIGHT SQUARE BRACKET
+    0x005E: 0x5E,       #  CIRCUMFLEX ACCENT
+    0x005F: 0x5F,       #  LOW LINE
+    0x0060: 0x60,       #  GRAVE ACCENT
+    0x0061: 0x61,       #  LATIN SMALL LETTER A
+    0x0062: 0x62,       #  LATIN SMALL LETTER B
+    0x0063: 0x63,       #  LATIN SMALL LETTER C
+    0x0064: 0x64,       #  LATIN SMALL LETTER D
+    0x0065: 0x65,       #  LATIN SMALL LETTER E
+    0x0066: 0x66,       #  LATIN SMALL LETTER F
+    0x0067: 0x67,       #  LATIN SMALL LETTER G
+    0x0068: 0x68,       #  LATIN SMALL LETTER H
+    0x0069: 0x69,       #  LATIN SMALL LETTER I
+    0x006A: 0x6A,       #  LATIN SMALL LETTER J
+    0x006B: 0x6B,       #  LATIN SMALL LETTER K
+    0x006C: 0x6C,       #  LATIN SMALL LETTER L
+    0x006D: 0x6D,       #  LATIN SMALL LETTER M
+    0x006E: 0x6E,       #  LATIN SMALL LETTER N
+    0x006F: 0x6F,       #  LATIN SMALL LETTER O
+    0x0070: 0x70,       #  LATIN SMALL LETTER P
+    0x0071: 0x71,       #  LATIN SMALL LETTER Q
+    0x0072: 0x72,       #  LATIN SMALL LETTER R
+    0x0073: 0x73,       #  LATIN SMALL LETTER S
+    0x0074: 0x74,       #  LATIN SMALL LETTER T
+    0x0075: 0x75,       #  LATIN SMALL LETTER U
+    0x0076: 0x76,       #  LATIN SMALL LETTER V
+    0x0077: 0x77,       #  LATIN SMALL LETTER W
+    0x0078: 0x78,       #  LATIN SMALL LETTER X
+    0x0079: 0x79,       #  LATIN SMALL LETTER Y
+    0x007A: 0x7A,       #  LATIN SMALL LETTER Z
+    0x007B: 0x7B,       #  LEFT CURLY BRACKET
+    0x007C: 0x7C,       #  VERTICAL LINE
+    0x007D: 0x7D,       #  RIGHT CURLY BRACKET
+    0x007E: 0x7E,       #  TILDE
+    0x007F: 0x7F,       #  DELETE
+    0x0080: 0x80,       #  <control>
+    0x0081: 0x81,       #  <control>
+    0x0082: 0x82,       #  <control>
+    0x0083: 0x83,       #  <control>
+    0x0084: 0x84,       #  <control>
+    0x0085: 0x85,       #  <control>
+    0x0086: 0x86,       #  <control>
+    0x0087: 0x87,       #  <control>
+    0x0088: 0x88,       #  <control>
+    0x0089: 0x89,       #  <control>
+    0x008A: 0x8A,       #  <control>
+    0x008B: 0x8B,       #  <control>
+    0x008C: 0x8C,       #  <control>
+    0x008D: 0x8D,       #  <control>
+    0x008E: 0x8E,       #  <control>
+    0x008F: 0x8F,       #  <control>
+    0x0090: 0x90,       #  <control>
+    0x0091: 0x91,       #  <control>
+    0x0092: 0x92,       #  <control>
+    0x0093: 0x93,       #  <control>
+    0x0094: 0x94,       #  <control>
+    0x0095: 0x95,       #  <control>
+    0x0096: 0x96,       #  <control>
+    0x0097: 0x97,       #  <control>
+    0x0098: 0x98,       #  <control>
+    0x0099: 0x99,       #  <control>
+    0x009A: 0x9A,       #  <control>
+    0x009B: 0x9B,       #  <control>
+    0x009C: 0x9C,       #  <control>
+    0x009D: 0x9D,       #  <control>
+    0x009E: 0x9E,       #  <control>
+    0x009F: 0x9F,       #  <control>
+    0x0E01: 0xA1,       #  THAI CHARACTER KO KAI
+    0x0E02: 0xA2,       #  THAI CHARACTER KHO KHAI
+    0x0E03: 0xA3,       #  THAI CHARACTER KHO KHUAT
+    0x0E04: 0xA4,       #  THAI CHARACTER KHO KHWAI
+    0x0E05: 0xA5,       #  THAI CHARACTER KHO KHON
+    0x0E06: 0xA6,       #  THAI CHARACTER KHO RAKHANG
+    0x0E07: 0xA7,       #  THAI CHARACTER NGO NGU
+    0x0E08: 0xA8,       #  THAI CHARACTER CHO CHAN
+    0x0E09: 0xA9,       #  THAI CHARACTER CHO CHING
+    0x0E0A: 0xAA,       #  THAI CHARACTER CHO CHANG
+    0x0E0B: 0xAB,       #  THAI CHARACTER SO SO
+    0x0E0C: 0xAC,       #  THAI CHARACTER CHO CHOE
+    0x0E0D: 0xAD,       #  THAI CHARACTER YO YING
+    0x0E0E: 0xAE,       #  THAI CHARACTER DO CHADA
+    0x0E0F: 0xAF,       #  THAI CHARACTER TO PATAK
+    0x0E10: 0xB0,       #  THAI CHARACTER THO THAN
+    0x0E11: 0xB1,       #  THAI CHARACTER THO NANGMONTHO
+    0x0E12: 0xB2,       #  THAI CHARACTER THO PHUTHAO
+    0x0E13: 0xB3,       #  THAI CHARACTER NO NEN
+    0x0E14: 0xB4,       #  THAI CHARACTER DO DEK
+    0x0E15: 0xB5,       #  THAI CHARACTER TO TAO
+    0x0E16: 0xB6,       #  THAI CHARACTER THO THUNG
+    0x0E17: 0xB7,       #  THAI CHARACTER THO THAHAN
+    0x0E18: 0xB8,       #  THAI CHARACTER THO THONG
+    0x0E19: 0xB9,       #  THAI CHARACTER NO NU
+    0x0E1A: 0xBA,       #  THAI CHARACTER BO BAIMAI
+    0x0E1B: 0xBB,       #  THAI CHARACTER PO PLA
+    0x0E1C: 0xBC,       #  THAI CHARACTER PHO PHUNG
+    0x0E1D: 0xBD,       #  THAI CHARACTER FO FA
+    0x0E1E: 0xBE,       #  THAI CHARACTER PHO PHAN
+    0x0E1F: 0xBF,       #  THAI CHARACTER FO FAN
+    0x0E20: 0xC0,       #  THAI CHARACTER PHO SAMPHAO
+    0x0E21: 0xC1,       #  THAI CHARACTER MO MA
+    0x0E22: 0xC2,       #  THAI CHARACTER YO YAK
+    0x0E23: 0xC3,       #  THAI CHARACTER RO RUA
+    0x0E24: 0xC4,       #  THAI CHARACTER RU
+    0x0E25: 0xC5,       #  THAI CHARACTER LO LING
+    0x0E26: 0xC6,       #  THAI CHARACTER LU
+    0x0E27: 0xC7,       #  THAI CHARACTER WO WAEN
+    0x0E28: 0xC8,       #  THAI CHARACTER SO SALA
+    0x0E29: 0xC9,       #  THAI CHARACTER SO RUSI
+    0x0E2A: 0xCA,       #  THAI CHARACTER SO SUA
+    0x0E2B: 0xCB,       #  THAI CHARACTER HO HIP
+    0x0E2C: 0xCC,       #  THAI CHARACTER LO CHULA
+    0x0E2D: 0xCD,       #  THAI CHARACTER O ANG
+    0x0E2E: 0xCE,       #  THAI CHARACTER HO NOKHUK
+    0x0E2F: 0xCF,       #  THAI CHARACTER PAIYANNOI
+    0x0E30: 0xD0,       #  THAI CHARACTER SARA A
+    0x0E31: 0xD1,       #  THAI CHARACTER MAI HAN-AKAT
+    0x0E32: 0xD2,       #  THAI CHARACTER SARA AA
+    0x0E33: 0xD3,       #  THAI CHARACTER SARA AM
+    0x0E34: 0xD4,       #  THAI CHARACTER SARA I
+    0x0E35: 0xD5,       #  THAI CHARACTER SARA II
+    0x0E36: 0xD6,       #  THAI CHARACTER SARA UE
+    0x0E37: 0xD7,       #  THAI CHARACTER SARA UEE
+    0x0E38: 0xD8,       #  THAI CHARACTER SARA U
+    0x0E39: 0xD9,       #  THAI CHARACTER SARA UU
+    0x0E3A: 0xDA,       #  THAI CHARACTER PHINTHU
+    0x0E3F: 0xDF,       #  THAI CURRENCY SYMBOL BAHT
+    0x0E40: 0xE0,       #  THAI CHARACTER SARA E
+    0x0E41: 0xE1,       #  THAI CHARACTER SARA AE
+    0x0E42: 0xE2,       #  THAI CHARACTER SARA O
+    0x0E43: 0xE3,       #  THAI CHARACTER SARA AI MAIMUAN
+    0x0E44: 0xE4,       #  THAI CHARACTER SARA AI MAIMALAI
+    0x0E45: 0xE5,       #  THAI CHARACTER LAKKHANGYAO
+    0x0E46: 0xE6,       #  THAI CHARACTER MAIYAMOK
+    0x0E47: 0xE7,       #  THAI CHARACTER MAITAIKHU
+    0x0E48: 0xE8,       #  THAI CHARACTER MAI EK
+    0x0E49: 0xE9,       #  THAI CHARACTER MAI THO
+    0x0E4A: 0xEA,       #  THAI CHARACTER MAI TRI
+    0x0E4B: 0xEB,       #  THAI CHARACTER MAI CHATTAWA
+    0x0E4C: 0xEC,       #  THAI CHARACTER THANTHAKHAT
+    0x0E4D: 0xED,       #  THAI CHARACTER NIKHAHIT
+    0x0E4E: 0xEE,       #  THAI CHARACTER YAMAKKAN
+    0x0E4F: 0xEF,       #  THAI CHARACTER FONGMAN
+    0x0E50: 0xF0,       #  THAI DIGIT ZERO
+    0x0E51: 0xF1,       #  THAI DIGIT ONE
+    0x0E52: 0xF2,       #  THAI DIGIT TWO
+    0x0E53: 0xF3,       #  THAI DIGIT THREE
+    0x0E54: 0xF4,       #  THAI DIGIT FOUR
+    0x0E55: 0xF5,       #  THAI DIGIT FIVE
+    0x0E56: 0xF6,       #  THAI DIGIT SIX
+    0x0E57: 0xF7,       #  THAI DIGIT SEVEN
+    0x0E58: 0xF8,       #  THAI DIGIT EIGHT
+    0x0E59: 0xF9,       #  THAI DIGIT NINE
+    0x0E5A: 0xFA,       #  THAI CHARACTER ANGKHANKHU
+    0x0E5B: 0xFB,       #  THAI CHARACTER KHOMUT
 }
-

Modified: python/trunk/Lib/test/bad_coding2.py
==============================================================================
--- python/trunk/Lib/test/bad_coding2.py	(original)
+++ python/trunk/Lib/test/bad_coding2.py	Mon Dec 26 00:18:31 2005
@@ -1,2 +1,2 @@
 #coding: utf8
-print '我'
\ No newline at end of file
+print '我'

Modified: python/trunk/Lib/test/test_code.py
==============================================================================
--- python/trunk/Lib/test/test_code.py	(original)
+++ python/trunk/Lib/test/test_code.py	Mon Dec 26 00:18:31 2005
@@ -33,7 +33,7 @@
 ...     b = x - y
 ...     c = a * b
 ...     return c
-... 
+...
 >>> dump(h.func_code)
 name: h
 argcount: 2

Modified: python/trunk/Lib/test/test_exception_variations.py
==============================================================================
--- python/trunk/Lib/test/test_exception_variations.py	(original)
+++ python/trunk/Lib/test/test_exception_variations.py	Mon Dec 26 00:18:31 2005
@@ -1,180 +1,180 @@
-
-from test.test_support import run_unittest
-import unittest
-
-class ExceptionTestCase(unittest.TestCase):
-    def test_try_except_else_finally(self):
-        hit_except = False
-        hit_else = False
-        hit_finally = False
-
-        try:
-            raise Exception, 'nyaa!'
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-        finally:
-            hit_finally = True
-
-        self.assertTrue(hit_except)
-        self.assertTrue(hit_finally)
-        self.assertFalse(hit_else)
-
-    def test_try_except_else_finally_no_exception(self):
-        hit_except = False
-        hit_else = False
-        hit_finally = False
-
-        try:
-            pass
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-        finally:
-            hit_finally = True
-
-        self.assertFalse(hit_except)
-        self.assertTrue(hit_finally)
-        self.assertTrue(hit_else)
-
-    def test_try_except_finally(self):
-        hit_except = False
-        hit_finally = False
-
-        try:
-            raise Exception, 'yarr!'
-        except:
-            hit_except = True
-        finally:
-            hit_finally = True
-            
-        self.assertTrue(hit_except)
-        self.assertTrue(hit_finally)
-
-    def test_try_except_finally_no_exception(self):
-        hit_except = False
-        hit_finally = False
-
-        try:
-            pass
-        except:
-            hit_except = True
-        finally:
-            hit_finally = True
-
-        self.assertFalse(hit_except)
-        self.assertTrue(hit_finally)
-        
-    def test_try_except(self):
-        hit_except = False
-
-        try:
-            raise Exception, 'ahoy!'
-        except:
-            hit_except = True
-
-        self.assertTrue(hit_except)
-
-    def test_try_except_no_exception(self):
-        hit_except = False
-
-        try:
-            pass
-        except:
-            hit_except = True
-
-        self.assertFalse(hit_except)
-
-    def test_try_except_else(self):
-        hit_except = False
-        hit_else = False
-
-        try:
-            raise Exception, 'foo!'
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-
-        self.assertFalse(hit_else)
-        self.assertTrue(hit_except)
-
-    def test_try_except_else_no_exception(self):
-        hit_except = False
-        hit_else = False
-
-        try:
-            pass
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-
-        self.assertFalse(hit_except)
-        self.assertTrue(hit_else)
-
-    def test_try_finally_no_exception(self):
-        hit_finally = False
-
-        try:
-            pass
-        finally:
-            hit_finally = True
-
-        self.assertTrue(hit_finally)
-
-    def test_nested(self):
-        hit_finally = False
-        hit_inner_except = False
-        hit_inner_finally = False
-
-        try:
-            try:
-                raise Exception, 'inner exception'
-            except:
-                hit_inner_except = True
-            finally:
-                hit_inner_finally = True
-        finally:
-            hit_finally = True
-            
-        self.assertTrue(hit_inner_except)
-        self.assertTrue(hit_inner_finally)
-        self.assertTrue(hit_finally)
-
-    def test_nested_else(self):
-        hit_else = False
-        hit_finally = False
-        hit_except = False
-        hit_inner_except = False
-        hit_inner_else = False
-
-        try:
-            try:
-                pass
-            except:
-                hit_inner_except = True
-            else:
-                hit_inner_else = True
-
-            raise Exception, 'outer exception'
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-        finally:
-            hit_finally = True
-
-        self.assertFalse(hit_inner_except)
-        self.assertTrue(hit_inner_else)
-        self.assertFalse(hit_else)
-        self.assertTrue(hit_finally)
-        self.assertTrue(hit_except)
-
-def test_main():
-    run_unittest(ExceptionTestCase)
-
-if __name__ == '__main__':
-    test_main()
+
+from test.test_support import run_unittest
+import unittest
+
+class ExceptionTestCase(unittest.TestCase):
+    def test_try_except_else_finally(self):
+        hit_except = False
+        hit_else = False
+        hit_finally = False
+
+        try:
+            raise Exception, 'nyaa!'
+        except:
+            hit_except = True
+        else:
+            hit_else = True
+        finally:
+            hit_finally = True
+
+        self.assertTrue(hit_except)
+        self.assertTrue(hit_finally)
+        self.assertFalse(hit_else)
+
+    def test_try_except_else_finally_no_exception(self):
+        hit_except = False
+        hit_else = False
+        hit_finally = False
+
+        try:
+            pass
+        except:
+            hit_except = True
+        else:
+            hit_else = True
+        finally:
+            hit_finally = True
+
+        self.assertFalse(hit_except)
+        self.assertTrue(hit_finally)
+        self.assertTrue(hit_else)
+
+    def test_try_except_finally(self):
+        hit_except = False
+        hit_finally = False
+
+        try:
+            raise Exception, 'yarr!'
+        except:
+            hit_except = True
+        finally:
+            hit_finally = True
+
+        self.assertTrue(hit_except)
+        self.assertTrue(hit_finally)
+
+    def test_try_except_finally_no_exception(self):
+        hit_except = False
+        hit_finally = False
+
+        try:
+            pass
+        except:
+            hit_except = True
+        finally:
+            hit_finally = True
+
+        self.assertFalse(hit_except)
+        self.assertTrue(hit_finally)
+
+    def test_try_except(self):
+        hit_except = False
+
+        try:
+            raise Exception, 'ahoy!'
+        except:
+            hit_except = True
+
+        self.assertTrue(hit_except)
+
+    def test_try_except_no_exception(self):
+        hit_except = False
+
+        try:
+            pass
+        except:
+            hit_except = True
+
+        self.assertFalse(hit_except)
+
+    def test_try_except_else(self):
+        hit_except = False
+        hit_else = False
+
+        try:
+            raise Exception, 'foo!'
+        except:
+            hit_except = True
+        else:
+            hit_else = True
+
+        self.assertFalse(hit_else)
+        self.assertTrue(hit_except)
+
+    def test_try_except_else_no_exception(self):
+        hit_except = False
+        hit_else = False
+
+        try:
+            pass
+        except:
+            hit_except = True
+        else:
+            hit_else = True
+
+        self.assertFalse(hit_except)
+        self.assertTrue(hit_else)
+
+    def test_try_finally_no_exception(self):
+        hit_finally = False
+
+        try:
+            pass
+        finally:
+            hit_finally = True
+
+        self.assertTrue(hit_finally)
+
+    def test_nested(self):
+        hit_finally = False
+        hit_inner_except = False
+        hit_inner_finally = False
+
+        try:
+            try:
+                raise Exception, 'inner exception'
+            except:
+                hit_inner_except = True
+            finally:
+                hit_inner_finally = True
+        finally:
+            hit_finally = True
+
+        self.assertTrue(hit_inner_except)
+        self.assertTrue(hit_inner_finally)
+        self.assertTrue(hit_finally)
+
+    def test_nested_else(self):
+        hit_else = False
+        hit_finally = False
+        hit_except = False
+        hit_inner_except = False
+        hit_inner_else = False
+
+        try:
+            try:
+                pass
+            except:
+                hit_inner_except = True
+            else:
+                hit_inner_else = True
+
+            raise Exception, 'outer exception'
+        except:
+            hit_except = True
+        else:
+            hit_else = True
+        finally:
+            hit_finally = True
+
+        self.assertFalse(hit_inner_except)
+        self.assertTrue(hit_inner_else)
+        self.assertFalse(hit_else)
+        self.assertTrue(hit_finally)
+        self.assertTrue(hit_except)
+
+def test_main():
+    run_unittest(ExceptionTestCase)
+
+if __name__ == '__main__':
+    test_main()

Modified: python/trunk/Lib/test/test_generators.py
==============================================================================
--- python/trunk/Lib/test/test_generators.py	(original)
+++ python/trunk/Lib/test/test_generators.py	Mon Dec 26 00:18:31 2005
@@ -774,7 +774,7 @@
 ...         try:
 ...             1//0
 ...         except ZeroDivisionError:
-...             yield 666 
+...             yield 666
 ...         except:
 ...             pass
 ...     finally:

Modified: python/trunk/Lib/test/test_minidom.py
==============================================================================
--- python/trunk/Lib/test/test_minidom.py	(original)
+++ python/trunk/Lib/test/test_minidom.py	Mon Dec 26 00:18:31 2005
@@ -1137,9 +1137,9 @@
     # Check that replacing a child with itself leaves the tree unchanged
     elem.replaceChild(e, e)
     confirm(e.parentNode is elem, "After replaceChild()")
-    
-    
-    
+
+
+
 def testReplaceWholeText():
     def setup():
         doc = parseString("<doc>a<e/>d</doc>")

Modified: python/trunk/Lib/test/test_poll.py
==============================================================================
--- python/trunk/Lib/test/test_poll.py	(original)
+++ python/trunk/Lib/test/test_poll.py	Mon Dec 26 00:18:31 2005
@@ -185,7 +185,7 @@
     if x != 5:
         print 'Overflow must have occurred'
     print 'Poll test 3 complete'
-    
+
 
 test_poll1()
 test_poll2()

Modified: python/trunk/Lib/test/test_quopri.py
==============================================================================
--- python/trunk/Lib/test/test_quopri.py	(original)
+++ python/trunk/Lib/test/test_quopri.py	Mon Dec 26 00:18:31 2005
@@ -175,18 +175,18 @@
             self.assert_(quopri.decodestring(e, header=True) == p)
 
     def test_scriptencode(self):
-       (p, e) = self.STRINGS[-1]
-       (cin, cout) = os.popen2("%s -mquopri" % sys.executable)
-       cin.write(p)
-       cin.close()
-       self.assert_(cout.read() == e)
+        (p, e) = self.STRINGS[-1]
+        (cin, cout) = os.popen2("%s -mquopri" % sys.executable)
+        cin.write(p)
+        cin.close()
+        self.assert_(cout.read() == e)
 
     def test_scriptdecode(self):
-       (p, e) = self.STRINGS[-1]
-       (cin, cout) = os.popen2("%s -mquopri -d" % sys.executable)
-       cin.write(e)
-       cin.close()
-       self.assert_(cout.read() == p)
+        (p, e) = self.STRINGS[-1]
+        (cin, cout) = os.popen2("%s -mquopri -d" % sys.executable)
+        cin.write(e)
+        cin.close()
+        self.assert_(cout.read() == p)
 
 def test_main():
     test_support.run_unittest(QuopriTestCase)

Modified: python/trunk/Lib/test/test_xmlrpc.py
==============================================================================
--- python/trunk/Lib/test/test_xmlrpc.py	(original)
+++ python/trunk/Lib/test/test_xmlrpc.py	Mon Dec 26 00:18:31 2005
@@ -78,7 +78,7 @@
 
     def test_bug_1164912 (self):
         d = xmlrpclib.DateTime()
-        ((new_d,), dummy) = xmlrpclib.loads(xmlrpclib.dumps((d,), 
+        ((new_d,), dummy) = xmlrpclib.loads(xmlrpclib.dumps((d,),
                                             methodresponse=True))
         self.assert_(isinstance(new_d.value, str))
 

Modified: python/trunk/Lib/webbrowser.py
==============================================================================
--- python/trunk/Lib/webbrowser.py	(original)
+++ python/trunk/Lib/webbrowser.py	Mon Dec 26 00:18:31 2005
@@ -96,7 +96,7 @@
 if sys.platform[:3] == "win":
     def _isexecutable(cmd):
         cmd = cmd.lower()
-        if os.path.isfile(cmd) and (cmd.endswith(".exe") or 
+        if os.path.isfile(cmd) and (cmd.endswith(".exe") or
                                     cmd.endswith(".bat")):
             return True
         for ext in ".exe", ".bat":
@@ -134,7 +134,7 @@
     def __init__(self, name=""):
         self.name = name
         self.basename = name
-    
+
     def open(self, url, new=0, autoraise=1):
         raise NotImplementedError
 

Modified: python/trunk/Lib/xmlcore/etree/ElementInclude.py
==============================================================================
--- python/trunk/Lib/xmlcore/etree/ElementInclude.py	(original)
+++ python/trunk/Lib/xmlcore/etree/ElementInclude.py	Mon Dec 26 00:18:31 2005
@@ -141,4 +141,3 @@
         else:
             include(e, loader)
         i = i + 1
-

Modified: python/trunk/Lib/xmlcore/etree/ElementPath.py
==============================================================================
--- python/trunk/Lib/xmlcore/etree/ElementPath.py	(original)
+++ python/trunk/Lib/xmlcore/etree/ElementPath.py	Mon Dec 26 00:18:31 2005
@@ -196,4 +196,3 @@
 
 def findall(element, path):
     return _compile(path).findall(element)
-

Modified: python/trunk/Parser/asdl.py
==============================================================================
--- python/trunk/Parser/asdl.py	(original)
+++ python/trunk/Parser/asdl.py	Mon Dec 26 00:18:31 2005
@@ -142,7 +142,7 @@
     def p_product(self, (_0, fields, _1)):
         " product ::= ( fields ) "
         # XXX can't I just construct things in the right order?
-        fields.reverse() 
+        fields.reverse()
         return Product(fields)
 
     def p_sum_0(self, (constructor,)):
@@ -164,7 +164,7 @@
     def p_constructor_1(self, (id, _0, fields, _1)):
         " constructor ::= Id ( fields ) "
         # XXX can't I just construct things in the right order?
-        fields.reverse() 
+        fields.reverse()
         return Constructor(id, fields)
 
     def p_fields_0(self, (field,)):
@@ -355,7 +355,7 @@
             v.errors += 1
             uses = ", ".join(v.types[t])
             print "Undefined type %s, used in %s" % (t, uses)
-    
+
     return not v.errors
 
 def parse(file):
@@ -380,7 +380,7 @@
     else:
         testdir = "tests"
         files = glob.glob(testdir + "/*.asdl")
-    
+
     for file in files:
         print file
         mod = parse(file)

Modified: python/trunk/Parser/asdl_c.py
==============================================================================
--- python/trunk/Parser/asdl_c.py	(original)
+++ python/trunk/Parser/asdl_c.py	Mon Dec 26 00:18:31 2005
@@ -439,7 +439,7 @@
         self.emit("", 0)
         self.emit("free(o);", 1)
         self.func_end()
-        
+
     def visitConstructor(self, cons, enum, name):
         self.emit("case %s_kind:" % cons.name, 1)
         for f in cons.fields:
@@ -487,76 +487,76 @@
         else:
             ctype = get_c_type(field.type)
             self.emit("free_%s((%s)%s);" % (field.type, ctype, value), depth)
-        
+
 
 class MarshalUtilVisitor(StaticVisitor):
 
     CODE = '''
 #define CHECKSIZE(BUF, OFF, MIN) { \\
-	int need = *(OFF) + MIN; \\
-	if (need >= PyString_GET_SIZE(*(BUF))) { \\
-		int newsize = PyString_GET_SIZE(*(BUF)) * 2; \\
-		if (newsize < need) \\
-			newsize = need; \\
-		if (_PyString_Resize((BUF), newsize) < 0) \\
-			return 0; \\
-	} \\
-} 
+        int need = *(OFF) + MIN; \\
+        if (need >= PyString_GET_SIZE(*(BUF))) { \\
+                int newsize = PyString_GET_SIZE(*(BUF)) * 2; \\
+                if (newsize < need) \\
+                        newsize = need; \\
+                if (_PyString_Resize((BUF), newsize) < 0) \\
+                        return 0; \\
+        } \\
+}
 
-static int 
+static int
 marshal_write_int(PyObject **buf, int *offset, int x)
 {
-	char *s;
+        char *s;
 
-	CHECKSIZE(buf, offset, 4)
-	s = PyString_AS_STRING(*buf) + (*offset);
-	s[0] = (x & 0xff);
-	s[1] = (x >> 8) & 0xff;
-	s[2] = (x >> 16) & 0xff;
-	s[3] = (x >> 24) & 0xff;
-	*offset += 4;
-	return 1;
+        CHECKSIZE(buf, offset, 4)
+        s = PyString_AS_STRING(*buf) + (*offset);
+        s[0] = (x & 0xff);
+        s[1] = (x >> 8) & 0xff;
+        s[2] = (x >> 16) & 0xff;
+        s[3] = (x >> 24) & 0xff;
+        *offset += 4;
+        return 1;
 }
 
-static int 
+static int
 marshal_write_bool(PyObject **buf, int *offset, bool b)
 {
-	if (b)
-		marshal_write_int(buf, offset, 1);
-	else
-		marshal_write_int(buf, offset, 0);
-	return 1;
+        if (b)
+                marshal_write_int(buf, offset, 1);
+        else
+                marshal_write_int(buf, offset, 0);
+        return 1;
 }
 
-static int 
+static int
 marshal_write_identifier(PyObject **buf, int *offset, identifier id)
 {
-	int l = PyString_GET_SIZE(id);
-	marshal_write_int(buf, offset, l);
-	CHECKSIZE(buf, offset, l);
-	memcpy(PyString_AS_STRING(*buf) + *offset,
-	       PyString_AS_STRING(id), l);
-	*offset += l;
-	return 1;
+        int l = PyString_GET_SIZE(id);
+        marshal_write_int(buf, offset, l);
+        CHECKSIZE(buf, offset, l);
+        memcpy(PyString_AS_STRING(*buf) + *offset,
+               PyString_AS_STRING(id), l);
+        *offset += l;
+        return 1;
 }
 
-static int 
+static int
 marshal_write_string(PyObject **buf, int *offset, string s)
 {
-	int len = PyString_GET_SIZE(s);
-	marshal_write_int(buf, offset, len);
-	CHECKSIZE(buf, offset, len);
-	memcpy(PyString_AS_STRING(*buf) + *offset,
-	       PyString_AS_STRING(s), len);
-	*offset += len;
-	return 1;
+        int len = PyString_GET_SIZE(s);
+        marshal_write_int(buf, offset, len);
+        CHECKSIZE(buf, offset, len);
+        memcpy(PyString_AS_STRING(*buf) + *offset,
+               PyString_AS_STRING(s), len);
+        *offset += len;
+        return 1;
 }
 
-static int 
+static int
 marshal_write_object(PyObject **buf, int *offset, object s)
 {
-	/* XXX */
-	return 0;
+        /* XXX */
+        return 0;
 }
 '''
 
@@ -575,7 +575,7 @@
         self.emit("return 1;", 1)
         self.emit("}", 0)
         self.emit("", 0)
-    
+
     def visitSum(self, sum, name):
         self.func_begin(name, has_sequence(sum.types, False))
         simple = is_simple(sum)
@@ -594,7 +594,7 @@
         for field in prod.fields:
             self.visitField(field, name, 1, 1)
         self.func_end()
-            
+
     def visitConstructor(self, cons, enum, name, simple):
         if simple:
             self.emit("case %s:" % cons.name, 1)

Modified: python/trunk/Parser/spark.py
==============================================================================
--- python/trunk/Parser/spark.py	(original)
+++ python/trunk/Parser/spark.py	Mon Dec 26 00:18:31 2005
@@ -1,5 +1,5 @@
 #  Copyright (c) 1998-2002 John Aycock
-#  
+#
 #  Permission is hereby granted, free of charge, to any person obtaining
 #  a copy of this software and associated documentation files (the
 #  "Software"), to deal in the Software without restriction, including
@@ -7,10 +7,10 @@
 #  distribute, sublicense, and/or sell copies of the Software, and to
 #  permit persons to whom the Software is furnished to do so, subject to
 #  the following conditions:
-#  
+#
 #  The above copyright notice and this permission notice shall be
 #  included in all copies or substantial portions of the Software.
-#  
+#
 #  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 #  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 #  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -26,651 +26,651 @@
 import string
 
 def _namelist(instance):
-	namelist, namedict, classlist = [], {}, [instance.__class__]
-	for c in classlist:
-		for b in c.__bases__:
-			classlist.append(b)
-		for name in c.__dict__.keys():
-			if not namedict.has_key(name):
-				namelist.append(name)
-				namedict[name] = 1
-	return namelist
+    namelist, namedict, classlist = [], {}, [instance.__class__]
+    for c in classlist:
+        for b in c.__bases__:
+            classlist.append(b)
+        for name in c.__dict__.keys():
+            if not namedict.has_key(name):
+                namelist.append(name)
+                namedict[name] = 1
+    return namelist
 
 class GenericScanner:
-	def __init__(self, flags=0):
-		pattern = self.reflect()
-		self.re = re.compile(pattern, re.VERBOSE|flags)
-
-		self.index2func = {}
-		for name, number in self.re.groupindex.items():
-			self.index2func[number-1] = getattr(self, 't_' + name)
-
-	def makeRE(self, name):
-		doc = getattr(self, name).__doc__
-		rv = '(?P<%s>%s)' % (name[2:], doc)
-		return rv
-
-	def reflect(self):
-		rv = []
-		for name in _namelist(self):
-			if name[:2] == 't_' and name != 't_default':
-				rv.append(self.makeRE(name))
-
-		rv.append(self.makeRE('t_default'))
-		return string.join(rv, '|')
-
-	def error(self, s, pos):
-		print "Lexical error at position %s" % pos
-		raise SystemExit
-
-	def tokenize(self, s):
-		pos = 0
-		n = len(s)
-		while pos < n:
-			m = self.re.match(s, pos)
-			if m is None:
-				self.error(s, pos)
-
-			groups = m.groups()
-			for i in range(len(groups)):
-				if groups[i] and self.index2func.has_key(i):
-					self.index2func[i](groups[i])
-			pos = m.end()
-
-	def t_default(self, s):
-		r'( . | \n )+'
-		print "Specification error: unmatched input"
-		raise SystemExit
+    def __init__(self, flags=0):
+        pattern = self.reflect()
+        self.re = re.compile(pattern, re.VERBOSE|flags)
+
+        self.index2func = {}
+        for name, number in self.re.groupindex.items():
+            self.index2func[number-1] = getattr(self, 't_' + name)
+
+    def makeRE(self, name):
+        doc = getattr(self, name).__doc__
+        rv = '(?P<%s>%s)' % (name[2:], doc)
+        return rv
+
+    def reflect(self):
+        rv = []
+        for name in _namelist(self):
+            if name[:2] == 't_' and name != 't_default':
+                rv.append(self.makeRE(name))
+
+        rv.append(self.makeRE('t_default'))
+        return string.join(rv, '|')
+
+    def error(self, s, pos):
+        print "Lexical error at position %s" % pos
+        raise SystemExit
+
+    def tokenize(self, s):
+        pos = 0
+        n = len(s)
+        while pos < n:
+            m = self.re.match(s, pos)
+            if m is None:
+                self.error(s, pos)
+
+            groups = m.groups()
+            for i in range(len(groups)):
+                if groups[i] and self.index2func.has_key(i):
+                    self.index2func[i](groups[i])
+            pos = m.end()
+
+    def t_default(self, s):
+        r'( . | \n )+'
+        print "Specification error: unmatched input"
+        raise SystemExit
 
 #
 #  Extracted from GenericParser and made global so that [un]picking works.
 #
 class _State:
-	def __init__(self, stateno, items):
-		self.T, self.complete, self.items = [], [], items
-		self.stateno = stateno
+    def __init__(self, stateno, items):
+        self.T, self.complete, self.items = [], [], items
+        self.stateno = stateno
 
 class GenericParser:
-	#
-	#  An Earley parser, as per J. Earley, "An Efficient Context-Free
-	#  Parsing Algorithm", CACM 13(2), pp. 94-102.  Also J. C. Earley,
-	#  "An Efficient Context-Free Parsing Algorithm", Ph.D. thesis,
-	#  Carnegie-Mellon University, August 1968.  New formulation of
-	#  the parser according to J. Aycock, "Practical Earley Parsing
-	#  and the SPARK Toolkit", Ph.D. thesis, University of Victoria,
-	#  2001, and J. Aycock and R. N. Horspool, "Practical Earley
-	#  Parsing", unpublished paper, 2001.
-	#
-
-	def __init__(self, start):
-		self.rules = {}
-		self.rule2func = {}
-		self.rule2name = {}
-		self.collectRules()
-		self.augment(start)
-		self.ruleschanged = 1
-
-	_NULLABLE = '\e_'
-	_START = 'START'
-	_BOF = '|-'
-
-	#
-	#  When pickling, take the time to generate the full state machine;
-	#  some information is then extraneous, too.  Unfortunately we
-	#  can't save the rule2func map.
-	#
-	def __getstate__(self):
-		if self.ruleschanged:
-			#
-			#  XXX - duplicated from parse()
-			#
-			self.computeNull()
-			self.newrules = {}
-			self.new2old = {}
-			self.makeNewRules()
-			self.ruleschanged = 0
-			self.edges, self.cores = {}, {}
-			self.states = { 0: self.makeState0() }
-			self.makeState(0, self._BOF)
-		#
-		#  XXX - should find a better way to do this..
-		#
-		changes = 1
-		while changes:
-			changes = 0
-			for k, v in self.edges.items():
-				if v is None:
-					state, sym = k
-					if self.states.has_key(state):
-						self.goto(state, sym)
-						changes = 1
-		rv = self.__dict__.copy()
-		for s in self.states.values():
-			del s.items
-		del rv['rule2func']
-		del rv['nullable']
-		del rv['cores']
-		return rv
-
-	def __setstate__(self, D):
-		self.rules = {}
-		self.rule2func = {}
-		self.rule2name = {}
-		self.collectRules()
-		start = D['rules'][self._START][0][1][1]	# Blech.
-		self.augment(start)
-		D['rule2func'] = self.rule2func
-		D['makeSet'] = self.makeSet_fast
-		self.__dict__ = D
-
-	#
-	#  A hook for GenericASTBuilder and GenericASTMatcher.  Mess
-	#  thee not with this; nor shall thee toucheth the _preprocess
-	#  argument to addRule.
-	#
-	def preprocess(self, rule, func):	return rule, func
-
-	def addRule(self, doc, func, _preprocess=1):
-		fn = func
-		rules = string.split(doc)
-
-		index = []
-		for i in range(len(rules)):
-			if rules[i] == '::=':
-				index.append(i-1)
-		index.append(len(rules))
-
-		for i in range(len(index)-1):
-			lhs = rules[index[i]]
-			rhs = rules[index[i]+2:index[i+1]]
-			rule = (lhs, tuple(rhs))
-
-			if _preprocess:
-				rule, fn = self.preprocess(rule, func)
-
-			if self.rules.has_key(lhs):
-				self.rules[lhs].append(rule)
-			else:
-				self.rules[lhs] = [ rule ]
-			self.rule2func[rule] = fn
-			self.rule2name[rule] = func.__name__[2:]
-		self.ruleschanged = 1
-
-	def collectRules(self):
-		for name in _namelist(self):
-			if name[:2] == 'p_':
-				func = getattr(self, name)
-				doc = func.__doc__
-				self.addRule(doc, func)
-
-	def augment(self, start):
-		rule = '%s ::= %s %s' % (self._START, self._BOF, start)
-		self.addRule(rule, lambda args: args[1], 0)
-
-	def computeNull(self):
-		self.nullable = {}
-		tbd = []
-
-		for rulelist in self.rules.values():
-			lhs = rulelist[0][0]
-			self.nullable[lhs] = 0
-			for rule in rulelist:
-				rhs = rule[1]
-				if len(rhs) == 0:
-					self.nullable[lhs] = 1
-					continue
-				#
-				#  We only need to consider rules which
-				#  consist entirely of nonterminal symbols.
-				#  This should be a savings on typical
-				#  grammars.
-				#
-				for sym in rhs:
-					if not self.rules.has_key(sym):
-						break
-				else:
-					tbd.append(rule)
-		changes = 1
-		while changes:
-			changes = 0
-			for lhs, rhs in tbd:
-				if self.nullable[lhs]:
-					continue
-				for sym in rhs:
-					if not self.nullable[sym]:
-						break
-				else:
-					self.nullable[lhs] = 1
-					changes = 1
-
-	def makeState0(self):
-		s0 = _State(0, [])
-		for rule in self.newrules[self._START]:
-			s0.items.append((rule, 0))
-		return s0
-
-	def finalState(self, tokens):
-		#
-		#  Yuck.
-		#
-		if len(self.newrules[self._START]) == 2 and len(tokens) == 0:
-			return 1
-		start = self.rules[self._START][0][1][1]
-		return self.goto(1, start)
-
-	def makeNewRules(self):
-		worklist = []
-		for rulelist in self.rules.values():
-			for rule in rulelist:
-				worklist.append((rule, 0, 1, rule))
-
-		for rule, i, candidate, oldrule in worklist:
-			lhs, rhs = rule
-			n = len(rhs)
-			while i < n:
-				sym = rhs[i]
-				if not self.rules.has_key(sym) or \
-				   not self.nullable[sym]:
-					candidate = 0
-					i = i + 1
-					continue
-
-				newrhs = list(rhs)
-				newrhs[i] = self._NULLABLE+sym
-				newrule = (lhs, tuple(newrhs))
-				worklist.append((newrule, i+1,
-						 candidate, oldrule))
-				candidate = 0
-				i = i + 1
-			else:
-				if candidate:
-					lhs = self._NULLABLE+lhs
-					rule = (lhs, rhs)
-				if self.newrules.has_key(lhs):
-					self.newrules[lhs].append(rule)
-				else:
-					self.newrules[lhs] = [ rule ]
-				self.new2old[rule] = oldrule
-	
-	def typestring(self, token):
-		return None
-
-	def error(self, token):
-		print "Syntax error at or near `%s' token" % token
-		raise SystemExit
-
-	def parse(self, tokens):
-		sets = [ [(1,0), (2,0)] ]
-		self.links = {}
-		
-		if self.ruleschanged:
-			self.computeNull()
-			self.newrules = {}
-			self.new2old = {}
-			self.makeNewRules()
-			self.ruleschanged = 0
-			self.edges, self.cores = {}, {}
-			self.states = { 0: self.makeState0() }
-			self.makeState(0, self._BOF)
-
-		for i in xrange(len(tokens)):
-			sets.append([])
-
-			if sets[i] == []:
-				break				
-			self.makeSet(tokens[i], sets, i)
-		else:
-			sets.append([])
-			self.makeSet(None, sets, len(tokens))
-
-		#_dump(tokens, sets, self.states)
-
-		finalitem = (self.finalState(tokens), 0)
-		if finalitem not in sets[-2]:
-			if len(tokens) > 0:
-				self.error(tokens[i-1])
-			else:
-				self.error(None)
-
-		return self.buildTree(self._START, finalitem,
-				      tokens, len(sets)-2)
-
-	def isnullable(self, sym):
-		#
-		#  For symbols in G_e only.  If we weren't supporting 1.5,
-		#  could just use sym.startswith().
-		#
-		return self._NULLABLE == sym[0:len(self._NULLABLE)]
-
-	def skip(self, (lhs, rhs), pos=0):
-		n = len(rhs)
-		while pos < n:
-			if not self.isnullable(rhs[pos]):
-				break
-			pos = pos + 1
-		return pos
-
-	def makeState(self, state, sym):
-		assert sym is not None
-		#
-		#  Compute \epsilon-kernel state's core and see if
-		#  it exists already.
-		#
-		kitems = []
-		for rule, pos in self.states[state].items:
-			lhs, rhs = rule
-			if rhs[pos:pos+1] == (sym,):
-				kitems.append((rule, self.skip(rule, pos+1)))
-		core = kitems
-
-		core.sort()
-		tcore = tuple(core)
-		if self.cores.has_key(tcore):
-			return self.cores[tcore]
-		#
-		#  Nope, doesn't exist.  Compute it and the associated
-		#  \epsilon-nonkernel state together; we'll need it right away.
-		#
-		k = self.cores[tcore] = len(self.states)
-		K, NK = _State(k, kitems), _State(k+1, [])
-		self.states[k] = K
-		predicted = {}
-
-		edges = self.edges
-		rules = self.newrules
-		for X in K, NK:
-			worklist = X.items
-			for item in worklist:
-				rule, pos = item
-				lhs, rhs = rule
-				if pos == len(rhs):
-					X.complete.append(rule)
-					continue
-
-				nextSym = rhs[pos]
-				key = (X.stateno, nextSym)
-				if not rules.has_key(nextSym):
-					if not edges.has_key(key):
-						edges[key] = None
-						X.T.append(nextSym)
-				else:
-					edges[key] = None
-					if not predicted.has_key(nextSym):
-						predicted[nextSym] = 1
-						for prule in rules[nextSym]:
-							ppos = self.skip(prule)
-							new = (prule, ppos)
-							NK.items.append(new)
-			#
-			#  Problem: we know K needs generating, but we
-			#  don't yet know about NK.  Can't commit anything
-			#  regarding NK to self.edges until we're sure.  Should
-			#  we delay committing on both K and NK to avoid this
-			#  hacky code?  This creates other problems..
-			#
-			if X is K:
-				edges = {}
-
-		if NK.items == []:
-			return k
-
-		#
-		#  Check for \epsilon-nonkernel's core.  Unfortunately we
-		#  need to know the entire set of predicted nonterminals
-		#  to do this without accidentally duplicating states.
-		#
-		core = predicted.keys()
-		core.sort()
-		tcore = tuple(core)
-		if self.cores.has_key(tcore):
-			self.edges[(k, None)] = self.cores[tcore]
-			return k
-
-		nk = self.cores[tcore] = self.edges[(k, None)] = NK.stateno
-		self.edges.update(edges)
-		self.states[nk] = NK
-		return k
-
-	def goto(self, state, sym):
-		key = (state, sym)
-		if not self.edges.has_key(key):
-			#
-			#  No transitions from state on sym.
-			#
-			return None
-
-		rv = self.edges[key]
-		if rv is None:
-			#
-			#  Target state isn't generated yet.  Remedy this.
-			#
-			rv = self.makeState(state, sym)
-			self.edges[key] = rv
-		return rv
-
-	def gotoT(self, state, t):
-		return [self.goto(state, t)]
-
-	def gotoST(self, state, st):
-		rv = []
-		for t in self.states[state].T:
-			if st == t:
-				rv.append(self.goto(state, t))
-		return rv
-
-	def add(self, set, item, i=None, predecessor=None, causal=None):
-		if predecessor is None:
-			if item not in set:
-				set.append(item)
-		else:
-			key = (item, i)
-			if item not in set:
-				self.links[key] = []
-				set.append(item)
-			self.links[key].append((predecessor, causal))
-
-	def makeSet(self, token, sets, i):
-		cur, next = sets[i], sets[i+1]
-
-		ttype = token is not None and self.typestring(token) or None
-		if ttype is not None:
-			fn, arg = self.gotoT, ttype
-		else:
-			fn, arg = self.gotoST, token
-
-		for item in cur:
-			ptr = (item, i)
-			state, parent = item
-			add = fn(state, arg)
-			for k in add:
-				if k is not None:
-					self.add(next, (k, parent), i+1, ptr)
-					nk = self.goto(k, None)
-					if nk is not None:
-						self.add(next, (nk, i+1))
-
-			if parent == i:
-				continue
-
-			for rule in self.states[state].complete:
-				lhs, rhs = rule
-				for pitem in sets[parent]:
-					pstate, pparent = pitem
-					k = self.goto(pstate, lhs)
-					if k is not None:
-						why = (item, i, rule)
-						pptr = (pitem, parent)
-						self.add(cur, (k, pparent),
-							 i, pptr, why)
-						nk = self.goto(k, None)
-						if nk is not None:
-							self.add(cur, (nk, i))
-
-	def makeSet_fast(self, token, sets, i):
-		#
-		#  Call *only* when the entire state machine has been built!
-		#  It relies on self.edges being filled in completely, and
-		#  then duplicates and inlines code to boost speed at the
-		#  cost of extreme ugliness.
-		#
-		cur, next = sets[i], sets[i+1]
-		ttype = token is not None and self.typestring(token) or None
-
-		for item in cur:
-			ptr = (item, i)
-			state, parent = item
-			if ttype is not None:
-				k = self.edges.get((state, ttype), None)
-				if k is not None:
-					#self.add(next, (k, parent), i+1, ptr)
-					#INLINED --v
-					new = (k, parent)
-					key = (new, i+1)
-					if new not in next:
-						self.links[key] = []
-						next.append(new)
-					self.links[key].append((ptr, None))
-					#INLINED --^
-					#nk = self.goto(k, None)
-					nk = self.edges.get((k, None), None)
-					if nk is not None:
-						#self.add(next, (nk, i+1))
-						#INLINED --v
-						new = (nk, i+1)
-						if new not in next:
-							next.append(new)
-						#INLINED --^
-			else:
-				add = self.gotoST(state, token)
-				for k in add:
-					if k is not None:
-						self.add(next, (k, parent), i+1, ptr)
-						#nk = self.goto(k, None)
-						nk = self.edges.get((k, None), None)
-						if nk is not None:
-							self.add(next, (nk, i+1))
-
-			if parent == i:
-				continue
-
-			for rule in self.states[state].complete:
-				lhs, rhs = rule
-				for pitem in sets[parent]:
-					pstate, pparent = pitem
-					#k = self.goto(pstate, lhs)
-					k = self.edges.get((pstate, lhs), None)
-					if k is not None:
-						why = (item, i, rule)
-						pptr = (pitem, parent)
-						#self.add(cur, (k, pparent),
-						#	 i, pptr, why)
-						#INLINED --v
-						new = (k, pparent)
-						key = (new, i)
-						if new not in cur:
-							self.links[key] = []
-							cur.append(new)
-						self.links[key].append((pptr, why))
-						#INLINED --^
-						#nk = self.goto(k, None)
-						nk = self.edges.get((k, None), None)
-						if nk is not None:
-							#self.add(cur, (nk, i))
-							#INLINED --v
-							new = (nk, i)
-							if new not in cur:
-								cur.append(new)
-							#INLINED --^
-
-	def predecessor(self, key, causal):
-		for p, c in self.links[key]:
-			if c == causal:
-				return p
-		assert 0
-
-	def causal(self, key):
-		links = self.links[key]
-		if len(links) == 1:
-			return links[0][1]
-		choices = []
-		rule2cause = {}
-		for p, c in links:
-			rule = c[2]
-			choices.append(rule)
-			rule2cause[rule] = c
-		return rule2cause[self.ambiguity(choices)]
-
-	def deriveEpsilon(self, nt):
-		if len(self.newrules[nt]) > 1:
-			rule = self.ambiguity(self.newrules[nt])
-		else:
-			rule = self.newrules[nt][0]
-		#print rule
-
-		rhs = rule[1]
-		attr = [None] * len(rhs)
-
-		for i in range(len(rhs)-1, -1, -1):
-			attr[i] = self.deriveEpsilon(rhs[i])
-		return self.rule2func[self.new2old[rule]](attr)
-
-	def buildTree(self, nt, item, tokens, k):
-		state, parent = item
-
-		choices = []
-		for rule in self.states[state].complete:
-			if rule[0] == nt:
-				choices.append(rule)
-		rule = choices[0]
-		if len(choices) > 1:
-			rule = self.ambiguity(choices)
-		#print rule
-
-		rhs = rule[1]
-		attr = [None] * len(rhs)
-
-		for i in range(len(rhs)-1, -1, -1):
-			sym = rhs[i]
-			if not self.newrules.has_key(sym):
-				if sym != self._BOF:
-					attr[i] = tokens[k-1]
-					key = (item, k)
-					item, k = self.predecessor(key, None)
-			#elif self.isnullable(sym):
-			elif self._NULLABLE == sym[0:len(self._NULLABLE)]:
-				attr[i] = self.deriveEpsilon(sym)
-			else:
-				key = (item, k)
-				why = self.causal(key)
-				attr[i] = self.buildTree(sym, why[0],
-							 tokens, why[1])
-				item, k = self.predecessor(key, why)
-		return self.rule2func[self.new2old[rule]](attr)
-
-	def ambiguity(self, rules):
-		#
-		#  XXX - problem here and in collectRules() if the same rule
-		#	 appears in >1 method.  Also undefined results if rules
-		#	 causing the ambiguity appear in the same method.
-		#
-		sortlist = []
-		name2index = {}
-		for i in range(len(rules)):
-			lhs, rhs = rule = rules[i]
-			name = self.rule2name[self.new2old[rule]]
-			sortlist.append((len(rhs), name))
-			name2index[name] = i
-		sortlist.sort()
-		list = map(lambda (a,b): b, sortlist)
-		return rules[name2index[self.resolve(list)]]
-
-	def resolve(self, list):
-		#
-		#  Resolve ambiguity in favor of the shortest RHS.
-		#  Since we walk the tree from the top down, this
-		#  should effectively resolve in favor of a "shift".
-		#
-		return list[0]
+    #
+    #  An Earley parser, as per J. Earley, "An Efficient Context-Free
+    #  Parsing Algorithm", CACM 13(2), pp. 94-102.  Also J. C. Earley,
+    #  "An Efficient Context-Free Parsing Algorithm", Ph.D. thesis,
+    #  Carnegie-Mellon University, August 1968.  New formulation of
+    #  the parser according to J. Aycock, "Practical Earley Parsing
+    #  and the SPARK Toolkit", Ph.D. thesis, University of Victoria,
+    #  2001, and J. Aycock and R. N. Horspool, "Practical Earley
+    #  Parsing", unpublished paper, 2001.
+    #
+
+    def __init__(self, start):
+        self.rules = {}
+        self.rule2func = {}
+        self.rule2name = {}
+        self.collectRules()
+        self.augment(start)
+        self.ruleschanged = 1
+
+    _NULLABLE = '\e_'
+    _START = 'START'
+    _BOF = '|-'
+
+    #
+    #  When pickling, take the time to generate the full state machine;
+    #  some information is then extraneous, too.  Unfortunately we
+    #  can't save the rule2func map.
+    #
+    def __getstate__(self):
+        if self.ruleschanged:
+            #
+            #  XXX - duplicated from parse()
+            #
+            self.computeNull()
+            self.newrules = {}
+            self.new2old = {}
+            self.makeNewRules()
+            self.ruleschanged = 0
+            self.edges, self.cores = {}, {}
+            self.states = { 0: self.makeState0() }
+            self.makeState(0, self._BOF)
+        #
+        #  XXX - should find a better way to do this..
+        #
+        changes = 1
+        while changes:
+            changes = 0
+            for k, v in self.edges.items():
+                if v is None:
+                    state, sym = k
+                    if self.states.has_key(state):
+                        self.goto(state, sym)
+                        changes = 1
+        rv = self.__dict__.copy()
+        for s in self.states.values():
+            del s.items
+        del rv['rule2func']
+        del rv['nullable']
+        del rv['cores']
+        return rv
+
+    def __setstate__(self, D):
+        self.rules = {}
+        self.rule2func = {}
+        self.rule2name = {}
+        self.collectRules()
+        start = D['rules'][self._START][0][1][1]        # Blech.
+        self.augment(start)
+        D['rule2func'] = self.rule2func
+        D['makeSet'] = self.makeSet_fast
+        self.__dict__ = D
+
+    #
+    #  A hook for GenericASTBuilder and GenericASTMatcher.  Mess
+    #  thee not with this; nor shall thee toucheth the _preprocess
+    #  argument to addRule.
+    #
+    def preprocess(self, rule, func):       return rule, func
+
+    def addRule(self, doc, func, _preprocess=1):
+        fn = func
+        rules = string.split(doc)
+
+        index = []
+        for i in range(len(rules)):
+            if rules[i] == '::=':
+                index.append(i-1)
+        index.append(len(rules))
+
+        for i in range(len(index)-1):
+            lhs = rules[index[i]]
+            rhs = rules[index[i]+2:index[i+1]]
+            rule = (lhs, tuple(rhs))
+
+            if _preprocess:
+                rule, fn = self.preprocess(rule, func)
+
+            if self.rules.has_key(lhs):
+                self.rules[lhs].append(rule)
+            else:
+                self.rules[lhs] = [ rule ]
+            self.rule2func[rule] = fn
+            self.rule2name[rule] = func.__name__[2:]
+        self.ruleschanged = 1
+
+    def collectRules(self):
+        for name in _namelist(self):
+            if name[:2] == 'p_':
+                func = getattr(self, name)
+                doc = func.__doc__
+                self.addRule(doc, func)
+
+    def augment(self, start):
+        rule = '%s ::= %s %s' % (self._START, self._BOF, start)
+        self.addRule(rule, lambda args: args[1], 0)
+
+    def computeNull(self):
+        self.nullable = {}
+        tbd = []
+
+        for rulelist in self.rules.values():
+            lhs = rulelist[0][0]
+            self.nullable[lhs] = 0
+            for rule in rulelist:
+                rhs = rule[1]
+                if len(rhs) == 0:
+                    self.nullable[lhs] = 1
+                    continue
+                #
+                #  We only need to consider rules which
+                #  consist entirely of nonterminal symbols.
+                #  This should be a savings on typical
+                #  grammars.
+                #
+                for sym in rhs:
+                    if not self.rules.has_key(sym):
+                        break
+                else:
+                    tbd.append(rule)
+        changes = 1
+        while changes:
+            changes = 0
+            for lhs, rhs in tbd:
+                if self.nullable[lhs]:
+                    continue
+                for sym in rhs:
+                    if not self.nullable[sym]:
+                        break
+                else:
+                    self.nullable[lhs] = 1
+                    changes = 1
+
+    def makeState0(self):
+        s0 = _State(0, [])
+        for rule in self.newrules[self._START]:
+            s0.items.append((rule, 0))
+        return s0
+
+    def finalState(self, tokens):
+        #
+        #  Yuck.
+        #
+        if len(self.newrules[self._START]) == 2 and len(tokens) == 0:
+            return 1
+        start = self.rules[self._START][0][1][1]
+        return self.goto(1, start)
+
+    def makeNewRules(self):
+        worklist = []
+        for rulelist in self.rules.values():
+            for rule in rulelist:
+                worklist.append((rule, 0, 1, rule))
+
+        for rule, i, candidate, oldrule in worklist:
+            lhs, rhs = rule
+            n = len(rhs)
+            while i < n:
+                sym = rhs[i]
+                if not self.rules.has_key(sym) or \
+                   not self.nullable[sym]:
+                    candidate = 0
+                    i = i + 1
+                    continue
+
+                newrhs = list(rhs)
+                newrhs[i] = self._NULLABLE+sym
+                newrule = (lhs, tuple(newrhs))
+                worklist.append((newrule, i+1,
+                                 candidate, oldrule))
+                candidate = 0
+                i = i + 1
+            else:
+                if candidate:
+                    lhs = self._NULLABLE+lhs
+                    rule = (lhs, rhs)
+                if self.newrules.has_key(lhs):
+                    self.newrules[lhs].append(rule)
+                else:
+                    self.newrules[lhs] = [ rule ]
+                self.new2old[rule] = oldrule
+
+    def typestring(self, token):
+        return None
+
+    def error(self, token):
+        print "Syntax error at or near `%s' token" % token
+        raise SystemExit
+
+    def parse(self, tokens):
+        sets = [ [(1,0), (2,0)] ]
+        self.links = {}
+
+        if self.ruleschanged:
+            self.computeNull()
+            self.newrules = {}
+            self.new2old = {}
+            self.makeNewRules()
+            self.ruleschanged = 0
+            self.edges, self.cores = {}, {}
+            self.states = { 0: self.makeState0() }
+            self.makeState(0, self._BOF)
+
+        for i in xrange(len(tokens)):
+            sets.append([])
+
+            if sets[i] == []:
+                break
+            self.makeSet(tokens[i], sets, i)
+        else:
+            sets.append([])
+            self.makeSet(None, sets, len(tokens))
+
+        #_dump(tokens, sets, self.states)
+
+        finalitem = (self.finalState(tokens), 0)
+        if finalitem not in sets[-2]:
+            if len(tokens) > 0:
+                self.error(tokens[i-1])
+            else:
+                self.error(None)
+
+        return self.buildTree(self._START, finalitem,
+                              tokens, len(sets)-2)
+
+    def isnullable(self, sym):
+        #
+        #  For symbols in G_e only.  If we weren't supporting 1.5,
+        #  could just use sym.startswith().
+        #
+        return self._NULLABLE == sym[0:len(self._NULLABLE)]
+
+    def skip(self, (lhs, rhs), pos=0):
+        n = len(rhs)
+        while pos < n:
+            if not self.isnullable(rhs[pos]):
+                break
+            pos = pos + 1
+        return pos
+
+    def makeState(self, state, sym):
+        assert sym is not None
+        #
+        #  Compute \epsilon-kernel state's core and see if
+        #  it exists already.
+        #
+        kitems = []
+        for rule, pos in self.states[state].items:
+            lhs, rhs = rule
+            if rhs[pos:pos+1] == (sym,):
+                kitems.append((rule, self.skip(rule, pos+1)))
+        core = kitems
+
+        core.sort()
+        tcore = tuple(core)
+        if self.cores.has_key(tcore):
+            return self.cores[tcore]
+        #
+        #  Nope, doesn't exist.  Compute it and the associated
+        #  \epsilon-nonkernel state together; we'll need it right away.
+        #
+        k = self.cores[tcore] = len(self.states)
+        K, NK = _State(k, kitems), _State(k+1, [])
+        self.states[k] = K
+        predicted = {}
+
+        edges = self.edges
+        rules = self.newrules
+        for X in K, NK:
+            worklist = X.items
+            for item in worklist:
+                rule, pos = item
+                lhs, rhs = rule
+                if pos == len(rhs):
+                    X.complete.append(rule)
+                    continue
+
+                nextSym = rhs[pos]
+                key = (X.stateno, nextSym)
+                if not rules.has_key(nextSym):
+                    if not edges.has_key(key):
+                        edges[key] = None
+                        X.T.append(nextSym)
+                else:
+                    edges[key] = None
+                    if not predicted.has_key(nextSym):
+                        predicted[nextSym] = 1
+                        for prule in rules[nextSym]:
+                            ppos = self.skip(prule)
+                            new = (prule, ppos)
+                            NK.items.append(new)
+            #
+            #  Problem: we know K needs generating, but we
+            #  don't yet know about NK.  Can't commit anything
+            #  regarding NK to self.edges until we're sure.  Should
+            #  we delay committing on both K and NK to avoid this
+            #  hacky code?  This creates other problems..
+            #
+            if X is K:
+                edges = {}
+
+        if NK.items == []:
+            return k
+
+        #
+        #  Check for \epsilon-nonkernel's core.  Unfortunately we
+        #  need to know the entire set of predicted nonterminals
+        #  to do this without accidentally duplicating states.
+        #
+        core = predicted.keys()
+        core.sort()
+        tcore = tuple(core)
+        if self.cores.has_key(tcore):
+            self.edges[(k, None)] = self.cores[tcore]
+            return k
+
+        nk = self.cores[tcore] = self.edges[(k, None)] = NK.stateno
+        self.edges.update(edges)
+        self.states[nk] = NK
+        return k
+
+    def goto(self, state, sym):
+        key = (state, sym)
+        if not self.edges.has_key(key):
+            #
+            #  No transitions from state on sym.
+            #
+            return None
+
+        rv = self.edges[key]
+        if rv is None:
+            #
+            #  Target state isn't generated yet.  Remedy this.
+            #
+            rv = self.makeState(state, sym)
+            self.edges[key] = rv
+        return rv
+
+    def gotoT(self, state, t):
+        return [self.goto(state, t)]
+
+    def gotoST(self, state, st):
+        rv = []
+        for t in self.states[state].T:
+            if st == t:
+                rv.append(self.goto(state, t))
+        return rv
+
+    def add(self, set, item, i=None, predecessor=None, causal=None):
+        if predecessor is None:
+            if item not in set:
+                set.append(item)
+        else:
+            key = (item, i)
+            if item not in set:
+                self.links[key] = []
+                set.append(item)
+            self.links[key].append((predecessor, causal))
+
+    def makeSet(self, token, sets, i):
+        cur, next = sets[i], sets[i+1]
+
+        ttype = token is not None and self.typestring(token) or None
+        if ttype is not None:
+            fn, arg = self.gotoT, ttype
+        else:
+            fn, arg = self.gotoST, token
+
+        for item in cur:
+            ptr = (item, i)
+            state, parent = item
+            add = fn(state, arg)
+            for k in add:
+                if k is not None:
+                    self.add(next, (k, parent), i+1, ptr)
+                    nk = self.goto(k, None)
+                    if nk is not None:
+                        self.add(next, (nk, i+1))
+
+            if parent == i:
+                continue
+
+            for rule in self.states[state].complete:
+                lhs, rhs = rule
+                for pitem in sets[parent]:
+                    pstate, pparent = pitem
+                    k = self.goto(pstate, lhs)
+                    if k is not None:
+                        why = (item, i, rule)
+                        pptr = (pitem, parent)
+                        self.add(cur, (k, pparent),
+                                 i, pptr, why)
+                        nk = self.goto(k, None)
+                        if nk is not None:
+                            self.add(cur, (nk, i))
+
+    def makeSet_fast(self, token, sets, i):
+        #
+        #  Call *only* when the entire state machine has been built!
+        #  It relies on self.edges being filled in completely, and
+        #  then duplicates and inlines code to boost speed at the
+        #  cost of extreme ugliness.
+        #
+        cur, next = sets[i], sets[i+1]
+        ttype = token is not None and self.typestring(token) or None
+
+        for item in cur:
+            ptr = (item, i)
+            state, parent = item
+            if ttype is not None:
+                k = self.edges.get((state, ttype), None)
+                if k is not None:
+                    #self.add(next, (k, parent), i+1, ptr)
+                    #INLINED --v
+                    new = (k, parent)
+                    key = (new, i+1)
+                    if new not in next:
+                        self.links[key] = []
+                        next.append(new)
+                    self.links[key].append((ptr, None))
+                    #INLINED --^
+                    #nk = self.goto(k, None)
+                    nk = self.edges.get((k, None), None)
+                    if nk is not None:
+                        #self.add(next, (nk, i+1))
+                        #INLINED --v
+                        new = (nk, i+1)
+                        if new not in next:
+                            next.append(new)
+                        #INLINED --^
+            else:
+                add = self.gotoST(state, token)
+                for k in add:
+                    if k is not None:
+                        self.add(next, (k, parent), i+1, ptr)
+                        #nk = self.goto(k, None)
+                        nk = self.edges.get((k, None), None)
+                        if nk is not None:
+                            self.add(next, (nk, i+1))
+
+            if parent == i:
+                continue
+
+            for rule in self.states[state].complete:
+                lhs, rhs = rule
+                for pitem in sets[parent]:
+                    pstate, pparent = pitem
+                    #k = self.goto(pstate, lhs)
+                    k = self.edges.get((pstate, lhs), None)
+                    if k is not None:
+                        why = (item, i, rule)
+                        pptr = (pitem, parent)
+                        #self.add(cur, (k, pparent),
+                        #        i, pptr, why)
+                        #INLINED --v
+                        new = (k, pparent)
+                        key = (new, i)
+                        if new not in cur:
+                            self.links[key] = []
+                            cur.append(new)
+                        self.links[key].append((pptr, why))
+                        #INLINED --^
+                        #nk = self.goto(k, None)
+                        nk = self.edges.get((k, None), None)
+                        if nk is not None:
+                            #self.add(cur, (nk, i))
+                            #INLINED --v
+                            new = (nk, i)
+                            if new not in cur:
+                                cur.append(new)
+                            #INLINED --^
+
+    def predecessor(self, key, causal):
+        for p, c in self.links[key]:
+            if c == causal:
+                return p
+        assert 0
+
+    def causal(self, key):
+        links = self.links[key]
+        if len(links) == 1:
+            return links[0][1]
+        choices = []
+        rule2cause = {}
+        for p, c in links:
+            rule = c[2]
+            choices.append(rule)
+            rule2cause[rule] = c
+        return rule2cause[self.ambiguity(choices)]
+
+    def deriveEpsilon(self, nt):
+        if len(self.newrules[nt]) > 1:
+            rule = self.ambiguity(self.newrules[nt])
+        else:
+            rule = self.newrules[nt][0]
+        #print rule
+
+        rhs = rule[1]
+        attr = [None] * len(rhs)
+
+        for i in range(len(rhs)-1, -1, -1):
+            attr[i] = self.deriveEpsilon(rhs[i])
+        return self.rule2func[self.new2old[rule]](attr)
+
+    def buildTree(self, nt, item, tokens, k):
+        state, parent = item
+
+        choices = []
+        for rule in self.states[state].complete:
+            if rule[0] == nt:
+                choices.append(rule)
+        rule = choices[0]
+        if len(choices) > 1:
+            rule = self.ambiguity(choices)
+        #print rule
+
+        rhs = rule[1]
+        attr = [None] * len(rhs)
+
+        for i in range(len(rhs)-1, -1, -1):
+            sym = rhs[i]
+            if not self.newrules.has_key(sym):
+                if sym != self._BOF:
+                    attr[i] = tokens[k-1]
+                    key = (item, k)
+                    item, k = self.predecessor(key, None)
+            #elif self.isnullable(sym):
+            elif self._NULLABLE == sym[0:len(self._NULLABLE)]:
+                attr[i] = self.deriveEpsilon(sym)
+            else:
+                key = (item, k)
+                why = self.causal(key)
+                attr[i] = self.buildTree(sym, why[0],
+                                         tokens, why[1])
+                item, k = self.predecessor(key, why)
+        return self.rule2func[self.new2old[rule]](attr)
+
+    def ambiguity(self, rules):
+        #
+        #  XXX - problem here and in collectRules() if the same rule
+        #        appears in >1 method.  Also undefined results if rules
+        #        causing the ambiguity appear in the same method.
+        #
+        sortlist = []
+        name2index = {}
+        for i in range(len(rules)):
+            lhs, rhs = rule = rules[i]
+            name = self.rule2name[self.new2old[rule]]
+            sortlist.append((len(rhs), name))
+            name2index[name] = i
+        sortlist.sort()
+        list = map(lambda (a,b): b, sortlist)
+        return rules[name2index[self.resolve(list)]]
+
+    def resolve(self, list):
+        #
+        #  Resolve ambiguity in favor of the shortest RHS.
+        #  Since we walk the tree from the top down, this
+        #  should effectively resolve in favor of a "shift".
+        #
+        return list[0]
 
 #
 #  GenericASTBuilder automagically constructs a concrete/abstract syntax tree
@@ -681,32 +681,32 @@
 #
 
 class GenericASTBuilder(GenericParser):
-	def __init__(self, AST, start):
-		GenericParser.__init__(self, start)
-		self.AST = AST
-
-	def preprocess(self, rule, func):
-		rebind = lambda lhs, self=self: \
-				lambda args, lhs=lhs, self=self: \
-					self.buildASTNode(args, lhs)
-		lhs, rhs = rule
-		return rule, rebind(lhs)
-
-	def buildASTNode(self, args, lhs):
-		children = []
-		for arg in args:
-			if isinstance(arg, self.AST):
-				children.append(arg)
-			else:
-				children.append(self.terminal(arg))
-		return self.nonterminal(lhs, children)
-
-	def terminal(self, token):	return token
-
-	def nonterminal(self, type, args):
-		rv = self.AST(type)
-		rv[:len(args)] = args
-		return rv
+    def __init__(self, AST, start):
+        GenericParser.__init__(self, start)
+        self.AST = AST
+
+    def preprocess(self, rule, func):
+        rebind = lambda lhs, self=self: \
+                        lambda args, lhs=lhs, self=self: \
+                                self.buildASTNode(args, lhs)
+        lhs, rhs = rule
+        return rule, rebind(lhs)
+
+    def buildASTNode(self, args, lhs):
+        children = []
+        for arg in args:
+            if isinstance(arg, self.AST):
+                children.append(arg)
+            else:
+                children.append(self.terminal(arg))
+        return self.nonterminal(lhs, children)
+
+    def terminal(self, token):      return token
+
+    def nonterminal(self, type, args):
+        rv = self.AST(type)
+        rv[:len(args)] = args
+        return rv
 
 #
 #  GenericASTTraversal is a Visitor pattern according to Design Patterns.  For
@@ -719,57 +719,57 @@
 #
 
 class GenericASTTraversalPruningException:
-	pass
+    pass
 
 class GenericASTTraversal:
-	def __init__(self, ast):
-		self.ast = ast
+    def __init__(self, ast):
+        self.ast = ast
 
-	def typestring(self, node):
-		return node.type
+    def typestring(self, node):
+        return node.type
 
-	def prune(self):
-		raise GenericASTTraversalPruningException
+    def prune(self):
+        raise GenericASTTraversalPruningException
 
-	def preorder(self, node=None):
-		if node is None:
-			node = self.ast
-
-		try:
-			name = 'n_' + self.typestring(node)
-			if hasattr(self, name):
-				func = getattr(self, name)
-				func(node)
-			else:
-				self.default(node)
-		except GenericASTTraversalPruningException:
-			return
-
-		for kid in node:
-			self.preorder(kid)
-
-		name = name + '_exit'
-		if hasattr(self, name):
-			func = getattr(self, name)
-			func(node)
-
-	def postorder(self, node=None):
-		if node is None:
-			node = self.ast
-
-		for kid in node:
-			self.postorder(kid)
-
-		name = 'n_' + self.typestring(node)
-		if hasattr(self, name):
-			func = getattr(self, name)
-			func(node)
-		else:
-			self.default(node)
+    def preorder(self, node=None):
+        if node is None:
+            node = self.ast
+
+        try:
+            name = 'n_' + self.typestring(node)
+            if hasattr(self, name):
+                func = getattr(self, name)
+                func(node)
+            else:
+                self.default(node)
+        except GenericASTTraversalPruningException:
+            return
+
+        for kid in node:
+            self.preorder(kid)
+
+        name = name + '_exit'
+        if hasattr(self, name):
+            func = getattr(self, name)
+            func(node)
+
+    def postorder(self, node=None):
+        if node is None:
+            node = self.ast
+
+        for kid in node:
+            self.postorder(kid)
+
+        name = 'n_' + self.typestring(node)
+        if hasattr(self, name):
+            func = getattr(self, name)
+            func(node)
+        else:
+            self.default(node)
 
 
-	def default(self, node):
-		pass
+    def default(self, node):
+        pass
 
 #
 #  GenericASTMatcher.  AST nodes must have "__getitem__" and "__cmp__"
@@ -779,62 +779,62 @@
 #
 
 class GenericASTMatcher(GenericParser):
-	def __init__(self, start, ast):
-		GenericParser.__init__(self, start)
-		self.ast = ast
-
-	def preprocess(self, rule, func):
-		rebind = lambda func, self=self: \
-				lambda args, func=func, self=self: \
-					self.foundMatch(args, func)
-		lhs, rhs = rule
-		rhslist = list(rhs)
-		rhslist.reverse()
-
-		return (lhs, tuple(rhslist)), rebind(func)
-
-	def foundMatch(self, args, func):
-		func(args[-1])
-		return args[-1]
-
-	def match_r(self, node):
-		self.input.insert(0, node)
-		children = 0
-
-		for child in node:
-			if children == 0:
-				self.input.insert(0, '(')
-			children = children + 1
-			self.match_r(child)
-
-		if children > 0:
-			self.input.insert(0, ')')
-
-	def match(self, ast=None):
-		if ast is None:
-			ast = self.ast
-		self.input = []
-
-		self.match_r(ast)
-		self.parse(self.input)
-
-	def resolve(self, list):
-		#
-		#  Resolve ambiguity in favor of the longest RHS.
-		#
-		return list[-1]
+    def __init__(self, start, ast):
+        GenericParser.__init__(self, start)
+        self.ast = ast
+
+    def preprocess(self, rule, func):
+        rebind = lambda func, self=self: \
+                        lambda args, func=func, self=self: \
+                                self.foundMatch(args, func)
+        lhs, rhs = rule
+        rhslist = list(rhs)
+        rhslist.reverse()
+
+        return (lhs, tuple(rhslist)), rebind(func)
+
+    def foundMatch(self, args, func):
+        func(args[-1])
+        return args[-1]
+
+    def match_r(self, node):
+        self.input.insert(0, node)
+        children = 0
+
+        for child in node:
+            if children == 0:
+                self.input.insert(0, '(')
+            children = children + 1
+            self.match_r(child)
+
+        if children > 0:
+            self.input.insert(0, ')')
+
+    def match(self, ast=None):
+        if ast is None:
+            ast = self.ast
+        self.input = []
+
+        self.match_r(ast)
+        self.parse(self.input)
+
+    def resolve(self, list):
+        #
+        #  Resolve ambiguity in favor of the longest RHS.
+        #
+        return list[-1]
 
 def _dump(tokens, sets, states):
-	for i in range(len(sets)):
-		print 'set', i
-		for item in sets[i]:
-			print '\t', item
-			for (lhs, rhs), pos in states[item[0]].items:
-				print '\t\t', lhs, '::=',
-				print string.join(rhs[:pos]),
-				print '.',
-				print string.join(rhs[pos:])
-		if i < len(tokens):
-			print
-			print 'token', str(tokens[i])
-			print
+    for i in range(len(sets)):
+        print 'set', i
+        for item in sets[i]:
+            print '\t', item
+            for (lhs, rhs), pos in states[item[0]].items:
+                print '\t\t', lhs, '::=',
+                print string.join(rhs[:pos]),
+                print '.',
+                print string.join(rhs[pos:])
+        if i < len(tokens):
+            print
+            print 'token', str(tokens[i])
+            print

Modified: python/trunk/Tools/bgen/bgen/bgenGenerator.py
==============================================================================
--- python/trunk/Tools/bgen/bgen/bgenGenerator.py	(original)
+++ python/trunk/Tools/bgen/bgen/bgenGenerator.py	Mon Dec 26 00:18:31 2005
@@ -218,10 +218,10 @@
 
     def beginallowthreads(self):
         pass
-        
+
     def endallowthreads(self):
         pass
-        
+
     def callit(self):
         args = ""
         s = "%s%s(" % (self.getrvforcallit(), self.callname)

Modified: python/trunk/Tools/bgen/bgen/bgenHeapBuffer.py
==============================================================================
--- python/trunk/Tools/bgen/bgen/bgenHeapBuffer.py	(original)
+++ python/trunk/Tools/bgen/bgen/bgenHeapBuffer.py	Mon Dec 26 00:18:31 2005
@@ -111,10 +111,10 @@
 
     def passOutput(self, name):
         return "%s__out__, %s__len__, &%s__len__" % (name, name, name)
-        
+
 class MallocHeapOutputBufferType(HeapOutputBufferType):
     """Output buffer allocated by the called function -- passed as (&buffer, &size).
-    
+
     Instantiate without parameters.
     Call from Python without parameters.
     """
@@ -124,7 +124,7 @@
 
     def getAuxDeclarations(self, name):
         return []
-        
+
     def passOutput(self, name):
         return "&%s__out__, &%s__len__" % (name, name)
 
@@ -133,10 +133,9 @@
 
     def getargsArgs(self, name):
         return None
-        
+
     def mkvalueFormat(self):
         return "z#"
-        
+
     def cleanup(self, name):
         Output("if( %s__out__ ) free(%s__out__);", name, name)
-

Modified: python/trunk/Tools/compiler/dumppyc.py
==============================================================================
--- python/trunk/Tools/compiler/dumppyc.py	(original)
+++ python/trunk/Tools/compiler/dumppyc.py	Mon Dec 26 00:18:31 2005
@@ -43,5 +43,5 @@
         buf = open(filename).read()
         co = compile(buf, filename, "exec")
         walk(co)
-    else:   
+    else:
         load(filename, codename)

Modified: python/trunk/Tools/unicode/gencodec.py
==============================================================================
--- python/trunk/Tools/unicode/gencodec.py	(original)
+++ python/trunk/Tools/unicode/gencodec.py	Mon Dec 26 00:18:31 2005
@@ -295,8 +295,8 @@
     else:
         l.append('''\
         return codecs.charmap_decode(input,errors,decoding_map)''')
-         
-    l.append('''    
+
+    l.append('''
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
 
@@ -330,7 +330,7 @@
 
     # Final new-line
     l.append('\n')
-    
+
     return '\n'.join(l)
 
 def pymap(name,map,pyfile,comments=1):


More information about the Python-checkins mailing list