* src/ansel_utf8.py: pylint

* src/Date.py: pylint
	* src/Spell.py: pylint
	
2007-09-07  Don Allingham  <don@gramps-project.org>


svn: r8946
This commit is contained in:
Don Allingham 2007-09-08 04:20:59 +00:00
parent 31f77ab857
commit 7a8301c28a
5 changed files with 408 additions and 390 deletions

View File

@ -1,3 +1,8 @@
2007-09-07 Don Allingham <don@gramps-project.org>
* src/ansel_utf8.py: pylint
* src/Date.py: pylint
* src/Spell.py: pylint
2007-09-07 Don Allingham <don@gramps-project.org>
* src/GrampsDb/_DbBase.py: pylint
* src/GrampsDbUtils/_GedcomStageOne.py: added

View File

@ -8,7 +8,7 @@
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
@ -28,14 +28,6 @@
from gettext import gettext as _
import os
#-------------------------------------------------------------------------
#
# set up logging
#
#-------------------------------------------------------------------------
import logging
log = logging.getLogger(".Assistant")
#-------------------------------------------------------------------------
#
# GTK modules
@ -57,8 +49,8 @@ import ManagedWindow
# Constants
#
#-------------------------------------------------------------------------
_gramps_png = os.path.join(const.image_dir,"gramps.png")
_splash_jpg = os.path.join(const.image_dir,"splash.jpg")
_gramps_png = os.path.join(const.image_dir, "gramps.png")
_splash_jpg = os.path.join(const.image_dir, "splash.jpg")
_format = '<span weight="bold" size="xx-large">%s</span>'
#-------------------------------------------------------------------------
@ -66,7 +58,7 @@ _format = '<span weight="bold" size="xx-large">%s</span>'
# Assistant class
#
#-------------------------------------------------------------------------
class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
class Assistant(gtk.Object, ManagedWindow.ManagedWindow):
""" A tabbed dialog box used to implement Assistant interfaces.
Deprecated. Please use gtk.Assistant class from now on.
See eg. example use in ExportAssistant
@ -75,32 +67,32 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
__gproperties__ = {}
__gsignals__ = {
'page-changed' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT,)),
'before-page-next' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT,)),
'after-page-next' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT,)),
'before-page-back' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT,)),
'after-page-back' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT,)),
'complete' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
'page-changed' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT, )),
'before-page-next' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT, )),
'after-page-next' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT, )),
'before-page-back' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT, )),
'after-page-back' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
(gobject.TYPE_INT, )),
'complete' : (gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
())
}
def __init__(self,uistate,parent_class,complete,top_title=''):
def __init__(self, uistate, parent_class, complete, top_title=''):
gobject.GObject.__init__(self)
self.top_title = top_title
if uistate:
ManagedWindow.ManagedWindow.__init__(self,uistate,[],
ManagedWindow.ManagedWindow.__init__(self, uistate, [],
parent_class)
else:
self.uistate = None
@ -123,13 +115,13 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
self.title_text = []
self.title = gtk.Label('')
self.title.set_alignment(0,0.5)
self.title.set_alignment(0, 0.5)
self.title.set_use_markup(True)
titlebox.pack_start(self.title,True)
titlebox.pack_start(self.title, True)
image = gtk.Image()
image.set_from_file(_gramps_png)
titlebox.pack_end(image,False)
titlebox.pack_end(image, False)
self.notebook = gtk.Notebook()
self.notebook.set_show_border(False)
@ -142,31 +134,31 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
hbox.set_layout(gtk.BUTTONBOX_END)
self.cancel = gtk.Button(stock=gtk.STOCK_CANCEL)
self.cancel.connect('clicked',self.close)
self.cancel.connect('clicked', self.close)
self.back = gtk.Button(stock=gtk.STOCK_GO_BACK)
self.back.set_sensitive(False)
self.back.connect('clicked',self.back_clicked)
self.back.connect('clicked', self.back_clicked)
self.next = gtk.Button(stock=gtk.STOCK_GO_FORWARD)
self.next.connect('clicked',self.next_clicked)
self.next.connect('clicked', self.next_clicked)
self.ok = gtk.Button(stock=gtk.STOCK_OK)
self.ok.connect('clicked',self.next_clicked)
self.ok.set_sensitive(False)
self.ok.connect('clicked', self.next_clicked)
self.ok.set_sensitive(False)
hbox.add(self.cancel)
hbox.add(self.back)
hbox.add(self.next)
hbox.add(self.ok)
hbox.add(self.ok)
vbox.pack_start(titlebox,False)
vbox.pack_start(self.notebook,True)
vbox.pack_start(hbox,False)
vbox.pack_start(titlebox, False)
vbox.pack_start(self.notebook, True)
vbox.pack_start(hbox, False)
self.window.add(vbox)
def build_menu_names(self,obj):
return (self.top_title,None)
def build_menu_names(self, obj):
return (self.top_title, None)
def set_busy_cursor(self,value):
def set_busy_cursor(self, value):
if value:
self.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
self.window.set_sensitive(0)
@ -177,7 +169,7 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
while gtk.events_pending():
gtk.main_iteration()
def destroy(self,*obj):
def destroy(self, *obj):
self.window.destroy()
def do_get_property(self, prop):
@ -198,43 +190,43 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
def set_buttons(self):
max_page = self.notebook.get_n_pages()
if self.current_page == max_page-2:
self.next.show()
self.back.show()
self.cancel.show()
self.ok.set_sensitive(True)
self.next.set_sensitive(False)
self.back.set_sensitive(True)
elif self.current_page == max_page-1:
self.next.hide()
self.back.hide()
self.cancel.hide()
elif self.current_page == 0:
self.next.show()
self.back.show()
self.cancel.show()
self.back.set_sensitive(False)
self.next.set_sensitive(True)
self.ok.set_sensitive(False)
else:
self.next.show()
self.back.show()
self.back.set_sensitive(True)
self.next.set_sensitive(True)
self.ok.set_sensitive(False)
self.cancel.show()
self.next.show()
self.back.show()
self.cancel.show()
self.ok.set_sensitive(True)
self.next.set_sensitive(False)
self.back.set_sensitive(True)
elif self.current_page == max_page-1:
self.next.hide()
self.back.hide()
self.cancel.hide()
elif self.current_page == 0:
self.next.show()
self.back.show()
self.cancel.show()
self.back.set_sensitive(False)
self.next.set_sensitive(True)
self.ok.set_sensitive(False)
else:
self.next.show()
self.back.show()
self.back.set_sensitive(True)
self.next.set_sensitive(True)
self.ok.set_sensitive(False)
self.cancel.show()
def back_clicked(self,obj):
self.emit('before-page-back',self.notebook.get_current_page())
def back_clicked(self, obj):
self.emit('before-page-back', self.notebook.get_current_page())
self.current_page -= 1
self.notebook.set_current_page(self.current_page)
self.update_title()
self.set_buttons()
self.set_buttons()
self.emit('after-page-back',self.notebook.get_current_page())
self.emit('page-changed',self.notebook.get_current_page())
self.emit('after-page-back', self.notebook.get_current_page())
self.emit('page-changed', self.notebook.get_current_page())
def next_clicked(self,obj):
self.emit('before-page-next',self.notebook.get_current_page())
def next_clicked(self, obj):
self.emit('before-page-next', self.notebook.get_current_page())
if self.current_page == self.notebook.get_n_pages()-1:
self.emit('complete')
self.complete()
@ -245,8 +237,8 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
self.update_title()
self.set_buttons()
self.emit('after-page-next',self.notebook.get_current_page())
self.emit('page-changed',self.notebook.get_current_page())
self.emit('after-page-next', self.notebook.get_current_page())
self.emit('page-changed', self.notebook.get_current_page())
def add_text_page(self, title, text):
"""
@ -255,7 +247,7 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
use this method.
"""
hbox = self.prepare_text_page(text)
return self.add_page(title,hbox)
return self.add_page(title, hbox)
def insert_text_page(self, title, text, position):
"""
@ -264,13 +256,13 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
use this method.
"""
hbox = self.prepare_text_page(text)
return self.insert_page(title,hbox,position)
return self.insert_page(title, hbox, position)
def prepare_text_page(self,text):
def prepare_text_page(self, text):
hbox = gtk.HBox(spacing=12)
image = gtk.Image()
image.set_from_file(_splash_jpg)
hbox.pack_start(image,False)
hbox.pack_start(image, False)
label = gtk.Label(text)
label.set_line_wrap(True)
label.set_use_markup(True)
@ -291,10 +283,10 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
Insert page at a given position.
Returns index number of the new page.
"""
self.title_text.insert(position,_format % title)
return self.notebook.insert_page(child,None,position)
self.title_text.insert(position, _format % title)
return self.notebook.insert_page(child, None, position)
def remove_page(self,position):
def remove_page(self, position):
"""
Remove page from a given position.
"""
@ -307,11 +299,11 @@ class Assistant(gtk.Object,ManagedWindow.ManagedWindow):
self.notebook.set_current_page(self.current_page)
self.update_title()
self.set_buttons()
self.emit('page-changed',self.notebook.get_current_page())
self.emit('page-changed', self.notebook.get_current_page())
if self.uistate:
ManagedWindow.ManagedWindow.show(self)
if gtk.pygtk_version < (2,8,0):
if gtk.pygtk_version < (2, 8, 0):
gobject.type_register(Assistant)
if __name__ == "__main__":
@ -319,16 +311,16 @@ if __name__ == "__main__":
def complete():
gtk.main_quit()
def make_label(table,val,y,x1,x2,x3,x4):
def make_label(table, val, y, x1, x2, x3, x4):
label = gtk.Label(val)
label.set_alignment(0,0.5)
label.set_alignment(0, 0.5)
text = gtk.Entry()
table.attach(label,x1,x2,y,y+1,gtk.SHRINK|gtk.FILL)
table.attach(text,x3,x4,y,y+1,gtk.EXPAND|gtk.FILL)
table.attach(label, x1, x2, y, y+1, gtk.SHRINK|gtk.FILL)
table.attach(text, x3, x4, y, y+1, gtk.EXPAND|gtk.FILL)
return text
a = Assistant(complete)
a.add_text_page('Getting started',
a.add_text_page('Getting started',
'Welcome to GRAMPS, the Genealogical Research '
'and Analysis Management Programming System.\n'
'Several options and information need to be gathered '
@ -338,22 +330,22 @@ if __name__ == "__main__":
box = gtk.VBox()
box.set_spacing(12)
table = gtk.Table(8,4)
table = gtk.Table(8, 4)
table.set_row_spacings(6)
table.set_col_spacings(6)
make_label(table,_('Name:'),0,0,1,1,4)
make_label(table,_('Address:'),1,0,1,1,4)
make_label(table,_('City:'),2,0,1,1,2)
make_label(table,_('State/Province:'),2,2,3,3,4)
make_label(table,_('Country:'),3,0,1,1,2)
make_label(table,_('ZIP/Postal code:'),3,2,3,3,4)
make_label(table,_('Phone:'),4,0,1,1,4)
make_label(table,_('Email:'),5,0,1,1,4)
make_label(table, _('Name:'), 0, 0, 1, 1, 4)
make_label(table, _('Address:'), 1, 0, 1, 1, 4)
make_label(table, _('City:'), 2, 0, 1, 1, 2)
make_label(table, _('State/Province:'), 2, 2, 3, 3, 4)
make_label(table, _('Country:'), 3, 0, 1, 1, 2)
make_label(table, _('ZIP/Postal code:'), 3, 2, 3, 3, 4)
make_label(table, _('Phone:'), 4, 0, 1, 1, 4)
make_label(table, _('Email:'), 5, 0, 1, 1, 4)
box.add(table)
a.add_page('Researcher information',box)
a.add_page('Researcher information', box)
a.add_text_page('Conclusion title','Very long conclusion text here')
a.add_text_page('Conclusion title', 'Very long conclusion text here')
a.show()
gtk.main()

View File

@ -20,6 +20,10 @@
# $Id$
"""
this module is only needed to to enable db upgrade
"""
# FIXME: this module is only needed to to enable db upgrade
from RelLib import Date

View File

@ -49,6 +49,7 @@ LOG = logging.getLogger(".Spell")
#
#-------------------------------------------------------------------------
import gtk
try:
import gtkspell
HAVE_GTKSPELL = True
@ -172,7 +173,7 @@ class Spell:
gtkspell.Spell(gtk.TextView()).set_language(lang_code)
_installed_languages[lang_code] = lang_name
except RuntimeError:
pass
LOG.warn(_("Spelling checker language could not loaded"))
def __init__(self, textview):
self.textview = textview
@ -209,29 +210,13 @@ class Spell:
gtkspell_spell.set_language(lang_code)
self._active_language = lang_code
def __sort_languages(self, lang_a, lang_b):
"""Put language names in alphabetical order.
Except 'None', which should be always the first.
"""
if lang_a == _('None'):
return -1
if lang_b == _('None'):
return 1
if lang_a < lang_b:
return -1
if lang_a > lang_b:
return 1
return 0
# Public API
def get_all_languages(self):
"""Get the list of installed language names."""
langs = self._installed_languages.values()
langs.sort(self.__sort_languages)
langs.sort(sort_languages)
return langs
def set_active_language(self, language):
@ -245,3 +230,24 @@ class Spell:
"""Get the name of the active language."""
return self._installed_languages[self._active_language]
#-------------------------------------------------------------------------
#
# sort_languages
#
#-------------------------------------------------------------------------
def sort_languages(lang_a, lang_b):
"""Put language names in alphabetical order.
Except 'None', which should be always the first.
"""
if lang_a == _('None'):
return -1
if lang_b == _('None'):
return 1
if lang_a < lang_b:
return -1
if lang_a > lang_b:
return 1
return 0

View File

@ -20,9 +20,13 @@
# $Id$
"""
Handles ANSEL/Unicode conversions
"""
import cStringIO
_onebyte = {
ONEBYTE = {
'\x8D' : u'\x20\x0D', '\x8E' : u'\x20\x0C', '\xA1' : u'\x01\x41',
'\xA2' : u'\xD8', '\xA3' : u'\xD0', '\xA4' : u'\xDE',
'\xA5' : u'\xC6', '\xA6' : u'\x01\x52', '\xA7' : u'\x02\xB9',
@ -47,295 +51,302 @@ _onebyte = {
'\xFB' : u'\xFE\x23', '\xFE' : u'\x03\x13',
}
_twobyte = {
'\xE0\x41' : u'\x1E\xA2', '\xE0\x45' : u'\x1E\xBA', '\xE0\x49' : u'\x1E\xC8',
'\xE0\x4F' : u'\x1E\xCE', '\xE0\x55' : u'\x1E\xE6', '\xE0\x59' : u'\x1E\xF6',
'\xE0\x61' : u'\x1E\xA3', '\xE0\x65' : u'\x1E\xBB', '\xE0\x69' : u'\x1E\xC9',
'\xE0\x6F' : u'\x1E\xCF', '\xE0\x75' : u'\x1E\xE7', '\xE0\x79' : u'\x1E\xF7',
'\xE1\x41' : u'\xC0', '\xE1\x45' : u'\xC8', '\xE1\x49' : u'\xCC',
'\xE1\x4F' : u'\xD2', '\xE1\x55' : u'\xD9', '\xE1\x57' : u'\x1E\x80',
'\xE1\x59' : u'\x1E\xF2', '\xE1\x61' : u'\xE0', '\xE1\x65' : u'\xE8',
'\xE1\x69' : u'\xEC', '\xE1\x6F' : u'\xF2', '\xE1\x75' : u'\xF9',
'\xE1\x77' : u'\x1E\x81', '\xE1\x79' : u'\x1E\xF3', '\xE2\x41' : u'\xC1',
'\xE2\x43' : u'\x01\x06', '\xE2\x45' : u'\xC9', '\xE2\x47' : u'\x01\xF4',
'\xE2\x49' : u'\xCD', '\xE2\x4B' : u'\x1E\x30', '\xE2\x4C' : u'\x01\x39',
'\xE2\x4D' : u'\x1E\x3E', '\xE2\x4E' : u'\x01\x43', '\xE2\x4F' : u'\xD3',
'\xE2\x50' : u'\x1E\x54', '\xE2\x52' : u'\x01\x54', '\xE2\x53' : u'\x01\x5A',
'\xE2\x55' : u'\xDA', '\xE2\x57' : u'\x1E\x82', '\xE2\x59' : u'\xDD',
'\xE2\x5A' : u'\x01\x79', '\xE2\x61' : u'\xE1', '\xE2\x63' : u'\x01\x07',
'\xE2\x65' : u'\xE9', '\xE2\x67' : u'\x01\xF5', '\xE2\x69' : u'\xED',
'\xE2\x6B' : u'\x1E\x31', '\xE2\x6C' : u'\x01\x3A', '\xE2\x6D' : u'\x1E\x3F',
'\xE2\x6E' : u'\x01\x44', '\xE2\x6F' : u'\xF3', '\xE2\x70' : u'\x1E\x55',
'\xE2\x72' : u'\x01\x55', '\xE2\x73' : u'\x01\x5B', '\xE2\x75' : u'\xFA',
'\xE2\x77' : u'\x1E\x83', '\xE2\x79' : u'\xFD', '\xE2\x7A' : u'\x01\x7A',
'\xE2\xA5' : u'\x01\xFC', '\xE2\xB5' : u'\x01\xFD', '\xE3\x41' : u'\xC2',
'\xE3\x43' : u'\x01\x08', '\xE3\x45' : u'\xCA', '\xE3\x47' : u'\x01\x1C',
'\xE3\x48' : u'\x01\x24', '\xE3\x49' : u'\xCE', '\xE3\x4A' : u'\x01\x34',
'\xE3\x4F' : u'\xD4', '\xE3\x53' : u'\x01\x5C', '\xE3\x55' : u'\xDB',
'\xE3\x57' : u'\x01\x74', '\xE3\x59' : u'\x01\x76', '\xE3\x5A' : u'\x1E\x90',
'\xE3\x61' : u'\xE2', '\xE3\x63' : u'\x01\x09', '\xE3\x65' : u'\xEA',
'\xE3\x67' : u'\x01\x1D', '\xE3\x68' : u'\x01\x25', '\xE3\x69' : u'\xEE',
'\xE3\x6A' : u'\x01\x35', '\xE3\x6F' : u'\xF4', '\xE3\x73' : u'\x01\x5D',
'\xE3\x75' : u'\xFB', '\xE3\x77' : u'\x01\x75', '\xE3\x79' : u'\x01\x77',
'\xE3\x7A' : u'\x1E\x91', '\xE4\x41' : u'\xC3', '\xE4\x45' : u'\x1E\xBC',
'\xE4\x49' : u'\x01\x28', '\xE4\x4E' : u'\xD1', '\xE4\x4F' : u'\xD5',
'\xE4\x55' : u'\x01\x68', '\xE4\x56' : u'\x1E\x7C', '\xE4\x59' : u'\x1E\xF8',
'\xE4\x61' : u'\xE3', '\xE4\x65' : u'\x1E\xBD', '\xE4\x69' : u'\x01\x29',
'\xE4\x6E' : u'\xF1', '\xE4\x6F' : u'\xF5', '\xE4\x75' : u'\x01\x69',
'\xE4\x76' : u'\x1E\x7D', '\xE4\x79' : u'\x1E\xF9', '\xE5\x41' : u'\x01',
'\xE5\x45' : u'\x01\x12', '\xE5\x47' : u'\x1E\x20', '\xE5\x49' : u'\x01\x2A',
'\xE5\x4F' : u'\x01\x4C', '\xE5\x55' : u'\x01\x6A', '\xE5\x61' : u'\x01\x01',
'\xE5\x65' : u'\x01\x13', '\xE5\x67' : u'\x1E\x21', '\xE5\x69' : u'\x01\x2B',
'\xE5\x6F' : u'\x01\x4D', '\xE5\x75' : u'\x01\x6B', '\xE5\xA5' : u'\x01\xE2',
'\xE5\xB5' : u'\x01\xE3', '\xE6\x41' : u'\x01\x02', '\xE6\x45' : u'\x01\x14',
'\xE6\x47' : u'\x01\x1E', '\xE6\x49' : u'\x01\x2C', '\xE6\x4F' : u'\x01\x4E',
'\xE6\x55' : u'\x01\x6C', '\xE6\x61' : u'\x01\x03', '\xE6\x65' : u'\x01\x15',
'\xE6\x67' : u'\x01\x1F', '\xE6\x69' : u'\x01\x2D', '\xE6\x6F' : u'\x01\x4F',
'\xE6\x75' : u'\x01\x6D', '\xE7\x42' : u'\x1E\x02', '\xE7\x43' : u'\x01\x0A',
'\xE7\x44' : u'\x1E\x0A', '\xE7\x45' : u'\x01\x16', '\xE7\x46' : u'\x1E\x1E',
'\xE7\x47' : u'\x01\x20', '\xE7\x48' : u'\x1E\x22', '\xE7\x49' : u'\x01\x30',
'\xE7\x4D' : u'\x1E\x40', '\xE7\x4E' : u'\x1E\x44', '\xE7\x50' : u'\x1E\x56',
'\xE7\x52' : u'\x1E\x58', '\xE7\x53' : u'\x1E\x60', '\xE7\x54' : u'\x1E\x6A',
'\xE7\x57' : u'\x1E\x86', '\xE7\x58' : u'\x1E\x8A', '\xE7\x59' : u'\x1E\x8E',
'\xE7\x5A' : u'\x01\x7B', '\xE7\x62' : u'\x1E\x03', '\xE7\x63' : u'\x01\x0B',
'\xE7\x64' : u'\x1E\x0B', '\xE7\x65' : u'\x01\x17', '\xE7\x66' : u'\x1E\x1F',
'\xE7\x67' : u'\x01\x21', '\xE7\x68' : u'\x1E\x23', '\xE7\x6D' : u'\x1E\x41',
'\xE7\x6E' : u'\x1E\x45', '\xE7\x70' : u'\x1E\x57', '\xE7\x72' : u'\x1E\x59',
'\xE7\x73' : u'\x1E\x61', '\xE7\x74' : u'\x1E\x6B', '\xE7\x77' : u'\x1E\x87',
'\xE7\x78' : u'\x1E\x8B', '\xE7\x79' : u'\x1E\x8F', '\xE7\x7A' : u'\x01\x7C',
'\xE8\x41' : u'\xC4', '\xE8\x45' : u'\xCB', '\xE8\x48' : u'\x1E\x26',
'\xE8\x49' : u'\xCF', '\xE8\x4F' : u'\xD6', '\xE8\x55' : u'\xDC',
'\xE8\x57' : u'\x1E\x84', '\xE8\x58' : u'\x1E\x8C', '\xE8\x59' : u'\x01\x78',
'\xE8\x61' : u'\xE4', '\xE8\x65' : u'\xEB', '\xE8\x68' : u'\x1E\x27',
'\xE8\x69' : u'\xEF', '\xE8\x6F' : u'\xF6', '\xE8\x74' : u'\x1E\x97',
'\xE8\x75' : u'\xFC', '\xE8\x77' : u'\x1E\x85', '\xE8\x78' : u'\x1E\x8D',
'\xE8\x79' : u'\xFF', '\xE9\x41' : u'\x01\xCD', '\xE9\x43' : u'\x01\x0C',
'\xE9\x44' : u'\x01\x0E', '\xE9\x45' : u'\x01\x1A', '\xE9\x47' : u'\x01\xE6',
'\xE9\x49' : u'\x01\xCF', '\xE9\x4B' : u'\x01\xE8', '\xE9\x4C' : u'\x01\x3D',
'\xE9\x4E' : u'\x01\x47', '\xE9\x4F' : u'\x01\xD1', '\xE9\x52' : u'\x01\x58',
'\xE9\x53' : u'\x01\x60', '\xE9\x54' : u'\x01\x64', '\xE9\x55' : u'\x01\xD3',
'\xE9\x5A' : u'\x01\x7D', '\xE9\x61' : u'\x01\xCE', '\xE9\x63' : u'\x01\x0D',
'\xE9\x64' : u'\x01\x0F', '\xE9\x65' : u'\x01\x1B', '\xE9\x67' : u'\x01\xE7',
'\xE9\x69' : u'\x01\xD0', '\xE9\x6A' : u'\x01\xF0', '\xE9\x6B' : u'\x01\xE9',
'\xE9\x6C' : u'\x01\x3E', '\xE9\x6E' : u'\x01\x48', '\xE9\x6F' : u'\x01\xD2',
'\xE9\x72' : u'\x01\x59', '\xE9\x73' : u'\x01\x61', '\xE9\x74' : u'\x01\x65',
'\xE9\x75' : u'\x01\xD4', '\xE9\x7A' : u'\x01\x7E', '\xEA\x41' : u'\xC5',
'\xEA\x61' : u'\xE5', '\xEA\x75' : u'\x01\x6F', '\xEA\x77' : u'\x1E\x98',
'\xEA\x79' : u'\x1E\x99', '\xEA\xAD' : u'\x01\x6E', '\xEE\x4F' : u'\x01\x50',
'\xEE\x55' : u'\x01\x70', '\xEE\x6F' : u'\x01\x51', '\xEE\x75' : u'\x01\x71',
'\xF0\x20' : u'\xB8', '\xF0\x43' : u'\xC7', '\xF0\x44' : u'\x1E\x10',
'\xF0\x47' : u'\x01\x22', '\xF0\x48' : u'\x1E\x28', '\xF0\x4B' : u'\x01\x36',
'\xF0\x4C' : u'\x01\x3B', '\xF0\x4E' : u'\x01\x45', '\xF0\x52' : u'\x01\x56',
'\xF0\x53' : u'\x01\x5E', '\xF0\x54' : u'\x01\x62', '\xF0\x63' : u'\xE7',
'\xF0\x64' : u'\x1E\x11', '\xF0\x67' : u'\x01\x23', '\xF0\x68' : u'\x1E\x29',
'\xF0\x6B' : u'\x01\x37', '\xF0\x6C' : u'\x01\x3C', '\xF0\x6E' : u'\x01\x46',
'\xF0\x72' : u'\x01\x57', '\xF0\x73' : u'\x01\x5F', '\xF0\x74' : u'\x01\x63',
'\xF1\x41' : u'\x01\x04', '\xF1\x45' : u'\x01\x18', '\xF1\x49' : u'\x01\x2E',
'\xF1\x4F' : u'\x01\xEA', '\xF1\x55' : u'\x01\x72', '\xF1\x61' : u'\x01\x05',
'\xF1\x65' : u'\x01\x19', '\xF1\x69' : u'\x01\x2F', '\xF1\x6F' : u'\x01\xEB',
'\xF1\x75' : u'\x01\x73', '\xF2\x41' : u'\x1E\xA0', '\xF2\x42' : u'\x1E\x04',
'\xF2\x44' : u'\x1E\x0C', '\xF2\x45' : u'\x1E\xB8', '\xF2\x48' : u'\x1E\x24',
'\xF2\x49' : u'\x1E\xCA', '\xF2\x4B' : u'\x1E\x32', '\xF2\x4C' : u'\x1E\x36',
'\xF2\x4D' : u'\x1E\x42', '\xF2\x4E' : u'\x1E\x46', '\xF2\x4F' : u'\x1E\xCC',
'\xF2\x52' : u'\x1E\x5A', '\xF2\x53' : u'\x1E\x62', '\xF2\x54' : u'\x1E\x6C',
'\xF2\x55' : u'\x1E\xE4', '\xF2\x56' : u'\x1E\x7E', '\xF2\x57' : u'\x1E\x88',
'\xF2\x59' : u'\x1E\xF4', '\xF2\x5A' : u'\x1E\x92', '\xF2\x61' : u'\x1E\xA1',
'\xF2\x62' : u'\x1E\x05', '\xF2\x64' : u'\x1E\x0D', '\xF2\x65' : u'\x1E\xB9',
'\xF2\x68' : u'\x1E\x25', '\xF2\x69' : u'\x1E\xCB', '\xF2\x6B' : u'\x1E\x33',
'\xF2\x6C' : u'\x1E\x37', '\xF2\x6D' : u'\x1E\x43', '\xF2\x6E' : u'\x1E\x47',
'\xF2\x6F' : u'\x1E\xCD', '\xF2\x72' : u'\x1E\x5B', '\xF2\x73' : u'\x1E\x63',
'\xF2\x74' : u'\x1E\x6D', '\xF2\x75' : u'\x1E\xE5', '\xF2\x76' : u'\x1E\x7F',
'\xF2\x77' : u'\x1E\x89', '\xF2\x79' : u'\x1E\xF5', '\xF2\x7A' : u'\x1E\x93',
'\xF3\x55' : u'\x1E\x72', '\xF3\x75' : u'\x1E\x73', '\xF4\x41' : u'\x1E',
'\xF4\x61' : u'\x1E\x01', '\xF9\x48' : u'\x1E\x2A', '\xF9\x68' : u'\x1E\x2B',
TWOBYTE = {
'\xe1a' : u'\xe0', '\xf2T' : u'\x1el', '\xf2V' : u'\x1e~',
'\xe9z' : u'\x01~', '\xe1e' : u'\xe8', '\xeau' : u'\x01o',
'\xf2S' : u'\x1eb', '\xe1i' : u'\xec', '\xe9s' : u'\x01a',
'\xe9r' : u'\x01Y', '\xe9u' : u'\x01\xd4', '\xe9t' : u'\x01e',
'\xe1o' : u'\xf2', '\xe9i' : u'\x01\xd0', '\xf2E' : u'\x1e\xb8',
'\xe9k' : u'\x01\xe9', '\xe9j' : u'\x01\xf0', '\xe1u' : u'\xf9',
'\xe9l' : u'\x01>', '\xe1w' : u'\x1e\x81', '\xe9n' : u'\x01H',
'\xe1y' : u'\x1e\xf3', '\xf2M' : u'\x1eB', '\xe9c' : u'\x01\r',
'\xf2O' : u'\x1e\xcc', '\xe9e' : u'\x01\x1b', '\xe9d' : u'\x01\x0f',
'\xe9g' : u'\x01\xe7', '\xeaA' : u'\xc5', '\xe1A' : u'\xc0',
'\xf2u' : u'\x1e\xe5', '\xf2v' : u'\x1e\x7f', '\xe9Z' : u'\x01}',
'\xe1E' : u'\xc8', '\xf2R' : u'\x1eZ', '\xf2r' : u'\x1e[',
'\xf0c' : u'\xe7', '\xe1I' : u'\xcc', '\xe9S' : u'\x01`',
'\xe9R' : u'\x01X', '\xe9U' : u'\x01\xd3', '\xe9T' : u'\x01d',
'\xe1O' : u'\xd2', '\xeaa' : u'\xe5', '\xe9I' : u'\x01\xcf',
'\xf2e' : u'\x1e\xb9', '\xe9K' : u'\x01\xe8', '\xe1U' : u'\xd9',
'\xe9L' : u'\x01=', '\xe1W' : u'\x1e\x80', '\xe9N' : u'\x01G',
'\xe1Y' : u'\x1e\xf2', '\xf0h' : u'\x1e)', '\xe9C' : u'\x01\x0c',
'\xf2o' : u'\x1e\xcd', '\xe9E' : u'\x01\x1a', '\xe9D' : u'\x01\x0e',
'\xe9G' : u'\x01\xe6', '\xf0g' : u'\x01#', '\xe2e' : u'\xe9',
'\xe2g' : u'\x01\xf5', '\xe2a' : u'\xe1', '\xe2c' : u'\x01\x07',
'\xe2l' : u'\x01:', '\xe2m' : u'\x1e?', '\xe2n' : u'\x01D',
'\xe2o' : u'\xf3', '\xe2i' : u'\xed', '\xf3U' : u'\x1er',
'\xe2k' : u'\x1e1', '\xe2u' : u'\xfa', '\xe2w' : u'\x1e\x83',
'\xe2p' : u'\x1eU', '\xf2Z' : u'\x1e\x92', '\xe2r' : u'\x01U',
'\xe2s' : u'\x01[', '\xe2y' : u'\xfd', '\xe2z' : u'\x01z',
'\xe2E' : u'\xc9', '\xe2G' : u'\x01\xf4', '\xe2A' : u'\xc1',
'\xe2C' : u'\x01\x06', '\xe2L' : u'\x019', '\xe2M' : u'\x1e>',
'\xe2N' : u'\x01C', '\xe2O' : u'\xd3', '\xe2I' : u'\xcd',
'\xf3u' : u'\x1es', '\xe2K' : u'\x1e0', '\xe2U' : u'\xda',
'\xe2W' : u'\x1e\x82', '\xe2P' : u'\x1eT', '\xf0l' : u'\x01<',
'\xe2R' : u'\x01T', '\xe2S' : u'\x01Z', '\xea\xad' : u'\x01n',
'\xf0k' : u'\x017', '\xe2Y' : u'\xdd', '\xe2Z' : u'\x01y',
'\xf2A' : u'\x1e\xa0', '\xe7w' : u'\x1e\x87', '\xe2\xa5' : u'\x01\xfc',
'\xe7t' : u'\x1ek', '\xe7s' : u'\x1ea', '\xe7r' : u'\x1eY',
'\xf0G' : u'\x01"', '\xe7p' : u'\x1eW', '\xf2k' : u'\x1e3',
'\xf2I' : u'\x1e\xca', '\xe7z' : u'\x01|', '\xe7y' : u'\x1e\x8f',
'\xe7x' : u'\x1e\x8b', '\xe7g' : u'\x01!', '\xe2\xb5' : u'\x01\xfd',
'\xe7e' : u'\x01\x17', '\xe7d' : u'\x1e\x0b', '\xe7c' : u'\x01\x0b',
'\xe7b' : u'\x1e\x03', '\xf0D' : u'\x1e\x10', '\xe7n' : u'\x1eE',
'\xe7m' : u'\x1eA', '\xf0N' : u'\x01E', '\xf2N' : u'\x1eF',
'\xf0L' : u'\x01;', '\xe7h' : u'\x1e#', '\xe7W' : u'\x1e\x86',
'\xf0s' : u'\x01_', '\xe7T' : u'\x1ej', '\xe7S' : u'\x1e`',
'\xe7R' : u'\x1eX', '\xf0t' : u'\x01c', '\xe7P' : u'\x1eV',
'\xf2H' : u'\x1e$', '\xf2Y' : u'\x1e\xf4', '\xe7Z' : u'\x01{',
'\xe7Y' : u'\x1e\x8e', '\xe7X' : u'\x1e\x8a', '\xe7G' : u'\x01 ',
'\xe7F' : u'\x1e\x1e', '\xe7E' : u'\x01\x16', '\xe7D' : u'\x1e\n',
'\xe7C' : u'\x01\n', '\xe7B' : u'\x1e\x02', '\xf0d' : u'\x1e\x11',
'\xe7N' : u'\x1eD', '\xe7M' : u'\x1e@', '\xf2K' : u'\x1e2',
'\xf0n' : u'\x01F', '\xe7I' : u'\x010', '\xe7H' : u'\x1e"',
'\xf2t' : u'\x1em', '\xe8x' : u'\x1e\x8d', '\xe0a' : u'\x1e\xa3',
'\xf1U' : u'\x01r', '\xe0e' : u'\x1e\xbb', '\xe0i' : u'\x1e\xc9',
'\xf9h' : u'\x1e+', '\xe0o' : u'\x1e\xcf', '\xe8t' : u'\x1e\x97',
'\xe8u' : u'\xfc', '\xf1A' : u'\x01\x04', '\xe8h' : u"\x1e'",
'\xe8i' : u'\xef', '\xf1E' : u'\x01\x18', '\xe8o' : u'\xf6',
'\xe0u' : u'\x1e\xe7', '\xf1I' : u'\x01.', '\xe0y' : u'\x1e\xf7',
'\xf1O' : u'\x01\xea', '\xe8e' : u'\xeb', '\xf9H' : u'\x1e*',
'\xe8X' : u'\x1e\x8c', '\xe0A' : u'\x1e\xa2', '\xf1u' : u'\x01s',
'\xe0E' : u'\x1e\xba', '\xe0I' : u'\x1e\xc8', '\xe0O' : u'\x1e\xce',
'\xe8U' : u'\xdc', '\xf1a' : u'\x01\x05', '\xe8H' : u'\x1e&',
'\xe8I' : u'\xcf', '\xf1e' : u'\x01\x19', '\xe8O' : u'\xd6',
'\xe0U' : u'\x1e\xe6', '\xf1i' : u'\x01/', '\xe0Y' : u'\x1e\xf6',
'\xf0r' : u'\x01W', '\xf1o' : u'\x01\xeb', '\xe8E' : u'\xcb',
'\xf0R' : u'\x01V', '\xe5o' : u'\x01M', '\xe5i' : u'\x01+',
'\xf2D' : u'\x1e\x0c', '\xeeO' : u'\x01P', '\xe5e' : u'\x01\x13',
'\xe5g' : u'\x1e!', '\xe5a' : u'\x01\x01', '\xf2y' : u'\x1e\xf5',
'\xe8w' : u'\x1e\x85', '\xf2z' : u'\x1e\x93', '\xe5\xb5' : u'\x01\xe3',
'\xe5u' : u'\x01k', '\xeeU' : u'\x01p', '\xf2d' : u'\x1e\r',
'\xe5O' : u'\x01L', '\xe8a' : u'\xe4', '\xe5I' : u'\x01*',
'\xf0T' : u'\x01b', '\xeeo' : u'\x01Q', '\xe5E' : u'\x01\x12',
'\xe5G' : u'\x1e ', '\xe5A' : u'\x01', '\xf2l' : u'\x1e7',
'\xf0C' : u'\xc7', '\xf0S' : u'\x01^', '\xe5U' : u'\x01j',
'\xf2B' : u'\x1e\x04', '\xeeu' : u'\x01q', '\xf2a' : u'\x1e\xa1',
'\xf2w' : u'\x1e\x89', '\xf2U' : u'\x1e\xe4', '\xe6u' : u'\x01m',
'\xe6a' : u'\x01\x03', '\xe8Y' : u'\x01x', '\xe6e' : u'\x01\x15',
'\xe6g' : u'\x01\x1f', '\xe6i' : u'\x01-', '\xf2n' : u'\x1eG',
'\xe6o' : u'\x01O', '\xe6U' : u'\x01l', '\xe7f' : u'\x1e\x1f',
'\xf2h' : u'\x1e%', '\xf2i' : u'\x1e\xcb', '\xe6A' : u'\x01\x02',
'\xe6E' : u'\x01\x14', '\xe6G' : u'\x01\x1e', '\xe6I' : u'\x01,',
'\xe9O' : u'\x01\xd1', '\xe6O' : u'\x01N', '\xf2W' : u'\x1e\x88',
'\xe3j' : u'\x015', '\xe3i' : u'\xee', '\xe3h' : u'\x01%',
'\xe3o' : u'\xf4', '\xe3c' : u'\x01\t', '\xe3a' : u'\xe2',
'\xe3g' : u'\x01\x1d', '\xe3e' : u'\xea', '\xe8W' : u'\x1e\x84',
'\xe3z' : u'\x1e\x91', '\xe3y' : u'\x01w', '\xf0K' : u'\x016',
'\xe3s' : u'\x01]', '\xe3w' : u'\x01u', '\xf0H' : u'\x1e(',
'\xe3u' : u'\xfb', '\xeay' : u'\x1e\x99', '\xe3J' : u'\x014',
'\xe3I' : u'\xce', '\xe3H' : u'\x01$', '\xe3O' : u'\xd4',
'\xe3C' : u'\x01\x08', '\xe3A' : u'\xc2', '\xe3G' : u'\x01\x1c',
'\xf0 ' : u'\xb8', '\xe3E' : u'\xca', '\xe3Z' : u'\x1e\x90',
'\xe3Y' : u'\x01v', '\xe9A' : u'\x01\xcd', '\xe3S' : u'\x01\\',
'\xf2s' : u'\x1ec', '\xe9o' : u'\x01\xd2', '\xf4A' : u'\x1e',
'\xe3W' : u'\x01t', '\xe3U' : u'\xdb', '\xf4a' : u'\x1e\x01',
'\xe4n' : u'\xf1', '\xe4o' : u'\xf5', '\xeaw' : u'\x1e\x98',
'\xe4i' : u'\x01)', '\xf2b' : u'\x1e\x05', '\xe5\xa5' : u'\x01\xe2',
'\xe4e' : u'\x1e\xbd', '\xf2L' : u'\x1e6', '\xe4a' : u'\xe3',
'\xf2m' : u'\x1eC', '\xe4y' : u'\x1e\xf9', '\xe4v' : u'\x1e}',
'\xe4u' : u'\x01i', '\xe4N' : u'\xd1', '\xe4O' : u'\xd5',
'\xe8A' : u'\xc4', '\xe8y' : u'\xff', '\xe4I' : u'\x01(',
'\xe4E' : u'\x1e\xbc', '\xe4A' : u'\xc3', '\xe9a' : u'\x01\xce',
'\xe4Y' : u'\x1e\xf8', '\xe4V' : u'\x1e|', '\xe4U' : u'\x01h',
}
UTOA = {
u'\xfe ' : '\xeb', u'\xcb' : '\xe8E', u'\xdb' : '\xe3U',
u'\xeb' : '\xe8e', u'\xfb' : '\xe3u', u'\x01\x04' : '\xf1A',
u'\xb0' : '\xc0', u'\xc0' : '\xe1A', u'\xd0' : '\xa3',
u'\xe0' : '\xe1a', u'\xf0' : '\xba', u'\x01\x14' : '\xe6E',
u'\xa1' : '\xc6', u'\xdc' : '\xe8U', u'\x01\xaf' : '\xad',
u'\xb1' : '\xab', u'\xc1' : '\xe2A', u'\xd1' : '\xe4N',
u'\x01$' : '\xe3H', u'\xe1' : '\xe2a', u'\xf1' : '\xe4n',
u'\x01' : '\xe5A', u'\x03\t' : '\xe0', u'\x014' : '\xe3J',
u'\xc6' : '\xa5', u'\xd6' : '\xe8O', u'\xe6' : '\xb5',
u'\xfc' : '\xe8u', u'\xf6' : '\xe8o', u'\x1e\xc8' : '\xe0I',
u'\x1e\xc9' : '\xe0i', u'\x1e\xca' : '\xf2I', u'\x1e\xcb' : '\xf2i',
u'\x1e\xcc' : '\xf2O', u'\x1e\xcd' : '\xf2o', u'\x1e\xce' : '\xe0O',
u'\x1e\xcf' : '\xe0o', u'\x1e\xf8' : '\xe4Y', u'\x1e\xf9' : '\xe4y',
u'\x1e\xf2' : '\xe1Y', u'\x1e\xf3' : '\xe1y', u'\x1e\xf4' : '\xf2Y',
u'\x1e\xf5' : '\xf2y', u'\x1e\xf6' : '\xe0Y', u'\x1e\xf7' : '\xe0y',
u'\xb7' : '\xa8', u'\x1e\xe4' : '\xf2U', u'\x1e\xe5' : '\xf2u',
u'\x1e\xe6' : '\xe0U', u'\x1e\xe7' : '\xe0u', u'\x1e\x98' : '\xeaw',
u'\x1e\x99' : '\xeay', u'\xc7' : '\xf0C', u'\x1e\x90' : '\xe3Z',
u'\x1e\x91' : '\xe3z', u'\x1e\x92' : '\xf2Z', u'\x1e\x93' : '\xf2z',
u'\x1e\x97' : '\xe8t', u'\x1e\x88' : '\xf2W', u'\x1e\x89' : '\xf2w',
u'\x1e\x8a' : '\xe7X', u'\x1e\x8b' : '\xe7x', u'\x1e\x8c' : '\xe8X',
u'\x1e\x8d' : '\xe8x', u'\x1e\x8e' : '\xe7Y', u'\x1e\x8f' : '\xe7y',
u'\x1e\x80' : '\xe1W', u'\x1e\x81' : '\xe1w', u'\x1e\x82' : '\xe2W',
u'\x1e\x83' : '\xe2w', u'\x1e\x84' : '\xe8W', u'\x1e\x85' : '\xe8w',
u'\x1e\x86' : '\xe7W', u'\x1e\x87' : '\xe7w', u'\x1e\xb8' : '\xf2E',
u'\x1e\xb9' : '\xf2e', u'\x1e\xba' : '\xe0E', u'\x1e\xbb' : '\xe0e',
u'\x1e\xbc' : '\xe4E', u'\x1e\xbd' : '\xe4e', u'\xe7' : '\xf0c',
u'\x1e\xa0' : '\xf2A', u'\x1e\xa1' : '\xf2a', u'\x1e\xa2' : '\xe0A',
u'\x1e\xa3' : '\xe0a', u'\x1eX' : '\xe7R', u'\x1eY' : '\xe7r',
u'\x1eZ' : '\xf2R', u'\x1e[' : '\xf2r', u'\x1eT' : '\xe2P',
u'\x1eU' : '\xe2p', u'\x1eV' : '\xe7P', u'\x1eW' : '\xe7p',
u'\x1e@' : '\xe7M', u'\x1eA' : '\xe7m', u'\x1eB' : '\xf2M',
u'\x1eC' : '\xf2m', u'\x1eD' : '\xe7N', u'\x1eE' : '\xe7n',
u'\x1eF' : '\xf2N', u'\x1eG' : '\xf2n', u'\x1e|' : '\xe4V',
u'\x1e}' : '\xe4v', u'\x1e~' : '\xf2V', u'\x1e\x7f' : '\xf2v',
u'\x1er' : '\xf3U', u'\x1es' : '\xf3u', u'\x1ej' : '\xe7T',
u'\x1ek' : '\xe7t', u'\x1el' : '\xf2T', u'\x1em' : '\xf2t',
u'\x1e`' : '\xe7S', u'\x1ea' : '\xe7s', u'\x1eb' : '\xf2S',
u'\x1ec' : '\xf2s', u'\x1e\x1e' : '\xe7F', u'\x1e\x1f' : '\xe7f',
u'\x1e\x10' : '\xf0D', u'\x1e\x11' : '\xf0d', u'\xcc' : '\xe1I',
u'\x1e\n' : '\xe7D', u'\x1e\x0b' : '\xe7d', u'\x1e\x0c' : '\xf2D',
u'\x1e\r' : '\xf2d', u'\x1e\x01' : '\xf4a', u'\x1e\x02' : '\xe7B',
u'\x1e\x03' : '\xe7b', u'\x1e\x04' : '\xf2B', u'\x1e\x05' : '\xf2b',
u'\x1e>' : '\xe2M', u'\x1e?' : '\xe2m', u'\x1e0' : '\xe2K',
u'\x1e1' : '\xe2k', u'\x1e2' : '\xf2K', u'\x1e3' : '\xf2k',
u'\xec' : '\xe1i', u'\x1e6' : '\xf2L', u'\x1e7' : '\xf2l',
u'\x1e(' : '\xf0H', u'\x1e)' : '\xf0h', u'\x1e*' : '\xf9H',
u'\x1e+' : '\xf9h', u'\x1e ' : '\xe5G', u'\x1e!' : '\xe5g',
u'\x1e"' : '\xe7H', u'\x1e#' : '\xe7h', u'\x1e$' : '\xf2H',
u'\x1e%' : '\xf2h', u'\x1e&' : '\xe8H', u"\x1e'" : '\xe8h',
u'\xcd' : '\xe2I', u'\xdd' : '\xe2Y', u'\xed' : '\xe2i',
u'\xfd' : '\xe2y', u'\xc2' : '\xe3A', u'\xd2' : '\xe1O',
u'\xe2' : '\xe3a', u'\xf2' : '\xe1o', u'\xa3' : '\xb9',
u'\x03\x0b' : '\xee', u'\x03\n' : '\xea', u'\xc3' : '\xe4A',
u'\x03\x0c' : '\xe9', u'\x03\x03' : '\xe4', u'\x03\x02' : '\xe3',
u'\x03\x01' : '\xe2', u'\x03\x07' : '\xe7', u'\x03\x06' : '\xe6',
u'\x03\x04' : '\xe5', u'\xd3' : '\xe2O', u'\x03\x1c' : '\xf8',
u'\x03\x13' : '\xfe', u'\x03\x10' : '\xef', u'\x03\x15' : '\xed',
u'\xe3' : '\xe4a', u'\x03(' : '\xf1', u'\x03.' : '\xf9',
u'\x03#' : '\xf2', u"\x03'" : '\xf0', u'\x03&' : '\xf7',
u'\x03%' : '\xf4', u'\x03$' : '\xf3', u'\xf3' : '\xe2o',
u'\x033' : '\xf5', u'\x032' : '\xf6', u'\x03' : '\xe1',
u'\xb8' : '\xf0 ', u'\xc8' : '\xe1E', u'\xd8' : '\xa2',
u'\xe8' : '\xe1e', u'\xf8' : '\xb2', u'\x1e' : '\xf4A',
u'\xa9' : '\xc3', u'\x02\xbe' : '\xae', u'\x02\xbf' : '\xb0',
u'\x02\xb9' : '\xa7', u'\x02\xba' : '\xb7', u'\xc9' : '\xe2E',
u'\xd9' : '\xe1U', u'\xfe!' : '\xec', u'\xfe"' : '\xfa',
u'\xfe#' : '\xfb', u'\xe9' : '\xe2e', u'\xf9' : '\xe1u',
u'\xae' : '\xaa', u'\xce' : '\xe3I', u'\xde' : '\xa4',
u'\xee' : '\xe3i', u'\xfe' : '\xb4', u'\x01\xcd' : '\xe9A',
u'\x01\xcf' : '\xe9I', u'\x01\xce' : '\xe9a', u'\x01\xd1' : '\xe9O',
u'\x01\xd0' : '\xe9i', u'\x01\xd3' : '\xe9U', u'\x01\xd2' : '\xe9o',
u'\x01\xd4' : '\xe9u', u'\x01\xe9' : '\xe9k', u'\x01\xe3' : '\xe5\xb5',
u'\x01\xe7' : '\xe9g', u'\x01\xe6' : '\xe9G', u'\x01\xe2' : '\xe5\xa5',
u'\x01\xe8' : '\xe9K', u'\x01\xeb' : '\xf1o', u'\x01\xea' : '\xf1O',
u'\x01\xf0' : '\xe9j', u'\x01\xf5' : '\xe2g', u'\x01\xf4' : '\xe2G',
u'\xbf' : '\xc5', u'\x01\xa1' : '\xbc', u'\x01\xfd' : '\xe2\xb5',
u'\xcf' : '\xe8I', u'\xdf' : '\xcf', u'\x01\xfc' : '\xe2\xa5',
u'\x01\xa0' : '\xac', u'\xef' : '\xe8i', u'\x01\xb0' : '\xbd',
u'\xff' : '\xe8y', u'\x01A' : '\xa1', u'\x01C' : '\xe2N',
u'\x01B' : '\xb1', u'\x01E' : '\xf0N', u'\x01D' : '\xe2n',
u'\x01G' : '\xe9N', u'\x01F' : '\xf0n', u'\x01H' : '\xe9n',
u'\x01M' : '\xe5o', u'\x01L' : '\xe5O', u'\x01O' : '\xe6o',
u'\x01N' : '\xe6O', u'\x01Q' : '\xeeo', u'\x01P' : '\xeeO',
u'\x01S' : '\xb6', u'\x01R' : '\xa6', u'\x01U' : '\xe2r',
u'\x01T' : '\xe2R', u'\x01W' : '\xf0r', u'\x01V' : '\xf0R',
u'\x01Y' : '\xe9r', u'\x01X' : '\xe9R', u'\x01[' : '\xe2s',
u'\x01Z' : '\xe2S', u'\x01]' : '\xe3s', u'\x01\\' : '\xe3S',
u'\x01_' : '\xf0s', u'\x01^' : '\xf0S', u'\x01a' : '\xe9s',
u'\x01`' : '\xe9S', u'\x01c' : '\xf0t', u'\x01b' : '\xf0T',
u'\x01e' : '\xe9t', u'\x01d' : '\xe9T', u'\x01i' : '\xe4u',
u'\x01h' : '\xe4U', u'\x01k' : '\xe5u', u'\x01j' : '\xe5U',
u'\x01m' : '\xe6u', u'\x01l' : '\xe6U', u'\x01o' : '\xeau',
u'\x01n' : '\xea\xad', u'\x01q' : '\xeeu', u'\x01p' : '\xeeU',
u'\x01s' : '\xf1u', u'\x01r' : '\xf1U', u'\x01u' : '\xe3w',
u'\x01t' : '\xe3W', u'\x01w' : '\xe3y', u'\x01v' : '\xe3Y',
u'\x01y' : '\xe2Z', u'\x01x' : '\xe8Y', u'\x01{' : '\xe7Z',
u'\x01z' : '\xe2z', u'\x01}' : '\xe9Z', u'\x01|' : '\xe7z',
u'\x01~' : '\xe9z', u'\x01\x01' : '\xe5a', u'\x01\x03' : '\xe6a',
u'\x01\x02' : '\xe6A', u'\x01\x05' : '\xf1a', u'\xc4' : '\xe8A',
u'\x01\x07' : '\xe2c', u'\x01\x06' : '\xe2C', u'\x01\t' : '\xe3c',
u'\x01\x08' : '\xe3C', u'\x01\x0b' : '\xe7c', u'\x01\n' : '\xe7C',
u'\x01\r' : '\xe9c', u'\x01\x0c' : '\xe9C', u'\x01\x0f' : '\xe9d',
u'\x01\x0e' : '\xe9D', u'\x01\x11' : '\xb3', u'\x01\x10' : '\xa3',
u'\x01\x13' : '\xe5e', u'\x01\x12' : '\xe5E', u'\x01\x15' : '\xe6e',
u'\xd4' : '\xe3O', u'\x01\x17' : '\xe7e', u'\x01\x16' : '\xe7E',
u'\x01\x19' : '\xf1e', u'\x01\x18' : '\xf1E', u'\x01\x1b' : '\xe9e',
u'\x01\x1a' : '\xe9E', u'\x01\x1d' : '\xe3g', u'\x01\x1c' : '\xe3G',
u'\x01\x1f' : '\xe6g', u'\x01\x1e' : '\xe6G', u'\x01!' : '\xe7g',
u'\x01 ' : '\xe7G', u'\x01#' : '\xf0g', u'\x01"' : '\xf0G',
u'\x01%' : '\xe3h', u'\xe4' : '\xe8a', u'\x01)' : '\xe4i',
u'\x01(' : '\xe4I', u'\x01+' : '\xe5i', u'\x01*' : '\xe5I',
u'\x01-' : '\xe6i', u'\x01,' : '\xe6I', u'\x01/' : '\xf1i',
u'\x01.' : '\xf1I', u'\x011' : '\xb8', u'\x010' : '\xe7I',
u'\x015' : '\xe3j', u'\xf4' : '\xe3o', u'\x017' : '\xf0k',
u'\x016' : '\xf0K', u'\x019' : '\xe2L', u'\x01;' : '\xf0L',
u'\x01:' : '\xe2l', u'\x01=' : '\xe9L', u'\x01<' : '\xf0l',
u'\x01>' : '\xe9l', u'\xc5' : '\xeaA', u'\xd5' : '\xe4O',
u'\xe5' : '\xeaa', u'\xf5' : '\xe4o', u'\xca' : '\xe3E',
u'\xda' : '\xe2U', u'\xea' : '\xe3e', u'\xfa' : '\xe2u',
}
_utoa = {
u'\xA1' : '\xC6', u'\xA3' : '\xB9', u'\xA9' : '\xC3',
u'\xAE' : '\xAA', u'\xB0' : '\xC0', u'\xB1' : '\xAB',
u'\xB7' : '\xA8', u'\xB8' : '\xF0\x20', u'\xBF' : '\xC5',
u'\xC0' : '\xE1\x41', u'\xC1' : '\xE2\x41', u'\xC2' : '\xE3\x41',
u'\xC3' : '\xE4\x41', u'\xC4' : '\xE8\x41', u'\xC5' : '\xEA\x41',
u'\xC6' : '\xA5', u'\xC7' : '\xF0\x43', u'\xC8' : '\xE1\x45',
u'\xC9' : '\xE2\x45', u'\xCA' : '\xE3\x45', u'\xCB' : '\xE8\x45',
u'\xCC' : '\xE1\x49', u'\xCD' : '\xE2\x49', u'\xCE' : '\xE3\x49',
u'\xCF' : '\xE8\x49', u'\xD0' : '\xA3', u'\xD1' : '\xE4\x4E',
u'\xD2' : '\xE1\x4F', u'\xD3' : '\xE2\x4F', u'\xD4' : '\xE3\x4F',
u'\xD5' : '\xE4\x4F', u'\xD6' : '\xE8\x4F', u'\xD8' : '\xA2',
u'\xD9' : '\xE1\x55', u'\xDA' : '\xE2\x55', u'\xDB' : '\xE3\x55',
u'\xDC' : '\xE8\x55', u'\xDD' : '\xE2\x59', u'\xDE' : '\xA4',
u'\xDF' : '\xCF', u'\xE0' : '\xE1\x61', u'\xE1' : '\xE2\x61',
u'\xE2' : '\xE3\x61', u'\xE3' : '\xE4\x61', u'\xE4' : '\xE8\x61',
u'\xE5' : '\xEA\x61', u'\xE6' : '\xB5', u'\xE7' : '\xF0\x63',
u'\xE8' : '\xE1\x65', u'\xE9' : '\xE2\x65', u'\xEA' : '\xE3\x65',
u'\xEB' : '\xE8\x65', u'\xEC' : '\xE1\x69', u'\xED' : '\xE2\x69',
u'\xEE' : '\xE3\x69', u'\xEF' : '\xE8\x69', u'\xF0' : '\xBA',
u'\xF1' : '\xE4\x6E', u'\xF2' : '\xE1\x6F', u'\xF3' : '\xE2\x6F',
u'\xF4' : '\xE3\x6F', u'\xF5' : '\xE4\x6F', u'\xF6' : '\xE8\x6F',
u'\xF8' : '\xB2', u'\xF9' : '\xE1\x75', u'\xFA' : '\xE2\x75',
u'\xFB' : '\xE3\x75', u'\xFC' : '\xE8\x75', u'\xFD' : '\xE2\x79',
u'\xFE' : '\xB4', u'\xFF' : '\xE8\x79', u'\x01' : '\xE5\x41',
u'\x01\x01' : '\xE5\x61', u'\x01\x02' : '\xE6\x41', u'\x01\x03' : '\xE6\x61',
u'\x01\x04' : '\xF1\x41', u'\x01\x05' : '\xF1\x61', u'\x01\x06' : '\xE2\x43',
u'\x01\x07' : '\xE2\x63', u'\x01\x08' : '\xE3\x43', u'\x01\x09' : '\xE3\x63',
u'\x01\x0A' : '\xE7\x43', u'\x01\x0B' : '\xE7\x63', u'\x01\x0C' : '\xE9\x43',
u'\x01\x0D' : '\xE9\x63', u'\x01\x0E' : '\xE9\x44', u'\x01\x0F' : '\xE9\x64',
u'\x01\x10' : '\xA3', u'\x01\x11' : '\xB3', u'\x01\x12' : '\xE5\x45',
u'\x01\x13' : '\xE5\x65', u'\x01\x14' : '\xE6\x45', u'\x01\x15' : '\xE6\x65',
u'\x01\x16' : '\xE7\x45', u'\x01\x17' : '\xE7\x65', u'\x01\x18' : '\xF1\x45',
u'\x01\x19' : '\xF1\x65', u'\x01\x1A' : '\xE9\x45', u'\x01\x1B' : '\xE9\x65',
u'\x01\x1C' : '\xE3\x47', u'\x01\x1D' : '\xE3\x67', u'\x01\x1E' : '\xE6\x47',
u'\x01\x1F' : '\xE6\x67', u'\x01\x20' : '\xE7\x47', u'\x01\x21' : '\xE7\x67',
u'\x01\x22' : '\xF0\x47', u'\x01\x23' : '\xF0\x67', u'\x01\x24' : '\xE3\x48',
u'\x01\x25' : '\xE3\x68', u'\x01\x28' : '\xE4\x49', u'\x01\x29' : '\xE4\x69',
u'\x01\x2A' : '\xE5\x49', u'\x01\x2B' : '\xE5\x69', u'\x01\x2C' : '\xE6\x49',
u'\x01\x2D' : '\xE6\x69', u'\x01\x2E' : '\xF1\x49', u'\x01\x2F' : '\xF1\x69',
u'\x01\x30' : '\xE7\x49', u'\x01\x31' : '\xB8', u'\x01\x34' : '\xE3\x4A',
u'\x01\x35' : '\xE3\x6A', u'\x01\x36' : '\xF0\x4B', u'\x01\x37' : '\xF0\x6B',
u'\x01\x39' : '\xE2\x4C', u'\x01\x3A' : '\xE2\x6C', u'\x01\x3B' : '\xF0\x4C',
u'\x01\x3C' : '\xF0\x6C', u'\x01\x3D' : '\xE9\x4C', u'\x01\x3E' : '\xE9\x6C',
u'\x01\x41' : '\xA1', u'\x01\x42' : '\xB1', u'\x01\x43' : '\xE2\x4E',
u'\x01\x44' : '\xE2\x6E', u'\x01\x45' : '\xF0\x4E', u'\x01\x46' : '\xF0\x6E',
u'\x01\x47' : '\xE9\x4E', u'\x01\x48' : '\xE9\x6E', u'\x01\x4C' : '\xE5\x4F',
u'\x01\x4D' : '\xE5\x6F', u'\x01\x4E' : '\xE6\x4F', u'\x01\x4F' : '\xE6\x6F',
u'\x01\x50' : '\xEE\x4F', u'\x01\x51' : '\xEE\x6F', u'\x01\x52' : '\xA6',
u'\x01\x53' : '\xB6', u'\x01\x54' : '\xE2\x52', u'\x01\x55' : '\xE2\x72',
u'\x01\x56' : '\xF0\x52', u'\x01\x57' : '\xF0\x72', u'\x01\x58' : '\xE9\x52',
u'\x01\x59' : '\xE9\x72', u'\x01\x5A' : '\xE2\x53', u'\x01\x5B' : '\xE2\x73',
u'\x01\x5C' : '\xE3\x53', u'\x01\x5D' : '\xE3\x73', u'\x01\x5E' : '\xF0\x53',
u'\x01\x5F' : '\xF0\x73', u'\x01\x60' : '\xE9\x53', u'\x01\x61' : '\xE9\x73',
u'\x01\x62' : '\xF0\x54', u'\x01\x63' : '\xF0\x74', u'\x01\x64' : '\xE9\x54',
u'\x01\x65' : '\xE9\x74', u'\x01\x68' : '\xE4\x55', u'\x01\x69' : '\xE4\x75',
u'\x01\x6A' : '\xE5\x55', u'\x01\x6B' : '\xE5\x75', u'\x01\x6C' : '\xE6\x55',
u'\x01\x6D' : '\xE6\x75', u'\x01\x6E' : '\xEA\xAD', u'\x01\x6F' : '\xEA\x75',
u'\x01\x70' : '\xEE\x55', u'\x01\x71' : '\xEE\x75', u'\x01\x72' : '\xF1\x55',
u'\x01\x73' : '\xF1\x75', u'\x01\x74' : '\xE3\x57', u'\x01\x75' : '\xE3\x77',
u'\x01\x76' : '\xE3\x59', u'\x01\x77' : '\xE3\x79', u'\x01\x78' : '\xE8\x59',
u'\x01\x79' : '\xE2\x5A', u'\x01\x7A' : '\xE2\x7A', u'\x01\x7B' : '\xE7\x5A',
u'\x01\x7C' : '\xE7\x7A', u'\x01\x7D' : '\xE9\x5A', u'\x01\x7E' : '\xE9\x7A',
u'\x01\xA0' : '\xAC', u'\x01\xA1' : '\xBC', u'\x01\xAF' : '\xAD',
u'\x01\xB0' : '\xBD', u'\x01\xCD' : '\xE9\x41', u'\x01\xCE' : '\xE9\x61',
u'\x01\xCF' : '\xE9\x49', u'\x01\xD0' : '\xE9\x69', u'\x01\xD1' : '\xE9\x4F',
u'\x01\xD2' : '\xE9\x6F', u'\x01\xD3' : '\xE9\x55', u'\x01\xD4' : '\xE9\x75',
u'\x01\xE2' : '\xE5\xA5', u'\x01\xE3' : '\xE5\xB5', u'\x01\xE6' : '\xE9\x47',
u'\x01\xE7' : '\xE9\x67', u'\x01\xE8' : '\xE9\x4B', u'\x01\xE9' : '\xE9\x6B',
u'\x01\xEA' : '\xF1\x4F', u'\x01\xEB' : '\xF1\x6F', u'\x01\xF0' : '\xE9\x6A',
u'\x01\xF4' : '\xE2\x47', u'\x01\xF5' : '\xE2\x67', u'\x01\xFC' : '\xE2\xA5',
u'\x01\xFD' : '\xE2\xB5', u'\x02\xB9' : '\xA7', u'\x02\xBA' : '\xB7',
u'\x02\xBE' : '\xAE', u'\x02\xBF' : '\xB0', u'\x03' : '\xE1',
u'\x03\x01' : '\xE2', u'\x03\x02' : '\xE3', u'\x03\x03' : '\xE4',
u'\x03\x04' : '\xE5', u'\x03\x06' : '\xE6', u'\x03\x07' : '\xE7',
u'\x03\x09' : '\xE0', u'\x03\x0A' : '\xEA', u'\x03\x0B' : '\xEE',
u'\x03\x0C' : '\xE9', u'\x03\x10' : '\xEF', u'\x03\x13' : '\xFE',
u'\x03\x15' : '\xED', u'\x03\x1C' : '\xF8', u'\x03\x23' : '\xF2',
u'\x03\x24' : '\xF3', u'\x03\x25' : '\xF4', u'\x03\x26' : '\xF7',
u'\x03\x27' : '\xF0', u'\x03\x28' : '\xF1', u'\x03\x2E' : '\xF9',
u'\x03\x32' : '\xF6', u'\x03\x33' : '\xF5', u'\x1E' : '\xF4\x41',
u'\x1E\x01' : '\xF4\x61', u'\x1E\x02' : '\xE7\x42', u'\x1E\x03' : '\xE7\x62',
u'\x1E\x04' : '\xF2\x42', u'\x1E\x05' : '\xF2\x62', u'\x1E\x0A' : '\xE7\x44',
u'\x1E\x0B' : '\xE7\x64', u'\x1E\x0C' : '\xF2\x44', u'\x1E\x0D' : '\xF2\x64',
u'\x1E\x10' : '\xF0\x44', u'\x1E\x11' : '\xF0\x64', u'\x1E\x1E' : '\xE7\x46',
u'\x1E\x1F' : '\xE7\x66', u'\x1E\x20' : '\xE5\x47', u'\x1E\x21' : '\xE5\x67',
u'\x1E\x22' : '\xE7\x48', u'\x1E\x23' : '\xE7\x68', u'\x1E\x24' : '\xF2\x48',
u'\x1E\x25' : '\xF2\x68', u'\x1E\x26' : '\xE8\x48', u'\x1E\x27' : '\xE8\x68',
u'\x1E\x28' : '\xF0\x48', u'\x1E\x29' : '\xF0\x68', u'\x1E\x2A' : '\xF9\x48',
u'\x1E\x2B' : '\xF9\x68', u'\x1E\x30' : '\xE2\x4B', u'\x1E\x31' : '\xE2\x6B',
u'\x1E\x32' : '\xF2\x4B', u'\x1E\x33' : '\xF2\x6B', u'\x1E\x36' : '\xF2\x4C',
u'\x1E\x37' : '\xF2\x6C', u'\x1E\x3E' : '\xE2\x4D', u'\x1E\x3F' : '\xE2\x6D',
u'\x1E\x40' : '\xE7\x4D', u'\x1E\x41' : '\xE7\x6D', u'\x1E\x42' : '\xF2\x4D',
u'\x1E\x43' : '\xF2\x6D', u'\x1E\x44' : '\xE7\x4E', u'\x1E\x45' : '\xE7\x6E',
u'\x1E\x46' : '\xF2\x4E', u'\x1E\x47' : '\xF2\x6E', u'\x1E\x54' : '\xE2\x50',
u'\x1E\x55' : '\xE2\x70', u'\x1E\x56' : '\xE7\x50', u'\x1E\x57' : '\xE7\x70',
u'\x1E\x58' : '\xE7\x52', u'\x1E\x59' : '\xE7\x72', u'\x1E\x5A' : '\xF2\x52',
u'\x1E\x5B' : '\xF2\x72', u'\x1E\x60' : '\xE7\x53', u'\x1E\x61' : '\xE7\x73',
u'\x1E\x62' : '\xF2\x53', u'\x1E\x63' : '\xF2\x73', u'\x1E\x6A' : '\xE7\x54',
u'\x1E\x6B' : '\xE7\x74', u'\x1E\x6C' : '\xF2\x54', u'\x1E\x6D' : '\xF2\x74',
u'\x1E\x72' : '\xF3\x55', u'\x1E\x73' : '\xF3\x75', u'\x1E\x7C' : '\xE4\x56',
u'\x1E\x7D' : '\xE4\x76', u'\x1E\x7E' : '\xF2\x56', u'\x1E\x7F' : '\xF2\x76',
u'\x1E\x80' : '\xE1\x57', u'\x1E\x81' : '\xE1\x77', u'\x1E\x82' : '\xE2\x57',
u'\x1E\x83' : '\xE2\x77', u'\x1E\x84' : '\xE8\x57', u'\x1E\x85' : '\xE8\x77',
u'\x1E\x86' : '\xE7\x57', u'\x1E\x87' : '\xE7\x77', u'\x1E\x88' : '\xF2\x57',
u'\x1E\x89' : '\xF2\x77', u'\x1E\x8A' : '\xE7\x58', u'\x1E\x8B' : '\xE7\x78',
u'\x1E\x8C' : '\xE8\x58', u'\x1E\x8D' : '\xE8\x78', u'\x1E\x8E' : '\xE7\x59',
u'\x1E\x8F' : '\xE7\x79', u'\x1E\x90' : '\xE3\x5A', u'\x1E\x91' : '\xE3\x7A',
u'\x1E\x92' : '\xF2\x5A', u'\x1E\x93' : '\xF2\x7A', u'\x1E\x97' : '\xE8\x74',
u'\x1E\x98' : '\xEA\x77', u'\x1E\x99' : '\xEA\x79', u'\x1E\xA0' : '\xF2\x41',
u'\x1E\xA1' : '\xF2\x61', u'\x1E\xA2' : '\xE0\x41', u'\x1E\xA3' : '\xE0\x61',
u'\x1E\xB8' : '\xF2\x45', u'\x1E\xB9' : '\xF2\x65', u'\x1E\xBA' : '\xE0\x45',
u'\x1E\xBB' : '\xE0\x65', u'\x1E\xBC' : '\xE4\x45', u'\x1E\xBD' : '\xE4\x65',
u'\x1E\xC8' : '\xE0\x49', u'\x1E\xC9' : '\xE0\x69', u'\x1E\xCA' : '\xF2\x49',
u'\x1E\xCB' : '\xF2\x69', u'\x1E\xCC' : '\xF2\x4F', u'\x1E\xCD' : '\xF2\x6F',
u'\x1E\xCE' : '\xE0\x4F', u'\x1E\xCF' : '\xE0\x6F', u'\x1E\xE4' : '\xF2\x55',
u'\x1E\xE5' : '\xF2\x75', u'\x1E\xE6' : '\xE0\x55', u'\x1E\xE7' : '\xE0\x75',
u'\x1E\xF2' : '\xE1\x59', u'\x1E\xF3' : '\xE1\x79', u'\x1E\xF4' : '\xF2\x59',
u'\x1E\xF5' : '\xF2\x79', u'\x1E\xF6' : '\xE0\x59', u'\x1E\xF7' : '\xE0\x79',
u'\x1E\xF8' : '\xE4\x59', u'\x1E\xF9' : '\xE4\x79',
# u'\x20\x0C' : '\x8E', u'\x20\x0D' : '\x8D', u'\x21\x13' : '\xC1',
# u'\x21\x17' : '\xC2', u'\x26\x6D' : '\xA9', u'\x26\x6F' : '\xC4',
u'\xFE\x20' : '\xEB',
u'\xFE\x21' : '\xEC', u'\xFE\x22' : '\xFA', u'\xFE\x23' : '\xFB',
}
def ansel_to_utf8(s):
#-------------------------------------------------------------------------
#
# ansel_to_utf8
#
#-------------------------------------------------------------------------
def ansel_to_utf8(inp):
"""Converts an ANSEL encoded string to UTF8"""
buff = cStringIO.StringIO()
while s:
c0 = ord(s[0])
if c0 <= 31:
while inp:
char0 = ord(inp[0])
if char0 <= 31:
head = u' '
s = s[1:]
elif c0 > 127:
l2 = s[0:2]
l1 = s[0]
if _twobyte.has_key(l2):
head = _twobyte[l2]
s = s[2:]
elif _onebyte.has_key(l1):
head = _onebyte[l1]
s = s[1:]
inp = inp[1:]
elif char0 > 127:
char2 = inp[0:2]
char1 = inp[0]
if TWOBYTE.has_key(char2):
head = TWOBYTE[char2]
inp = inp[2:]
elif ONEBYTE.has_key(char1):
head = ONEBYTE[char1]
inp = inp[1:]
else:
head = u'\xff\xfd'
s = s[1:]
inp = inp[1:]
else:
head = s[0]
s = s[1:]
head = inp[0]
inp = inp[1:]
buff.write(head)
ans = unicode(buff.getvalue())
buff.close()
return ans
def utf8_to_ansel(s):
#-------------------------------------------------------------------------
#
# utf8_to_ansel
#
#-------------------------------------------------------------------------
def utf8_to_ansel(inp):
"""Converts an UTF8 encoded string to ANSEL"""
if type(s) != unicode:
s = unicode(s)
if type(inp) != unicode:
inp = unicode(inp)
buff = cStringIO.StringIO()
while s:
c0 = ord(s[0])
if c0 <= 3 or c0 == 0x1e or c0 >= 0xf3:
while inp:
char0 = ord(inp[0])
if char0 <= 3 or char0 == 0x1e or char0 >= 0xf3:
try:
head = _utoa[s[0:2]]
s = s[2:]
head = UTOA[inp[0:2]]
inp = inp[2:]
except:
try:
head = _utoa[s[0:1]]
s = s[1:]
except:
head = '?'
s = s[1:]
elif c0 > 127:
try:
head = UTOA[inp[0:1]]
inp = inp[1:]
except:
head = '?'
inp = inp[1:]
elif char0 > 127:
try:
head = _utoa[s[0:1]]
s = s[1:]
head = UTOA[inp[0:1]]
inp = inp[1:]
except:
head = '?'
s = s[1:]
inp = inp[1:]
else:
head = s[0]
s = s[1:]
head = inp[0]
inp = inp[1:]
buff.write(head)
ans = buff.getvalue()
buff.close()
return ans