From a98a4f8bb56eacffff1765ff09dd29af26e5fc12 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Wed, 27 Aug 2014 11:45:21 -0400
Subject: [PATCH] Remove 3rd party libs from our repository and define the dependencies in composer.json-dist. Also remove the ancient utf8 lib and replace it with 'Patchwork UTF-8 for PHP'.

---
 /dev/null                               |  171 ----------------------------------
 program/lib/Roundcube/bootstrap.php     |    6 
 installer/check.php                     |   15 +-
 program/lib/Roundcube/rcube_charset.php |   26 ----
 composer.json-dist                      |   39 +++++++
 program/include/iniset.php              |   15 ++-
 installer/index.php                     |    9 +
 7 files changed, 70 insertions(+), 211 deletions(-)

diff --git a/composer.json-dist b/composer.json-dist
index e746203..7791ca9 100644
--- a/composer.json-dist
+++ b/composer.json-dist
@@ -4,13 +4,50 @@
     "license": "GPL-3.0+",
     "repositories": [
         {
+            "type": "pear",
+            "url": "http://pear.php.net/"
+        },
+        {
             "type": "composer",
             "url": "http://plugins.roundcube.net/"
+        },
+        {
+            "type": "vcs",
+            "url": "git@github.com:roundcube/sample-plugin.git"
+        },
+        {
+            "type": "vcs",
+            "url": "git://git.kolab.org/git/pear/Net_LDAP3"
+        },
+        {
+            "type": "package",
+            "package": {
+                "name": "Net_SMTP",
+                "version": "dev-master",
+                "source": {
+                    "url": "http://github.com/pear/Net_SMTP",
+                    "type": "git",
+                    "reference": "master"
+                }
+            }
         }
     ],
     "require": {
         "php": ">=5.3.0",
-        "roundcube/plugin-installer": ">=0.1.3"
+        "roundcube/plugin-installer": ">=0.1.3",
+        "pear/mail_mime": ">=1.8.9",
+        "pear/mail_mime-decode": ">=1.5.5",
+        "pear/net_smtp": "dev-master",
+        "pear-pear.php.net/auth_sasl": ">=1.0.6",
+        "pear-pear.php.net/net_idna2": ">=0.1.1",
+        "pear-pear.php.net/net_sieve": ">=1.3.2",
+        "pear-pear.php.net/net_ldap2": ">=2.0.12",
+        "kolab/Net_LDAP3": "dev-master",
+        "patchwork/utf8": "1.2.x"
+    },
+    "require-dev": {
+        "pear-pear.php.net/crypt_gpg": "*",
+        "phpunit/phpunit": "*"
     },
     "minimum-stability": "dev"
 }
diff --git a/installer/check.php b/installer/check.php
index 31b4c29..6974d37 100644
--- a/installer/check.php
+++ b/installer/check.php
@@ -28,10 +28,13 @@
 );
 
 $required_libs = array(
-    'PEAR'      => 'PEAR.php',
-    'Net_SMTP'  => 'Net/SMTP.php',
-    'Net_IDNA2' => 'Net/IDNA2.php',
-    'Mail_mime' => 'Mail/mime.php',
+    'PEAR'      => 'pear.php.net',
+    'Auth_SASL' => 'pear.php.net',
+    'Net_SMTP'  => 'pear.php.net',
+    'Net_IDNA2' => 'pear.php.net',
+    'Net_LDAP3' => 'git.kolab.org',
+    'Mail_mime' => 'pear.php.net',
+    'Mail_mimeDecode' => 'pear.php.net',
 );
 
 $ini_checks = array(
@@ -160,13 +163,13 @@
 
 <?php
 
-foreach ($required_libs as $classname => $file) {
+foreach ($required_libs as $classname => $vendor) {
     @include_once $file;
     if (class_exists($classname)) {
         $RCI->pass($classname);
     }
     else {
-        $RCI->fail($classname, "Failed to load $file", $source_urls[$classname]);
+        $RCI->fail($classname, "Failed to load class $classname from $vendor", $source_urls[$classname]);
     }
     echo "<br />";
 }
diff --git a/installer/index.php b/installer/index.php
index 044eb3f..b93ad2f 100644
--- a/installer/index.php
+++ b/installer/index.php
@@ -3,9 +3,9 @@
 /*
  +-------------------------------------------------------------------------+
  | Roundcube Webmail setup tool                                            |
- | Version 0.9-git                                                         |
+ | Version 1.1-git                                                         |
  |                                                                         |
- | Copyright (C) 2009-2013, The Roundcube Dev Team                         |
+ | Copyright (C) 2009-2014, The Roundcube Dev Team                         |
  |                                                                         |
  | This program is free software: you can redistribute it and/or modify    |
  | it under the terms of the GNU General Public License (with exceptions   |
@@ -49,6 +49,11 @@
 
 set_include_path($include_path);
 
+// include composer autoloader (if available)
+if (@file_exists(INSTALL_PATH . 'vendor/autoload.php')) {
+    require INSTALL_PATH . 'vendor/autoload.php';
+}
+
 require_once 'Roundcube/bootstrap.php';
 // deprecated aliases (to be removed)
 require_once 'bc.php';
diff --git a/program/include/iniset.php b/program/include/iniset.php
index 5c30654..b2cad42 100644
--- a/program/include/iniset.php
+++ b/program/include/iniset.php
@@ -54,20 +54,25 @@
 // (does not work in safe mode)
 @set_time_limit(120);
 
+// include composer autoloader (if available)
+if (@file_exists('vendor/autoload.php')) {
+    require 'vendor/autoload.php';
+}
+
 // include Roundcube Framework
 require_once 'Roundcube/bootstrap.php';
 
 // register autoloader for rcmail app classes
 spl_autoload_register('rcmail_autoload');
 
-// include composer autoloader (if available)
-if (@file_exists('vendor/autoload.php')) {
-    require 'vendor/autoload.php';
-}
-
 // backward compatybility (to be removed)
 require_once INSTALL_PATH . 'program/include/bc.php';
 
+// load the UTF-8 portablity layer from Patchwor
+if (!function_exists('iconv') || !function_exists('utf8_encode') || !extension_loaded('mbstring')) {
+    \Patchwork\Utf8\Bootup::initAll();
+}
+
 
 /**
  * PHP5 autoloader routine for dynamic class loading
diff --git a/program/lib/Auth/SASL.php b/program/lib/Auth/SASL.php
deleted file mode 100644
index 5bd6eb0..0000000
--- a/program/lib/Auth/SASL.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003 Richard Heyes                                 |
-// | All rights reserved.                                                  |
-// |                                                                       |
-// | Redistribution and use in source and binary forms, with or without    |
-// | modification, are permitted provided that the following conditions    |
-// | are met:                                                              |
-// |                                                                       |
-// | o Redistributions of source code must retain the above copyright      |
-// |   notice, this list of conditions and the following disclaimer.       |
-// | o Redistributions in binary form must reproduce the above copyright   |
-// |   notice, this list of conditions and the following disclaimer in the |
-// |   documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote      |
-// |   products derived from this software without specific prior written  |
-// |   permission.                                                         |
-// |                                                                       |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
-// |                                                                       |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@php.net>                               |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Client implementation of various SASL mechanisms
-*
-* @author  Richard Heyes <richard@php.net>
-* @access  public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('PEAR.php');
-
-class Auth_SASL
-{
-    /**
-    * Factory class. Returns an object of the request
-    * type.
-    *
-    * @param string $type One of: Anonymous
-    *                             Plain
-    *                             CramMD5
-    *                             DigestMD5
-    *                             SCRAM-* (any mechanism of the SCRAM family)
-    *                     Types are not case sensitive
-    */
-    function &factory($type)
-    {
-        switch (strtolower($type)) {
-            case 'anonymous':
-                $filename  = 'Auth/SASL/Anonymous.php';
-                $classname = 'Auth_SASL_Anonymous';
-                break;
-
-            case 'login':
-                $filename  = 'Auth/SASL/Login.php';
-                $classname = 'Auth_SASL_Login';
-                break;
-
-            case 'plain':
-                $filename  = 'Auth/SASL/Plain.php';
-                $classname = 'Auth_SASL_Plain';
-                break;
-
-            case 'external':
-                $filename  = 'Auth/SASL/External.php';
-                $classname = 'Auth_SASL_External';
-                break;
-
-            case 'crammd5':
-                // $msg = 'Deprecated mechanism name. Use IANA-registered name: CRAM-MD5.';
-                // trigger_error($msg, E_USER_DEPRECATED);
-            case 'cram-md5':
-                $filename  = 'Auth/SASL/CramMD5.php';
-                $classname = 'Auth_SASL_CramMD5';
-                break;
-
-            case 'digestmd5':
-                // $msg = 'Deprecated mechanism name. Use IANA-registered name: DIGEST-MD5.';
-                // trigger_error($msg, E_USER_DEPRECATED);
-            case 'digest-md5':
-                // $msg = 'DIGEST-MD5 is a deprecated SASL mechanism as per RFC-6331. Using it could be a security risk.';
-                // trigger_error($msg, E_USER_NOTICE);
-                $filename  = 'Auth/SASL/DigestMD5.php';
-                $classname = 'Auth_SASL_DigestMD5';
-                break;
-
-            default:
-                $scram = '/^SCRAM-(.{1,9})$/i';
-                if (preg_match($scram, $type, $matches))
-                {
-                    $hash = $matches[1];
-                    $filename = dirname(__FILE__) .'/SASL/SCRAM.php';
-                    $classname = 'Auth_SASL_SCRAM';
-                    $parameter = $hash;
-                    break;
-                }
-                return PEAR::raiseError('Invalid SASL mechanism type');
-                break;
-        }
-
-        require_once($filename);
-        if (isset($parameter))
-            $obj = new $classname($parameter);
-        else
-            $obj = new $classname();
-        return $obj;
-    }
-}
-
-?>
diff --git a/program/lib/Auth/SASL/Anonymous.php b/program/lib/Auth/SASL/Anonymous.php
deleted file mode 100644
index 0811909..0000000
--- a/program/lib/Auth/SASL/Anonymous.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+ 
-// | Copyright (c) 2002-2003 Richard Heyes                                 | 
-// | All rights reserved.                                                  | 
-// |                                                                       | 
-// | Redistribution and use in source and binary forms, with or without    | 
-// | modification, are permitted provided that the following conditions    | 
-// | are met:                                                              | 
-// |                                                                       | 
-// | o Redistributions of source code must retain the above copyright      | 
-// |   notice, this list of conditions and the following disclaimer.       | 
-// | o Redistributions in binary form must reproduce the above copyright   | 
-// |   notice, this list of conditions and the following disclaimer in the | 
-// |   documentation and/or other materials provided with the distribution.| 
-// | o The names of the authors may not be used to endorse or promote      | 
-// |   products derived from this software without specific prior written  | 
-// |   permission.                                                         | 
-// |                                                                       | 
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   | 
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     | 
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  | 
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      | 
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   | 
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  | 
-// |                                                                       | 
-// +-----------------------------------------------------------------------+ 
-// | Author: Richard Heyes <richard@php.net>                               | 
-// +-----------------------------------------------------------------------+ 
-// 
-// $Id$
-
-/**
-* Implmentation of ANONYMOUS SASL mechanism
-*
-* @author  Richard Heyes <richard@php.net>
-* @access  public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_Anonymous extends Auth_SASL_Common
-{
-    /**
-    * Not much to do here except return the token supplied.
-    * No encoding, hashing or encryption takes place for this
-    * mechanism, simply one of:
-    *  o An email address
-    *  o An opaque string not containing "@" that can be interpreted
-    *    by the sysadmin
-    *  o Nothing
-    *
-    * We could have some logic here for the second option, but this
-    * would by no means create something interpretable.
-    *
-    * @param  string $token Optional email address or string to provide
-    *                       as trace information.
-    * @return string        The unaltered input token
-    */
-    function getResponse($token = '')
-    {
-        return $token;
-    }
-}
-?>
\ No newline at end of file
diff --git a/program/lib/Auth/SASL/Common.php b/program/lib/Auth/SASL/Common.php
deleted file mode 100644
index d8c5610..0000000
--- a/program/lib/Auth/SASL/Common.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003 Richard Heyes                                 |
-// | All rights reserved.                                                  |
-// |                                                                       |
-// | Redistribution and use in source and binary forms, with or without    |
-// | modification, are permitted provided that the following conditions    |
-// | are met:                                                              |
-// |                                                                       |
-// | o Redistributions of source code must retain the above copyright      |
-// |   notice, this list of conditions and the following disclaimer.       |
-// | o Redistributions in binary form must reproduce the above copyright   |
-// |   notice, this list of conditions and the following disclaimer in the |
-// |   documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote      |
-// |   products derived from this software without specific prior written  |
-// |   permission.                                                         |
-// |                                                                       |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
-// |                                                                       |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@php.net>                               |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Common functionality to SASL mechanisms
-*
-* @author  Richard Heyes <richard@php.net>
-* @access  public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-class Auth_SASL_Common
-{
-    /**
-    * Function which implements HMAC MD5 digest
-    *
-    * @param  string $key  The secret key
-    * @param  string $data The data to hash
-    * @param  bool $raw_output Whether the digest is returned in binary or hexadecimal format.
-    *
-    * @return string       The HMAC-MD5 digest
-    */
-    function _HMAC_MD5($key, $data, $raw_output = FALSE)
-    {
-        if (strlen($key) > 64) {
-            $key = pack('H32', md5($key));
-        }
-
-        if (strlen($key) < 64) {
-            $key = str_pad($key, 64, chr(0));
-        }
-
-        $k_ipad = substr($key, 0, 64) ^ str_repeat(chr(0x36), 64);
-        $k_opad = substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64);
-
-        $inner  = pack('H32', md5($k_ipad . $data));
-        $digest = md5($k_opad . $inner, $raw_output);
-
-        return $digest;
-    }
-
-    /**
-    * Function which implements HMAC-SHA-1 digest
-    *
-    * @param  string $key  The secret key
-    * @param  string $data The data to hash
-    * @param  bool $raw_output Whether the digest is returned in binary or hexadecimal format.
-    * @return string       The HMAC-SHA-1 digest
-    * @author Jehan <jehan.marmottard@gmail.com>
-    * @access protected
-    */
-    protected function _HMAC_SHA1($key, $data, $raw_output = FALSE)
-    {
-        if (strlen($key) > 64) {
-            $key = sha1($key, TRUE);
-        }
-
-        if (strlen($key) < 64) {
-            $key = str_pad($key, 64, chr(0));
-        }
-
-        $k_ipad = substr($key, 0, 64) ^ str_repeat(chr(0x36), 64);
-        $k_opad = substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64);
-
-        $inner  = pack('H40', sha1($k_ipad . $data));
-        $digest = sha1($k_opad . $inner, $raw_output);
-
-         return $digest;
-     }
-}
-?>
diff --git a/program/lib/Auth/SASL/CramMD5.php b/program/lib/Auth/SASL/CramMD5.php
deleted file mode 100644
index d3fbf17..0000000
--- a/program/lib/Auth/SASL/CramMD5.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+ 
-// | Copyright (c) 2002-2003 Richard Heyes                                 | 
-// | All rights reserved.                                                  | 
-// |                                                                       | 
-// | Redistribution and use in source and binary forms, with or without    | 
-// | modification, are permitted provided that the following conditions    | 
-// | are met:                                                              | 
-// |                                                                       | 
-// | o Redistributions of source code must retain the above copyright      | 
-// |   notice, this list of conditions and the following disclaimer.       | 
-// | o Redistributions in binary form must reproduce the above copyright   | 
-// |   notice, this list of conditions and the following disclaimer in the | 
-// |   documentation and/or other materials provided with the distribution.| 
-// | o The names of the authors may not be used to endorse or promote      | 
-// |   products derived from this software without specific prior written  | 
-// |   permission.                                                         | 
-// |                                                                       | 
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   | 
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     | 
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  | 
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      | 
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   | 
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  | 
-// |                                                                       | 
-// +-----------------------------------------------------------------------+ 
-// | Author: Richard Heyes <richard@php.net>                               | 
-// +-----------------------------------------------------------------------+ 
-// 
-// $Id$
-
-/**
-* Implmentation of CRAM-MD5 SASL mechanism
-*
-* @author  Richard Heyes <richard@php.net>
-* @access  public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_CramMD5 extends Auth_SASL_Common
-{
-    /**
-    * Implements the CRAM-MD5 SASL mechanism
-    * This DOES NOT base64 encode the return value,
-    * you will need to do that yourself.
-    *
-    * @param string $user      Username
-    * @param string $pass      Password
-    * @param string $challenge The challenge supplied by the server.
-    *                          this should be already base64_decoded.
-    *
-    * @return string The string to pass back to the server, of the form
-    *                "<user> <digest>". This is NOT base64_encoded.
-    */
-    function getResponse($user, $pass, $challenge)
-    {
-        return $user . ' ' . $this->_HMAC_MD5($pass, $challenge);
-    }
-}
-?>
\ No newline at end of file
diff --git a/program/lib/Auth/SASL/DigestMD5.php b/program/lib/Auth/SASL/DigestMD5.php
deleted file mode 100644
index 07007b7..0000000
--- a/program/lib/Auth/SASL/DigestMD5.php
+++ /dev/null
@@ -1,197 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+ 
-// | Copyright (c) 2002-2003 Richard Heyes                                 | 
-// | All rights reserved.                                                  | 
-// |                                                                       | 
-// | Redistribution and use in source and binary forms, with or without    | 
-// | modification, are permitted provided that the following conditions    | 
-// | are met:                                                              | 
-// |                                                                       | 
-// | o Redistributions of source code must retain the above copyright      | 
-// |   notice, this list of conditions and the following disclaimer.       | 
-// | o Redistributions in binary form must reproduce the above copyright   | 
-// |   notice, this list of conditions and the following disclaimer in the | 
-// |   documentation and/or other materials provided with the distribution.| 
-// | o The names of the authors may not be used to endorse or promote      | 
-// |   products derived from this software without specific prior written  | 
-// |   permission.                                                         | 
-// |                                                                       | 
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   | 
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     | 
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  | 
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      | 
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   | 
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  | 
-// |                                                                       | 
-// +-----------------------------------------------------------------------+ 
-// | Author: Richard Heyes <richard@php.net>                               | 
-// +-----------------------------------------------------------------------+ 
-// 
-// $Id$
-
-/**
-* Implmentation of DIGEST-MD5 SASL mechanism
-*
-* @author  Richard Heyes <richard@php.net>
-* @access  public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_DigestMD5 extends Auth_SASL_Common
-{
-    /**
-    * Provides the (main) client response for DIGEST-MD5
-    * requires a few extra parameters than the other
-    * mechanisms, which are unavoidable.
-    * 
-    * @param  string $authcid   Authentication id (username)
-    * @param  string $pass      Password
-    * @param  string $challenge The digest challenge sent by the server
-    * @param  string $hostname  The hostname of the machine you're connecting to
-    * @param  string $service   The servicename (eg. imap, pop, acap etc)
-    * @param  string $authzid   Authorization id (username to proxy as)
-    * @return string            The digest response (NOT base64 encoded)
-    * @access public
-    */
-    function getResponse($authcid, $pass, $challenge, $hostname, $service, $authzid = '')
-    {
-        $challenge = $this->_parseChallenge($challenge);
-        $authzid_string = '';
-        if ($authzid != '') {
-            $authzid_string = ',authzid="' . $authzid . '"'; 
-        }
-
-        if (!empty($challenge)) {
-            $cnonce         = $this->_getCnonce();
-            $digest_uri     = sprintf('%s/%s', $service, $hostname);
-            $response_value = $this->_getResponseValue($authcid, $pass, $challenge['realm'], $challenge['nonce'], $cnonce, $digest_uri, $authzid);
-
-            if ($challenge['realm']) {
-                return sprintf('username="%s",realm="%s"' . $authzid_string  .
-',nonce="%s",cnonce="%s",nc=00000001,qop=auth,digest-uri="%s",response=%s,maxbuf=%d', $authcid, $challenge['realm'], $challenge['nonce'], $cnonce, $digest_uri, $response_value, $challenge['maxbuf']);
-            } else {
-                return sprintf('username="%s"' . $authzid_string  . ',nonce="%s",cnonce="%s",nc=00000001,qop=auth,digest-uri="%s",response=%s,maxbuf=%d', $authcid, $challenge['nonce'], $cnonce, $digest_uri, $response_value, $challenge['maxbuf']);
-            }
-        } else {
-            return PEAR::raiseError('Invalid digest challenge');
-        }
-    }
-    
-    /**
-    * Parses and verifies the digest challenge*
-    *
-    * @param  string $challenge The digest challenge
-    * @return array             The parsed challenge as an assoc
-    *                           array in the form "directive => value".
-    * @access private
-    */
-    function _parseChallenge($challenge)
-    {
-        $tokens = array();
-        while (preg_match('/^([a-z-]+)=("[^"]+(?<!\\\)"|[^,]+)/i', $challenge, $matches)) {
-
-            // Ignore these as per rfc2831
-            if ($matches[1] == 'opaque' OR $matches[1] == 'domain') {
-                $challenge = substr($challenge, strlen($matches[0]) + 1);
-                continue;
-            }
-
-            // Allowed multiple "realm" and "auth-param"
-            if (!empty($tokens[$matches[1]]) AND ($matches[1] == 'realm' OR $matches[1] == 'auth-param')) {
-                if (is_array($tokens[$matches[1]])) {
-                    $tokens[$matches[1]][] = preg_replace('/^"(.*)"$/', '\\1', $matches[2]);
-                } else {
-                    $tokens[$matches[1]] = array($tokens[$matches[1]], preg_replace('/^"(.*)"$/', '\\1', $matches[2]));
-                }
-
-            // Any other multiple instance = failure
-            } elseif (!empty($tokens[$matches[1]])) {
-                $tokens = array();
-                break;
-
-            } else {
-                $tokens[$matches[1]] = preg_replace('/^"(.*)"$/', '\\1', $matches[2]);
-            }
-
-            // Remove the just parsed directive from the challenge
-            $challenge = substr($challenge, strlen($matches[0]) + 1);
-        }
-
-        /**
-        * Defaults and required directives
-        */
-        // Realm
-        if (empty($tokens['realm'])) {
-            $tokens['realm'] = "";
-        }
-
-        // Maxbuf
-        if (empty($tokens['maxbuf'])) {
-            $tokens['maxbuf'] = 65536;
-        }
-
-        // Required: nonce, algorithm
-        if (empty($tokens['nonce']) OR empty($tokens['algorithm'])) {
-            return array();
-        }
-
-        return $tokens;
-    }
-
-    /**
-    * Creates the response= part of the digest response
-    *
-    * @param  string $authcid    Authentication id (username)
-    * @param  string $pass       Password
-    * @param  string $realm      Realm as provided by the server
-    * @param  string $nonce      Nonce as provided by the server
-    * @param  string $cnonce     Client nonce
-    * @param  string $digest_uri The digest-uri= value part of the response
-    * @param  string $authzid    Authorization id
-    * @return string             The response= part of the digest response
-    * @access private
-    */    
-    function _getResponseValue($authcid, $pass, $realm, $nonce, $cnonce, $digest_uri, $authzid = '')
-    {
-        if ($authzid == '') {
-            $A1 = sprintf('%s:%s:%s', pack('H32', md5(sprintf('%s:%s:%s', $authcid, $realm, $pass))), $nonce, $cnonce);
-        } else {
-            $A1 = sprintf('%s:%s:%s:%s', pack('H32', md5(sprintf('%s:%s:%s', $authcid, $realm, $pass))), $nonce, $cnonce, $authzid);
-        }
-        $A2 = 'AUTHENTICATE:' . $digest_uri;
-        return md5(sprintf('%s:%s:00000001:%s:auth:%s', md5($A1), $nonce, $cnonce, md5($A2)));
-    }
-
-    /**
-    * Creates the client nonce for the response
-    *
-    * @return string  The cnonce value
-    * @access private
-    */
-    function _getCnonce()
-    {
-        if (@file_exists('/dev/urandom') && $fd = @fopen('/dev/urandom', 'r')) {
-            return base64_encode(fread($fd, 32));
-
-        } elseif (@file_exists('/dev/random') && $fd = @fopen('/dev/random', 'r')) {
-            return base64_encode(fread($fd, 32));
-
-        } else {
-            $str = '';
-            for ($i=0; $i<32; $i++) {
-                $str .= chr(mt_rand(0, 255));
-            }
-            
-            return base64_encode($str);
-        }
-    }
-}
-?>
diff --git a/program/lib/Auth/SASL/External.php b/program/lib/Auth/SASL/External.php
deleted file mode 100644
index c5ae25e..0000000
--- a/program/lib/Auth/SASL/External.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+ 
-// | Copyright (c) 2008 Christoph Schulz                                   | 
-// | All rights reserved.                                                  | 
-// |                                                                       | 
-// | Redistribution and use in source and binary forms, with or without    | 
-// | modification, are permitted provided that the following conditions    | 
-// | are met:                                                              | 
-// |                                                                       | 
-// | o Redistributions of source code must retain the above copyright      | 
-// |   notice, this list of conditions and the following disclaimer.       | 
-// | o Redistributions in binary form must reproduce the above copyright   | 
-// |   notice, this list of conditions and the following disclaimer in the | 
-// |   documentation and/or other materials provided with the distribution.| 
-// | o The names of the authors may not be used to endorse or promote      | 
-// |   products derived from this software without specific prior written  | 
-// |   permission.                                                         | 
-// |                                                                       | 
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   | 
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     | 
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  | 
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      | 
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   | 
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  | 
-// |                                                                       | 
-// +-----------------------------------------------------------------------+ 
-// | Author: Christoph Schulz <develop@kristov.de>                         | 
-// +-----------------------------------------------------------------------+ 
-// 
-// $Id$
-
-/**
-* Implmentation of EXTERNAL SASL mechanism
-*
-* @author  Christoph Schulz <develop@kristov.de>
-* @access  public
-* @version 1.0.3
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_External extends Auth_SASL_Common
-{
-    /**
-    * Returns EXTERNAL response
-    *
-    * @param  string $authcid   Authentication id (username)
-    * @param  string $pass      Password
-    * @param  string $authzid   Autorization id
-    * @return string            EXTERNAL Response
-    */
-    function getResponse($authcid, $pass, $authzid = '')
-    {
-        return $authzid;
-    }
-}
-?>
diff --git a/program/lib/Auth/SASL/Login.php b/program/lib/Auth/SASL/Login.php
deleted file mode 100644
index 918daee..0000000
--- a/program/lib/Auth/SASL/Login.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+ 
-// | Copyright (c) 2002-2003 Richard Heyes                                 | 
-// | All rights reserved.                                                  | 
-// |                                                                       | 
-// | Redistribution and use in source and binary forms, with or without    | 
-// | modification, are permitted provided that the following conditions    | 
-// | are met:                                                              | 
-// |                                                                       | 
-// | o Redistributions of source code must retain the above copyright      | 
-// |   notice, this list of conditions and the following disclaimer.       | 
-// | o Redistributions in binary form must reproduce the above copyright   | 
-// |   notice, this list of conditions and the following disclaimer in the | 
-// |   documentation and/or other materials provided with the distribution.| 
-// | o The names of the authors may not be used to endorse or promote      | 
-// |   products derived from this software without specific prior written  | 
-// |   permission.                                                         | 
-// |                                                                       | 
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   | 
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     | 
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  | 
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      | 
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   | 
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  | 
-// |                                                                       | 
-// +-----------------------------------------------------------------------+ 
-// | Author: Richard Heyes <richard@php.net>                               | 
-// +-----------------------------------------------------------------------+ 
-// 
-// $Id$
-
-/**
-* This is technically not a SASL mechanism, however
-* it's used by Net_Sieve, Net_Cyrus and potentially
-* other protocols , so here is a good place to abstract
-* it.
-*
-* @author  Richard Heyes <richard@php.net>
-* @access  public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_Login extends Auth_SASL_Common
-{
-    /**
-    * Pseudo SASL LOGIN mechanism
-    *
-    * @param  string $user Username
-    * @param  string $pass Password
-    * @return string       LOGIN string
-    */
-    function getResponse($user, $pass)
-    {
-        return sprintf('LOGIN %s %s', $user, $pass);
-    }
-}
-?>
\ No newline at end of file
diff --git a/program/lib/Auth/SASL/Plain.php b/program/lib/Auth/SASL/Plain.php
deleted file mode 100644
index 57894d0..0000000
--- a/program/lib/Auth/SASL/Plain.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+ 
-// | Copyright (c) 2002-2003 Richard Heyes                                 | 
-// | All rights reserved.                                                  | 
-// |                                                                       | 
-// | Redistribution and use in source and binary forms, with or without    | 
-// | modification, are permitted provided that the following conditions    | 
-// | are met:                                                              | 
-// |                                                                       | 
-// | o Redistributions of source code must retain the above copyright      | 
-// |   notice, this list of conditions and the following disclaimer.       | 
-// | o Redistributions in binary form must reproduce the above copyright   | 
-// |   notice, this list of conditions and the following disclaimer in the | 
-// |   documentation and/or other materials provided with the distribution.| 
-// | o The names of the authors may not be used to endorse or promote      | 
-// |   products derived from this software without specific prior written  | 
-// |   permission.                                                         | 
-// |                                                                       | 
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   | 
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     | 
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  | 
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      | 
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   | 
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  | 
-// |                                                                       | 
-// +-----------------------------------------------------------------------+ 
-// | Author: Richard Heyes <richard@php.net>                               | 
-// +-----------------------------------------------------------------------+ 
-// 
-// $Id$
-
-/**
-* Implmentation of PLAIN SASL mechanism
-*
-* @author  Richard Heyes <richard@php.net>
-* @access  public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_Plain extends Auth_SASL_Common
-{
-    /**
-    * Returns PLAIN response
-    *
-    * @param  string $authcid   Authentication id (username)
-    * @param  string $pass      Password
-    * @param  string $authzid   Autorization id
-    * @return string            PLAIN Response
-    */
-    function getResponse($authcid, $pass, $authzid = '')
-    {
-        return $authzid . chr(0) . $authcid . chr(0) . $pass;
-    }
-}
-?>
diff --git a/program/lib/Auth/SASL/SCRAM.php b/program/lib/Auth/SASL/SCRAM.php
deleted file mode 100644
index cbca500..0000000
--- a/program/lib/Auth/SASL/SCRAM.php
+++ /dev/null
@@ -1,306 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2011 Jehan                                              |
-// | All rights reserved.                                                  |
-// |                                                                       |
-// | Redistribution and use in source and binary forms, with or without    |
-// | modification, are permitted provided that the following conditions    |
-// | are met:                                                              |
-// |                                                                       |
-// | o Redistributions of source code must retain the above copyright      |
-// |   notice, this list of conditions and the following disclaimer.       |
-// | o Redistributions in binary form must reproduce the above copyright   |
-// |   notice, this list of conditions and the following disclaimer in the |
-// |   documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote      |
-// |   products derived from this software without specific prior written  |
-// |   permission.                                                         |
-// |                                                                       |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
-// |                                                                       |
-// +-----------------------------------------------------------------------+
-// | Author: Jehan <jehan.marmottard@gmail.com                             |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Implementation of SCRAM-* SASL mechanisms.
-* SCRAM mechanisms have 3 main steps (initial response, response to the server challenge, then server signature
-* verification) which keep state-awareness. Therefore a single class instanciation must be done and reused for the whole
-* authentication process.
-*
-* @author  Jehan <jehan.marmottard@gmail.com>
-* @access  public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_SCRAM extends Auth_SASL_Common
-{
-    /**
-    * Construct a SCRAM-H client where 'H' is a cryptographic hash function.
-    *
-    * @param string $hash The name cryptographic hash function 'H' as registered by IANA in the "Hash Function Textual
-    * Names" registry.
-    * @link http://www.iana.org/assignments/hash-function-text-names/hash-function-text-names.xml "Hash Function Textual
-    * Names"
-    * format of core PHP hash function.
-    * @access public
-    */
-    function __construct($hash)
-    {
-        // Though I could be strict, I will actually also accept the naming used in the PHP core hash framework.
-        // For instance "sha1" is accepted, while the registered hash name should be "SHA-1".
-        $hash = strtolower($hash);
-        $hashes = array('md2' => 'md2',
-            'md5' => 'md5',
-            'sha-1' => 'sha1',
-            'sha1' => 'sha1',
-            'sha-224' > 'sha224',
-            'sha224' > 'sha224',
-            'sha-256' => 'sha256',
-            'sha256' => 'sha256',
-            'sha-384' => 'sha384',
-            'sha384' => 'sha384',
-            'sha-512' => 'sha512',
-            'sha512' => 'sha512');
-        if (function_exists('hash_hmac') && isset($hashes[$hash]))
-        {
-            $this->hash = create_function('$data', 'return hash("' . $hashes[$hash] . '", $data, TRUE);');
-            $this->hmac = create_function('$key,$str,$raw', 'return hash_hmac("' . $hashes[$hash] . '", $str, $key, $raw);');
-        }
-        elseif ($hash == 'md5')
-        {
-            $this->hash = create_function('$data', 'return md5($data, true);');
-            $this->hmac = array($this, '_HMAC_MD5');
-        }
-        elseif (in_array($hash, array('sha1', 'sha-1')))
-        {
-            $this->hash = create_function('$data', 'return sha1($data, true);');
-            $this->hmac = array($this, '_HMAC_SHA1');
-        }
-        else
-            return PEAR::raiseError('Invalid SASL mechanism type');
-    }
-
-    /**
-    * Provides the (main) client response for SCRAM-H.
-    *
-    * @param  string $authcid   Authentication id (username)
-    * @param  string $pass      Password
-    * @param  string $challenge The challenge sent by the server.
-    * If the challenge is NULL or an empty string, the result will be the "initial response".
-    * @param  string $authzid   Authorization id (username to proxy as)
-    * @return string|false      The response (binary, NOT base64 encoded)
-    * @access public
-    */
-    public function getResponse($authcid, $pass, $challenge = NULL, $authzid = NULL)
-    {
-        $authcid = $this->_formatName($authcid);
-        if (empty($authcid))
-        {
-            return false;
-        }
-        if (!empty($authzid))
-        {
-            $authzid = $this->_formatName($authzid);
-            if (empty($authzid))
-            {
-                return false;
-            }
-        }
-
-        if (empty($challenge))
-        {
-            return $this->_generateInitialResponse($authcid, $authzid);
-        }
-        else
-        {
-            return $this->_generateResponse($challenge, $pass);
-        }
-
-    }
-
-    /**
-    * Prepare a name for inclusion in a SCRAM response.
-    *
-    * @param string $username a name to be prepared.
-    * @return string the reformated name.
-    * @access private
-    */
-    private function _formatName($username)
-    {
-        // TODO: prepare through the SASLprep profile of the stringprep algorithm.
-        // See RFC-4013.
-
-        $username = str_replace('=', '=3D', $username);
-        $username = str_replace(',', '=2C', $username);
-        return $username;
-    }
-
-    /**
-    * Generate the initial response which can be either sent directly in the first message or as a response to an empty
-    * server challenge.
-    *
-    * @param string $authcid Prepared authentication identity.
-    * @param string $authzid Prepared authorization identity.
-    * @return string The SCRAM response to send.
-    * @access private
-    */
-    private function _generateInitialResponse($authcid, $authzid)
-    {
-        $init_rep = '';
-        $gs2_cbind_flag = 'n,'; // TODO: support channel binding.
-        $this->gs2_header = $gs2_cbind_flag . (!empty($authzid)? 'a=' . $authzid : '') . ',';
-
-        // I must generate a client nonce and "save" it for later comparison on second response.
-        $this->cnonce = $this->_getCnonce();
-        // XXX: in the future, when mandatory and/or optional extensions are defined in any updated RFC,
-        // this message can be updated.
-        $this->first_message_bare = 'n=' . $authcid . ',r=' . $this->cnonce;
-        return $this->gs2_header . $this->first_message_bare;
-    }
-
-    /**
-    * Parses and verifies a non-empty SCRAM challenge.
-    *
-    * @param  string $challenge The SCRAM challenge
-    * @return string|false      The response to send; false in case of wrong challenge or if an initial response has not
-    * been generated first.
-    * @access private
-    */
-    private function _generateResponse($challenge, $password)
-    {
-        // XXX: as I don't support mandatory extension, I would fail on them.
-        // And I simply ignore any optional extension.
-        $server_message_regexp = "#^r=([\x21-\x2B\x2D-\x7E]+),s=((?:[A-Za-z0-9/+]{4})*(?:[A-Za-z0-9]{3}=|[A-Xa-z0-9]{2}==)?),i=([0-9]*)(,[A-Za-z]=[^,])*$#";
-        if (!isset($this->cnonce, $this->gs2_header)
-            || !preg_match($server_message_regexp, $challenge, $matches))
-        {
-            return false;
-        }
-        $nonce = $matches[1];
-        $salt = base64_decode($matches[2]);
-        if (!$salt)
-        {
-            // Invalid Base64.
-            return false;
-        }
-        $i = intval($matches[3]);
-
-        $cnonce = substr($nonce, 0, strlen($this->cnonce));
-        if ($cnonce <> $this->cnonce)
-        {
-            // Invalid challenge! Are we under attack?
-            return false;
-        }
-
-        $channel_binding = 'c=' . base64_encode($this->gs2_header); // TODO: support channel binding.
-        $final_message = $channel_binding . ',r=' . $nonce; // XXX: no extension.
-
-        // TODO: $password = $this->normalize($password); // SASLprep profile of stringprep.
-        $saltedPassword = $this->hi($password, $salt, $i);
-        $this->saltedPassword = $saltedPassword;
-        $clientKey = call_user_func($this->hmac, $saltedPassword, "Client Key", TRUE);
-        $storedKey = call_user_func($this->hash, $clientKey, TRUE);
-        $authMessage = $this->first_message_bare . ',' . $challenge . ',' . $final_message;
-        $this->authMessage = $authMessage;
-        $clientSignature = call_user_func($this->hmac, $storedKey, $authMessage, TRUE);
-        $clientProof = $clientKey ^ $clientSignature;
-        $proof = ',p=' . base64_encode($clientProof);
-
-        return $final_message . $proof;
-    }
-
-    /**
-    * SCRAM has also a server verification step. On a successful outcome, it will send additional data which must
-    * absolutely be checked against this function. If this fails, the entity which we are communicating with is probably
-    * not the server as it has not access to your ServerKey.
-    *
-    * @param string $data The additional data sent along a successful outcome.
-    * @return bool Whether the server has been authenticated.
-    * If false, the client must close the connection and consider to be under a MITM attack.
-    * @access public
-    */
-    public function processOutcome($data)
-    {
-        $verifier_regexp = '#^v=((?:[A-Za-z0-9/+]{4})*(?:[A-Za-z0-9]{3}=|[A-Xa-z0-9]{2}==)?)$#';
-        if (!isset($this->saltedPassword, $this->authMessage)
-            || !preg_match($verifier_regexp, $data, $matches))
-        {
-            // This cannot be an outcome, you never sent the challenge's response.
-            return false;
-        }
-
-        $verifier = $matches[1];
-        $proposed_serverSignature = base64_decode($verifier);
-        $serverKey = call_user_func($this->hmac, $this->saltedPassword, "Server Key", true);
-        $serverSignature = call_user_func($this->hmac, $serverKey, $this->authMessage, TRUE);
-        return ($proposed_serverSignature === $serverSignature);
-    }
-
-    /**
-    * Hi() call, which is essentially PBKDF2 (RFC-2898) with HMAC-H() as the pseudorandom function.
-    *
-    * @param string $str The string to hash.
-    * @param string $hash The hash value.
-    * @param int $i The iteration count.
-    * @access private
-    */
-    private function hi($str, $salt, $i)
-    {
-        $int1 = "\0\0\0\1";
-        $ui = call_user_func($this->hmac, $str, $salt . $int1, true);
-        $result = $ui;
-        for ($k = 1; $k < $i; $k++)
-        {
-            $ui = call_user_func($this->hmac, $str, $ui, true);
-            $result = $result ^ $ui;
-        }
-        return $result;
-    }
-
-
-    /**
-    * Creates the client nonce for the response
-    *
-    * @return string  The cnonce value
-    * @access private
-    * @author  Richard Heyes <richard@php.net>
-    */
-    private function _getCnonce()
-    {
-        // TODO: I reused the nonce function from the DigestMD5 class.
-        // I should probably make this a protected function in Common.
-        if (@file_exists('/dev/urandom') && $fd = @fopen('/dev/urandom', 'r')) {
-            return base64_encode(fread($fd, 32));
-
-        } elseif (@file_exists('/dev/random') && $fd = @fopen('/dev/random', 'r')) {
-            return base64_encode(fread($fd, 32));
-
-        } else {
-            $str = '';
-            for ($i=0; $i<32; $i++) {
-                $str .= chr(mt_rand(0, 255));
-            }
-
-            return base64_encode($str);
-        }
-    }
-
-}
-
-?>
diff --git a/program/lib/Crypt/GPG.php b/program/lib/Crypt/GPG.php
deleted file mode 100644
index 5c22312..0000000
--- a/program/lib/Crypt/GPG.php
+++ /dev/null
@@ -1,2386 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This package provides an object oriented interface to GNU Privacy
- * Guard (GPG). It requires the GPG executable to be on the system.
- *
- * Though GPG can support symmetric-key cryptography, this package is intended
- * only to facilitate public-key cryptography.
- *
- * This file contains the main GPG class. The class in this file lets you
- * encrypt, decrypt, sign and verify data; import and delete keys; and perform
- * other useful GPG tasks.
- *
- * Example usage:
- * <code>
- * <?php
- * // encrypt some data
- * $gpg = new Crypt_GPG();
- * $gpg->addEncryptKey($mySecretKeyId);
- * $encryptedData = $gpg->encrypt($data);
- * ?>
- * </code>
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://pear.php.net/manual/en/package.encryption.crypt-gpg.php
- * @link      http://www.gnupg.org/
- */
-
-/**
- * Base class for GPG methods
- */
-require_once 'Crypt/GPGAbstract.php';
-
-/**
- * Signature handler class
- */
-require_once 'Crypt/GPG/VerifyStatusHandler.php';
-
-/**
- * Decryption handler class
- */
-require_once 'Crypt/GPG/DecryptStatusHandler.php';
-
-// {{{ class Crypt_GPG
-
-/**
- * A class to use GPG from PHP
- *
- * This class provides an object oriented interface to GNU Privacy Guard (GPG).
- *
- * Though GPG can support symmetric-key cryptography, this class is intended
- * only to facilitate public-key cryptography.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-class Crypt_GPG extends Crypt_GPGAbstract
-{
-    // {{{ class constants for data signing modes
-
-    /**
-     * Signing mode for normal signing of data. The signed message will not
-     * be readable without special software.
-     *
-     * This is the default signing mode.
-     *
-     * @see Crypt_GPG::sign()
-     * @see Crypt_GPG::signFile()
-     */
-    const SIGN_MODE_NORMAL = 1;
-
-    /**
-     * Signing mode for clearsigning data. Clearsigned signatures are ASCII
-     * armored data and are readable without special software. If the signed
-     * message is unencrypted, the message will still be readable. The message
-     * text will be in the original encoding.
-     *
-     * @see Crypt_GPG::sign()
-     * @see Crypt_GPG::signFile()
-     */
-    const SIGN_MODE_CLEAR = 2;
-
-    /**
-     * Signing mode for creating a detached signature. When using detached
-     * signatures, only the signature data is returned. The original message
-     * text may be distributed separately from the signature data. This is
-     * useful for miltipart/signed email messages as per
-     * {@link http://www.ietf.org/rfc/rfc3156.txt RFC 3156}.
-     *
-     * @see Crypt_GPG::sign()
-     * @see Crypt_GPG::signFile()
-     */
-    const SIGN_MODE_DETACHED = 3;
-
-    // }}}
-    // {{{ class constants for fingerprint formats
-
-    /**
-     * No formatting is performed.
-     *
-     * Example: C3BC615AD9C766E5A85C1F2716D27458B1BBA1C4
-     *
-     * @see Crypt_GPG::getFingerprint()
-     */
-    const FORMAT_NONE = 1;
-
-    /**
-     * Fingerprint is formatted in the format used by the GnuPG gpg command's
-     * default output.
-     *
-     * Example: C3BC 615A D9C7 66E5 A85C  1F27 16D2 7458 B1BB A1C4
-     *
-     * @see Crypt_GPG::getFingerprint()
-     */
-    const FORMAT_CANONICAL = 2;
-
-    /**
-     * Fingerprint is formatted in the format used when displaying X.509
-     * certificates
-     *
-     * Example: C3:BC:61:5A:D9:C7:66:E5:A8:5C:1F:27:16:D2:74:58:B1:BB:A1:C4
-     *
-     * @see Crypt_GPG::getFingerprint()
-     */
-    const FORMAT_X509 = 3;
-
-    // }}}
-    // {{{ class constants for boolean options
-
-    /**
-     * Use to specify ASCII armored mode for returned data
-     */
-    const ARMOR_ASCII = true;
-
-    /**
-     * Use to specify binary mode for returned data
-     */
-    const ARMOR_BINARY = false;
-
-    /**
-     * Use to specify that line breaks in signed text should be normalized
-     */
-    const TEXT_NORMALIZED = true;
-
-    /**
-     * Use to specify that line breaks in signed text should not be normalized
-     */
-    const TEXT_RAW = false;
-
-    // }}}
-    // {{{ protected class properties
-
-    /**
-     * Engine used to control the GPG subprocess
-     *
-     * @var Crypt_GPG_Engine
-     *
-     * @see Crypt_GPG::setEngine()
-     */
-    protected $engine = null;
-
-    /**
-     * Keys used to encrypt
-     *
-     * The array is of the form:
-     * <code>
-     * array(
-     *   $key_id => array(
-     *     'fingerprint' => $fingerprint,
-     *     'passphrase'  => null
-     *   )
-     * );
-     * </code>
-     *
-     * @var array
-     * @see Crypt_GPG::addEncryptKey()
-     * @see Crypt_GPG::clearEncryptKeys()
-     */
-    protected $encryptKeys = array();
-
-    /**
-     * Keys used to decrypt
-     *
-     * The array is of the form:
-     * <code>
-     * array(
-     *   $key_id => array(
-     *     'fingerprint' => $fingerprint,
-     *     'passphrase'  => $passphrase
-     *   )
-     * );
-     * </code>
-     *
-     * @var array
-     * @see Crypt_GPG::addSignKey()
-     * @see Crypt_GPG::clearSignKeys()
-     */
-    protected $signKeys = array();
-
-    /**
-     * Keys used to sign
-     *
-     * The array is of the form:
-     * <code>
-     * array(
-     *   $key_id => array(
-     *     'fingerprint' => $fingerprint,
-     *     'passphrase'  => $passphrase
-     *   )
-     * );
-     * </code>
-     *
-     * @var array
-     * @see Crypt_GPG::addDecryptKey()
-     * @see Crypt_GPG::clearDecryptKeys()
-     */
-    protected $decryptKeys = array();
-
-    // }}}
-    // {{{ importKey()
-
-    /**
-     * Imports a public or private key into the keyring
-     *
-     * Keys may be removed from the keyring using
-     * {@link Crypt_GPG::deletePublicKey()} or
-     * {@link Crypt_GPG::deletePrivateKey()}.
-     *
-     * @param string $data the key data to be imported.
-     *
-     * @return array an associative array containing the following elements:
-     *               - <kbd>fingerprint</kbd>       - the fingerprint of the
-     *                                                imported key,
-     *               - <kbd>public_imported</kbd>   - the number of public
-     *                                                keys imported,
-     *               - <kbd>public_unchanged</kbd>  - the number of unchanged
-     *                                                public keys,
-     *               - <kbd>private_imported</kbd>  - the number of private
-     *                                                keys imported,
-     *               - <kbd>private_unchanged</kbd> - the number of unchanged
-     *                                                private keys.
-     *
-     * @throws Crypt_GPG_NoDataException if the key data is missing or if the
-     *         data is is not valid key data.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function importKey($data)
-    {
-        return $this->_importKey($data, false);
-    }
-
-    // }}}
-    // {{{ importKeyFile()
-
-    /**
-     * Imports a public or private key file into the keyring
-     *
-     * Keys may be removed from the keyring using
-     * {@link Crypt_GPG::deletePublicKey()} or
-     * {@link Crypt_GPG::deletePrivateKey()}.
-     *
-     * @param string $filename the key file to be imported.
-     *
-     * @return array an associative array containing the following elements:
-     *               - <kbd>fingerprint</kbd>       - the fingerprint of the
-     *                                                imported key,
-     *               - <kbd>public_imported</kbd>   - the number of public
-     *                                                keys imported,
-     *               - <kbd>public_unchanged</kbd>  - the number of unchanged
-     *                                                public keys,
-     *               - <kbd>private_imported</kbd>  - the number of private
-     *                                                keys imported,
-     *               - <kbd>private_unchanged</kbd> - the number of unchanged
-     *                                                private keys.
-     *                                                  private keys.
-     *
-     * @throws Crypt_GPG_NoDataException if the key data is missing or if the
-     *         data is is not valid key data.
-     *
-     * @throws Crypt_GPG_FileException if the key file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function importKeyFile($filename)
-    {
-        return $this->_importKey($filename, true);
-    }
-
-    // }}}
-    // {{{ exportPublicKey()
-
-    /**
-     * Exports a public key from the keyring
-     *
-     * The exported key remains on the keyring. To delete the public key, use
-     * {@link Crypt_GPG::deletePublicKey()}.
-     *
-     * If more than one key fingerprint is available for the specified
-     * <kbd>$keyId</kbd> (for example, if you use a non-unique uid) only the
-     * first public key is exported.
-     *
-     * @param string  $keyId either the full uid of the public key, the email
-     *                       part of the uid of the public key or the key id of
-     *                       the public key. For example,
-     *                       "Test User (example) <test@example.com>",
-     *                       "test@example.com" or a hexadecimal string.
-     * @param boolean $armor optional. If true, ASCII armored data is returned;
-     *                       otherwise, binary data is returned. Defaults to
-     *                       true.
-     *
-     * @return string the public key data.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if a public key with the given
-     *         <kbd>$keyId</kbd> is not found.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function exportPublicKey($keyId, $armor = true)
-    {
-        $fingerprint = $this->getFingerprint($keyId);
-
-        if ($fingerprint === null) {
-            throw new Crypt_GPG_KeyNotFoundException(
-                'Public key not found: ' . $keyId,
-                self::ERROR_KEY_NOT_FOUND,
-                $keyId
-            );
-        }
-
-        $keyData   = '';
-        $operation = '--export ' . escapeshellarg($fingerprint);
-        $arguments = ($armor) ? array('--armor') : array();
-
-        $this->engine->reset();
-        $this->engine->setOutput($keyData);
-        $this->engine->setOperation($operation, $arguments);
-        $this->engine->run();
-
-        $code = $this->engine->getErrorCode();
-
-        if ($code !== self::ERROR_NONE) {
-            throw new Crypt_GPG_Exception(
-                'Unknown error exporting public key. Please use the ' .
-                '\'debug\' option when creating the Crypt_GPG object, and ' .
-                'file a bug report at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        return $keyData;
-    }
-
-    // }}}
-    // {{{ deletePublicKey()
-
-    /**
-     * Deletes a public key from the keyring
-     *
-     * If more than one key fingerprint is available for the specified
-     * <kbd>$keyId</kbd> (for example, if you use a non-unique uid) only the
-     * first public key is deleted.
-     *
-     * The private key must be deleted first or an exception will be thrown.
-     * See {@link Crypt_GPG::deletePrivateKey()}.
-     *
-     * @param string $keyId either the full uid of the public key, the email
-     *                      part of the uid of the public key or the key id of
-     *                      the public key. For example,
-     *                      "Test User (example) <test@example.com>",
-     *                      "test@example.com" or a hexadecimal string.
-     *
-     * @return void
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if a public key with the given
-     *         <kbd>$keyId</kbd> is not found.
-     *
-     * @throws Crypt_GPG_DeletePrivateKeyException if the specified public key
-     *         has an associated private key on the keyring. The private key
-     *         must be deleted first.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function deletePublicKey($keyId)
-    {
-        $fingerprint = $this->getFingerprint($keyId);
-
-        if ($fingerprint === null) {
-            throw new Crypt_GPG_KeyNotFoundException(
-                'Public key not found: ' . $keyId,
-                self::ERROR_KEY_NOT_FOUND,
-                $keyId
-            );
-        }
-
-        $operation = '--delete-key ' . escapeshellarg($fingerprint);
-        $arguments = array(
-            '--batch',
-            '--yes'
-        );
-
-        $this->engine->reset();
-        $this->engine->setOperation($operation, $arguments);
-        $this->engine->run();
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-            break;
-        case self::ERROR_DELETE_PRIVATE_KEY:
-            throw new Crypt_GPG_DeletePrivateKeyException(
-                'Private key must be deleted before public key can be ' .
-                'deleted.',
-                $code,
-                $keyId
-            );
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error deleting public key. Please use the ' .
-                '\'debug\' option when creating the Crypt_GPG object, and ' .
-                'file a bug report at ' . self::BUG_URI,
-                $code
-            );
-        }
-    }
-
-    // }}}
-    // {{{ deletePrivateKey()
-
-    /**
-     * Deletes a private key from the keyring
-     *
-     * If more than one key fingerprint is available for the specified
-     * <kbd>$keyId</kbd> (for example, if you use a non-unique uid) only the
-     * first private key is deleted.
-     *
-     * Calls GPG with the <kbd>--delete-secret-key</kbd> command.
-     *
-     * @param string $keyId either the full uid of the private key, the email
-     *                      part of the uid of the private key or the key id of
-     *                      the private key. For example,
-     *                      "Test User (example) <test@example.com>",
-     *                      "test@example.com" or a hexadecimal string.
-     *
-     * @return void
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if a private key with the given
-     *         <kbd>$keyId</kbd> is not found.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function deletePrivateKey($keyId)
-    {
-        $fingerprint = $this->getFingerprint($keyId);
-
-        if ($fingerprint === null) {
-            throw new Crypt_GPG_KeyNotFoundException(
-                'Private key not found: ' . $keyId,
-                self::ERROR_KEY_NOT_FOUND,
-                $keyId
-            );
-        }
-
-        $operation = '--delete-secret-key ' . escapeshellarg($fingerprint);
-        $arguments = array(
-            '--batch',
-            '--yes'
-        );
-
-        $this->engine->reset();
-        $this->engine->setOperation($operation, $arguments);
-        $this->engine->run();
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-            break;
-        case self::ERROR_KEY_NOT_FOUND:
-            throw new Crypt_GPG_KeyNotFoundException(
-                'Private key not found: ' . $keyId,
-                $code,
-                $keyId
-            );
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error deleting private key. Please use the ' .
-                '\'debug\' option when creating the Crypt_GPG object, and ' .
-                'file a bug report at ' . self::BUG_URI,
-                $code
-            );
-        }
-    }
-
-    // }}}
-    // {{{ getKeys()
-
-    /**
-     * Gets the available keys in the keyring
-     *
-     * Calls GPG with the <kbd>--list-keys</kbd> command and grabs keys. See
-     * the first section of <b>doc/DETAILS</b> in the
-     * {@link http://www.gnupg.org/download/ GPG package} for a detailed
-     * description of how the GPG command output is parsed.
-     *
-     * @param string $keyId optional. Only keys with that match the specified
-     *                      pattern are returned. The pattern may be part of
-     *                      a user id, a key id or a key fingerprint. If not
-     *                      specified, all keys are returned.
-     *
-     * @return array an array of {@link Crypt_GPG_Key} objects. If no keys
-     *               match the specified <kbd>$keyId</kbd> an empty array is
-     *               returned.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @see Crypt_GPG_Key
-     */
-    public function getKeys($keyId = '')
-    {
-        return parent::_getKeys($keyId);
-    }
-
-    // }}}
-    // {{{ getFingerprint()
-
-    /**
-     * Gets a key fingerprint from the keyring
-     *
-     * If more than one key fingerprint is available (for example, if you use
-     * a non-unique user id) only the first key fingerprint is returned.
-     *
-     * Calls the GPG <kbd>--list-keys</kbd> command with the
-     * <kbd>--with-fingerprint</kbd> option to retrieve a public key
-     * fingerprint.
-     *
-     * @param string  $keyId  either the full user id of the key, the email
-     *                        part of the user id of the key, or the key id of
-     *                        the key. For example,
-     *                        "Test User (example) <test@example.com>",
-     *                        "test@example.com" or a hexadecimal string.
-     * @param integer $format optional. How the fingerprint should be formatted.
-     *                        Use {@link Crypt_GPG::FORMAT_X509} for X.509
-     *                        certificate format,
-     *                        {@link Crypt_GPG::FORMAT_CANONICAL} for the format
-     *                        used by GnuPG output and
-     *                        {@link Crypt_GPG::FORMAT_NONE} for no formatting.
-     *                        Defaults to <code>Crypt_GPG::FORMAT_NONE</code>.
-     *
-     * @return string the fingerprint of the key, or null if no fingerprint
-     *                is found for the given <kbd>$keyId</kbd>.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function getFingerprint($keyId, $format = self::FORMAT_NONE)
-    {
-        $output    = '';
-        $operation = '--list-keys ' . escapeshellarg($keyId);
-        $arguments = array(
-            '--with-colons',
-            '--with-fingerprint'
-        );
-
-        $this->engine->reset();
-        $this->engine->setOutput($output);
-        $this->engine->setOperation($operation, $arguments);
-        $this->engine->run();
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-        case self::ERROR_KEY_NOT_FOUND:
-            // ignore not found key errors
-            break;
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error getting key fingerprint. Please use the ' .
-                '\'debug\' option when creating the Crypt_GPG object, and ' .
-                'file a bug report at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        $fingerprint = null;
-
-        $lines = explode(PHP_EOL, $output);
-        foreach ($lines as $line) {
-            if (substr($line, 0, 3) == 'fpr') {
-                $lineExp     = explode(':', $line);
-                $fingerprint = $lineExp[9];
-
-                switch ($format) {
-                case self::FORMAT_CANONICAL:
-                    $fingerprintExp = str_split($fingerprint, 4);
-                    $format         = '%s %s %s %s %s  %s %s %s %s %s';
-                    $fingerprint    = vsprintf($format, $fingerprintExp);
-                    break;
-
-                case self::FORMAT_X509:
-                    $fingerprintExp = str_split($fingerprint, 2);
-                    $fingerprint    = implode(':', $fingerprintExp);
-                    break;
-                }
-
-                break;
-            }
-        }
-
-        return $fingerprint;
-    }
-
-    // }}}
-    // {{{ encrypt()
-
-    /**
-     * Encrypts string data
-     *
-     * Data is ASCII armored by default but may optionally be returned as
-     * binary.
-     *
-     * @param string  $data  the data to be encrypted.
-     * @param boolean $armor optional. If true, ASCII armored data is returned;
-     *                       otherwise, binary data is returned. Defaults to
-     *                       true.
-     *
-     * @return string the encrypted data.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified.
-     *         See {@link Crypt_GPG::addEncryptKey()}.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @sensitive $data
-     */
-    public function encrypt($data, $armor = self::ARMOR_ASCII)
-    {
-        return $this->_encrypt($data, false, null, $armor);
-    }
-
-    // }}}
-    // {{{ encryptFile()
-
-    /**
-     * Encrypts a file
-     *
-     * Encrypted data is ASCII armored by default but may optionally be saved
-     * as binary.
-     *
-     * @param string  $filename      the filename of the file to encrypt.
-     * @param string  $encryptedFile optional. The filename of the file in
-     *                               which to store the encrypted data. If null
-     *                               or unspecified, the encrypted data is
-     *                               returned as a string.
-     * @param boolean $armor         optional. If true, ASCII armored data is
-     *                               returned; otherwise, binary data is
-     *                               returned. Defaults to true.
-     *
-     * @return void|string if the <kbd>$encryptedFile</kbd> parameter is null,
-     *                     a string containing the encrypted data is returned.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified.
-     *         See {@link Crypt_GPG::addEncryptKey()}.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function encryptFile(
-        $filename,
-        $encryptedFile = null,
-        $armor = self::ARMOR_ASCII
-    ) {
-        return $this->_encrypt($filename, true, $encryptedFile, $armor);
-    }
-
-    // }}}
-    // {{{ encryptAndSign()
-
-    /**
-     * Encrypts and signs data
-     *
-     * Data is encrypted and signed in a single pass.
-     *
-     * NOTE: Until GnuPG version 1.4.10, it was not possible to verify
-     * encrypted-signed data without decrypting it at the same time. If you try
-     * to use {@link Crypt_GPG::verify()} method on encrypted-signed data with
-     * earlier GnuPG versions, you will get an error. Please use
-     * {@link Crypt_GPG::decryptAndVerify()} to verify encrypted-signed data.
-     *
-     * @param string  $data  the data to be encrypted and signed.
-     * @param boolean $armor optional. If true, ASCII armored data is returned;
-     *                       otherwise, binary data is returned. Defaults to
-     *                       true.
-     *
-     * @return string the encrypted signed data.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified
-     *         or if no signing key is specified. See
-     *         {@link Crypt_GPG::addEncryptKey()} and
-     *         {@link Crypt_GPG::addSignKey()}.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
-     *         incorrect or if a required passphrase is not specified.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @see Crypt_GPG::decryptAndVerify()
-     */
-    public function encryptAndSign($data, $armor = self::ARMOR_ASCII)
-    {
-        return $this->_encryptAndSign($data, false, null, $armor);
-    }
-
-    // }}}
-    // {{{ encryptAndSignFile()
-
-    /**
-     * Encrypts and signs a file
-     *
-     * The file is encrypted and signed in a single pass.
-     *
-     * NOTE: Until GnuPG version 1.4.10, it was not possible to verify
-     * encrypted-signed files without decrypting them at the same time. If you
-     * try to use {@link Crypt_GPG::verify()} method on encrypted-signed files
-     * with earlier GnuPG versions, you will get an error. Please use
-     * {@link Crypt_GPG::decryptAndVerifyFile()} to verify encrypted-signed
-     * files.
-     *
-     * @param string  $filename   the name of the file containing the data to
-     *                            be encrypted and signed.
-     * @param string  $signedFile optional. The name of the file in which the
-     *                            encrypted, signed data should be stored. If
-     *                            null or unspecified, the encrypted, signed
-     *                            data is returned as a string.
-     * @param boolean $armor      optional. If true, ASCII armored data is
-     *                            returned; otherwise, binary data is returned.
-     *                            Defaults to true.
-     *
-     * @return void|string if the <kbd>$signedFile</kbd> parameter is null, a
-     *                     string containing the encrypted, signed data is
-     *                     returned.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified
-     *         or if no signing key is specified. See
-     *         {@link Crypt_GPG::addEncryptKey()} and
-     *         {@link Crypt_GPG::addSignKey()}.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
-     *         incorrect or if a required passphrase is not specified.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @see Crypt_GPG::decryptAndVerifyFile()
-     */
-    public function encryptAndSignFile(
-        $filename,
-        $signedFile = null,
-        $armor = self::ARMOR_ASCII
-    ) {
-        return $this->_encryptAndSign($filename, true, $signedFile, $armor);
-    }
-
-    // }}}
-    // {{{ decrypt()
-
-    /**
-     * Decrypts string data
-     *
-     * This method assumes the required private key is available in the keyring
-     * and throws an exception if the private key is not available. To add a
-     * private key to the keyring, use the {@link Crypt_GPG::importKey()} or
-     * {@link Crypt_GPG::importKeyFile()} methods.
-     *
-     * @param string $encryptedData the data to be decrypted.
-     *
-     * @return string the decrypted data.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
-     *         decrypt the data is not in the user's keyring.
-     *
-     * @throws Crypt_GPG_NoDataException if specified data does not contain
-     *         GPG encrypted data.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
-     *         incorrect or if a required passphrase is not specified. See
-     *         {@link Crypt_GPG::addDecryptKey()}.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function decrypt($encryptedData)
-    {
-        return $this->_decrypt($encryptedData, false, null);
-    }
-
-    // }}}
-    // {{{ decryptFile()
-
-    /**
-     * Decrypts a file
-     *
-     * This method assumes the required private key is available in the keyring
-     * and throws an exception if the private key is not available. To add a
-     * private key to the keyring, use the {@link Crypt_GPG::importKey()} or
-     * {@link Crypt_GPG::importKeyFile()} methods.
-     *
-     * @param string $encryptedFile the name of the encrypted file data to
-     *                              decrypt.
-     * @param string $decryptedFile optional. The name of the file to which the
-     *                              decrypted data should be written. If null
-     *                              or unspecified, the decrypted data is
-     *                              returned as a string.
-     *
-     * @return void|string if the <kbd>$decryptedFile</kbd> parameter is null,
-     *                     a string containing the decrypted data is returned.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
-     *         decrypt the data is not in the user's keyring.
-     *
-     * @throws Crypt_GPG_NoDataException if specified data does not contain
-     *         GPG encrypted data.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
-     *         incorrect or if a required passphrase is not specified. See
-     *         {@link Crypt_GPG::addDecryptKey()}.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function decryptFile($encryptedFile, $decryptedFile = null)
-    {
-        return $this->_decrypt($encryptedFile, true, $decryptedFile);
-    }
-
-    // }}}
-    // {{{ decryptAndVerify()
-
-    /**
-     * Decrypts and verifies string data
-     *
-     * This method assumes the required private key is available in the keyring
-     * and throws an exception if the private key is not available. To add a
-     * private key to the keyring, use the {@link Crypt_GPG::importKey()} or
-     * {@link Crypt_GPG::importKeyFile()} methods.
-     *
-     * @param string $encryptedData the encrypted, signed data to be decrypted
-     *                              and verified.
-     *
-     * @return array two element array. The array has an element 'data'
-     *               containing the decrypted data and an element
-     *               'signatures' containing an array of
-     *               {@link Crypt_GPG_Signature} objects for the signed data.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
-     *         decrypt the data is not in the user's keyring.
-     *
-     * @throws Crypt_GPG_NoDataException if specified data does not contain
-     *         GPG encrypted data.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
-     *         incorrect or if a required passphrase is not specified. See
-     *         {@link Crypt_GPG::addDecryptKey()}.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function decryptAndVerify($encryptedData)
-    {
-        return $this->_decryptAndVerify($encryptedData, false, null);
-    }
-
-    // }}}
-    // {{{ decryptAndVerifyFile()
-
-    /**
-     * Decrypts and verifies a signed, encrypted file
-     *
-     * This method assumes the required private key is available in the keyring
-     * and throws an exception if the private key is not available. To add a
-     * private key to the keyring, use the {@link Crypt_GPG::importKey()} or
-     * {@link Crypt_GPG::importKeyFile()} methods.
-     *
-     * @param string $encryptedFile the name of the signed, encrypted file to
-     *                              to decrypt and verify.
-     * @param string $decryptedFile optional. The name of the file to which the
-     *                              decrypted data should be written. If null
-     *                              or unspecified, the decrypted data is
-     *                              returned in the results array.
-     *
-     * @return array two element array. The array has an element 'data'
-     *               containing the decrypted data and an element
-     *               'signatures' containing an array of
-     *               {@link Crypt_GPG_Signature} objects for the signed data.
-     *               If the decrypted data is written to a file, the 'data'
-     *               element is null.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
-     *         decrypt the data is not in the user's keyring.
-     *
-     * @throws Crypt_GPG_NoDataException if specified data does not contain
-     *         GPG encrypted data.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
-     *         incorrect or if a required passphrase is not specified. See
-     *         {@link Crypt_GPG::addDecryptKey()}.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function decryptAndVerifyFile($encryptedFile, $decryptedFile = null)
-    {
-        return $this->_decryptAndVerify($encryptedFile, true, $decryptedFile);
-    }
-
-    // }}}
-    // {{{ sign()
-
-    /**
-     * Signs data
-     *
-     * Data may be signed using any one of the three available signing modes:
-     * - {@link Crypt_GPG::SIGN_MODE_NORMAL}
-     * - {@link Crypt_GPG::SIGN_MODE_CLEAR}
-     * - {@link Crypt_GPG::SIGN_MODE_DETACHED}
-     *
-     * @param string  $data     the data to be signed.
-     * @param boolean $mode     optional. The data signing mode to use. Should
-     *                          be one of {@link Crypt_GPG::SIGN_MODE_NORMAL},
-     *                          {@link Crypt_GPG::SIGN_MODE_CLEAR} or
-     *                          {@link Crypt_GPG::SIGN_MODE_DETACHED}. If not
-     *                          specified, defaults to
-     *                          <kbd>Crypt_GPG::SIGN_MODE_NORMAL</kbd>.
-     * @param boolean $armor    optional. If true, ASCII armored data is
-     *                          returned; otherwise, binary data is returned.
-     *                          Defaults to true. This has no effect if the
-     *                          mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
-     *                          used.
-     * @param boolean $textmode optional. If true, line-breaks in signed data
-     *                          are normalized. Use this option when signing
-     *                          e-mail, or for greater compatibility between
-     *                          systems with different line-break formats.
-     *                          Defaults to false. This has no effect if the
-     *                          mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
-     *                          used as clear-signing always uses textmode.
-     *
-     * @return string the signed data, or the signature data if a detached
-     *                signature is requested.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if no signing key is specified.
-     *         See {@link Crypt_GPG::addSignKey()}.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
-     *         incorrect or if a required passphrase is not specified.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function sign(
-        $data,
-        $mode = self::SIGN_MODE_NORMAL,
-        $armor = self::ARMOR_ASCII,
-        $textmode = self::TEXT_RAW
-    ) {
-        return $this->_sign($data, false, null, $mode, $armor, $textmode);
-    }
-
-    // }}}
-    // {{{ signFile()
-
-    /**
-     * Signs a file
-     *
-     * The file may be signed using any one of the three available signing
-     * modes:
-     * - {@link Crypt_GPG::SIGN_MODE_NORMAL}
-     * - {@link Crypt_GPG::SIGN_MODE_CLEAR}
-     * - {@link Crypt_GPG::SIGN_MODE_DETACHED}
-     *
-     * @param string  $filename   the name of the file containing the data to
-     *                            be signed.
-     * @param string  $signedFile optional. The name of the file in which the
-     *                            signed data should be stored. If null or
-     *                            unspecified, the signed data is returned as a
-     *                            string.
-     * @param boolean $mode       optional. The data signing mode to use. Should
-     *                            be one of {@link Crypt_GPG::SIGN_MODE_NORMAL},
-     *                            {@link Crypt_GPG::SIGN_MODE_CLEAR} or
-     *                            {@link Crypt_GPG::SIGN_MODE_DETACHED}. If not
-     *                            specified, defaults to
-     *                            <kbd>Crypt_GPG::SIGN_MODE_NORMAL</kbd>.
-     * @param boolean $armor      optional. If true, ASCII armored data is
-     *                            returned; otherwise, binary data is returned.
-     *                            Defaults to true. This has no effect if the
-     *                            mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
-     *                            used.
-     * @param boolean $textmode   optional. If true, line-breaks in signed data
-     *                            are normalized. Use this option when signing
-     *                            e-mail, or for greater compatibility between
-     *                            systems with different line-break formats.
-     *                            Defaults to false. This has no effect if the
-     *                            mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
-     *                            used as clear-signing always uses textmode.
-     *
-     * @return void|string if the <kbd>$signedFile</kbd> parameter is null, a
-     *                     string containing the signed data (or the signature
-     *                     data if a detached signature is requested) is
-     *                     returned.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if no signing key is specified.
-     *         See {@link Crypt_GPG::addSignKey()}.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
-     *         incorrect or if a required passphrase is not specified.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function signFile(
-        $filename,
-        $signedFile = null,
-        $mode = self::SIGN_MODE_NORMAL,
-        $armor = self::ARMOR_ASCII,
-        $textmode = self::TEXT_RAW
-    ) {
-        return $this->_sign(
-            $filename,
-            true,
-            $signedFile,
-            $mode,
-            $armor,
-            $textmode
-        );
-    }
-
-    // }}}
-    // {{{ verify()
-
-    /**
-     * Verifies signed data
-     *
-     * The {@link Crypt_GPG::decrypt()} method may be used to get the original
-     * message if the signed data is not clearsigned and does not use a
-     * detached signature.
-     *
-     * @param string $signedData the signed data to be verified.
-     * @param string $signature  optional. If verifying data signed using a
-     *                           detached signature, this must be the detached
-     *                           signature data. The data that was signed is
-     *                           specified in <kbd>$signedData</kbd>.
-     *
-     * @return array an array of {@link Crypt_GPG_Signature} objects for the
-     *               signed data. For each signature that is valid, the
-     *               {@link Crypt_GPG_Signature::isValid()} will return true.
-     *
-     * @throws Crypt_GPG_NoDataException if the provided data is not signed
-     *         data.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @see Crypt_GPG_Signature
-     */
-    public function verify($signedData, $signature = '')
-    {
-        return $this->_verify($signedData, false, $signature);
-    }
-
-    // }}}
-    // {{{ verifyFile()
-
-    /**
-     * Verifies a signed file
-     *
-     * The {@link Crypt_GPG::decryptFile()} method may be used to get the
-     * original message if the signed data is not clearsigned and does not use
-     * a detached signature.
-     *
-     * @param string $filename  the signed file to be verified.
-     * @param string $signature optional. If verifying a file signed using a
-     *                          detached signature, this must be the detached
-     *                          signature data. The file that was signed is
-     *                          specified in <kbd>$filename</kbd>.
-     *
-     * @return array an array of {@link Crypt_GPG_Signature} objects for the
-     *               signed data. For each signature that is valid, the
-     *               {@link Crypt_GPG_Signature::isValid()} will return true.
-     *
-     * @throws Crypt_GPG_NoDataException if the provided data is not signed
-     *         data.
-     *
-     * @throws Crypt_GPG_FileException if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @see Crypt_GPG_Signature
-     */
-    public function verifyFile($filename, $signature = '')
-    {
-        return $this->_verify($filename, true, $signature);
-    }
-
-    // }}}
-    // {{{ addDecryptKey()
-
-    /**
-     * Adds a key to use for decryption
-     *
-     * @param mixed  $key        the key to use. This may be a key identifier,
-     *                           user id, fingerprint, {@link Crypt_GPG_Key} or
-     *                           {@link Crypt_GPG_SubKey}. The key must be able
-     *                           to encrypt.
-     * @param string $passphrase optional. The passphrase of the key required
-     *                           for decryption.
-     *
-     * @return Crypt_GPG the current object, for fluent interface.
-     *
-     * @see Crypt_GPG::decrypt()
-     * @see Crypt_GPG::decryptFile()
-     * @see Crypt_GPG::clearDecryptKeys()
-     * @see Crypt_GPG::_addKey()
-     * @see Crypt_GPG_DecryptStatusHandler
-     *
-     * @sensitive $passphrase
-     */
-    public function addDecryptKey($key, $passphrase = null)
-    {
-        $this->_addKey($this->decryptKeys, true, false, $key, $passphrase);
-        return $this;
-    }
-
-    // }}}
-    // {{{ addEncryptKey()
-
-    /**
-     * Adds a key to use for encryption
-     *
-     * @param mixed $key the key to use. This may be a key identifier, user id
-     *                   user id, fingerprint, {@link Crypt_GPG_Key} or
-     *                   {@link Crypt_GPG_SubKey}. The key must be able to
-     *                   encrypt.
-     *
-     * @return Crypt_GPG the current object, for fluent interface.
-     *
-     * @see Crypt_GPG::encrypt()
-     * @see Crypt_GPG::encryptFile()
-     * @see Crypt_GPG::clearEncryptKeys()
-     * @see Crypt_GPG::_addKey()
-     */
-    public function addEncryptKey($key)
-    {
-        $this->_addKey($this->encryptKeys, true, false, $key);
-        return $this;
-    }
-
-    // }}}
-    // {{{ addSignKey()
-
-    /**
-     * Adds a key to use for signing
-     *
-     * @param mixed  $key        the key to use. This may be a key identifier,
-     *                           user id, fingerprint, {@link Crypt_GPG_Key} or
-     *                           {@link Crypt_GPG_SubKey}. The key must be able
-     *                           to sign.
-     * @param string $passphrase optional. The passphrase of the key required
-     *                           for signing.
-     *
-     * @return Crypt_GPG the current object, for fluent interface.
-     *
-     * @see Crypt_GPG::sign()
-     * @see Crypt_GPG::signFile()
-     * @see Crypt_GPG::clearSignKeys()
-     * @see Crypt_GPG::handleSignStatus()
-     * @see Crypt_GPG::_addKey()
-     *
-     * @sensitive $passphrase
-     */
-    public function addSignKey($key, $passphrase = null)
-    {
-        $this->_addKey($this->signKeys, false, true, $key, $passphrase);
-        return $this;
-    }
-
-    // }}}
-    // {{{ clearDecryptKeys()
-
-    /**
-     * Clears all decryption keys
-     *
-     * @return Crypt_GPG the current object, for fluent interface.
-     *
-     * @see Crypt_GPG::decrypt()
-     * @see Crypt_GPG::addDecryptKey()
-     */
-    public function clearDecryptKeys()
-    {
-        $this->decryptKeys = array();
-        return $this;
-    }
-
-    // }}}
-    // {{{ clearEncryptKeys()
-
-    /**
-     * Clears all encryption keys
-     *
-     * @return Crypt_GPG the current object, for fluent interface.
-     *
-     * @see Crypt_GPG::encrypt()
-     * @see Crypt_GPG::addEncryptKey()
-     */
-    public function clearEncryptKeys()
-    {
-        $this->encryptKeys = array();
-        return $this;
-    }
-
-    // }}}
-    // {{{ clearSignKeys()
-
-    /**
-     * Clears all signing keys
-     *
-     * @return Crypt_GPG the current object, for fluent interface.
-     *
-     * @see Crypt_GPG::sign()
-     * @see Crypt_GPG::addSignKey()
-     */
-    public function clearSignKeys()
-    {
-        $this->signKeys = array();
-        return $this;
-    }
-
-    // }}}
-    // {{{ handleSignStatus()
-
-    /**
-     * Handles the status output from GPG for the sign operation
-     *
-     * This method is responsible for sending the passphrase commands when
-     * required by the {@link Crypt_GPG::sign()} method. See <b>doc/DETAILS</b>
-     * in the {@link http://www.gnupg.org/download/ GPG distribution} for
-     * detailed information on GPG's status output.
-     *
-     * @param string $line the status line to handle.
-     *
-     * @return void
-     *
-     * @see Crypt_GPG::sign()
-     */
-    public function handleSignStatus($line)
-    {
-        $tokens = explode(' ', $line);
-        switch ($tokens[0]) {
-        case 'NEED_PASSPHRASE':
-            $subKeyId = $tokens[1];
-            if (array_key_exists($subKeyId, $this->signKeys)) {
-                $passphrase = $this->signKeys[$subKeyId]['passphrase'];
-                $this->engine->sendCommand($passphrase);
-            } else {
-                $this->engine->sendCommand('');
-            }
-            break;
-        }
-    }
-
-    // }}}
-    // {{{ handleImportKeyStatus()
-
-    /**
-     * Handles the status output from GPG for the import operation
-     *
-     * This method is responsible for building the result array that is
-     * returned from the {@link Crypt_GPG::importKey()} method. See
-     * <b>doc/DETAILS</b> in the
-     * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
-     * information on GPG's status output.
-     *
-     * @param string $line    the status line to handle.
-     * @param array  &$result the current result array being processed.
-     *
-     * @return void
-     *
-     * @see Crypt_GPG::importKey()
-     * @see Crypt_GPG::importKeyFile()
-     * @see Crypt_GPG_Engine::addStatusHandler()
-     */
-    public function handleImportKeyStatus($line, array &$result)
-    {
-        $tokens = explode(' ', $line);
-        switch ($tokens[0]) {
-        case 'IMPORT_OK':
-            $result['fingerprint'] = $tokens[2];
-            break;
-
-        case 'IMPORT_RES':
-            $result['public_imported']   = intval($tokens[3]);
-            $result['public_unchanged']  = intval($tokens[5]);
-            $result['private_imported']  = intval($tokens[11]);
-            $result['private_unchanged'] = intval($tokens[12]);
-            break;
-        }
-    }
-
-    // }}}
-    // {{{ _addKey()
-
-    /**
-     * Adds a key to one of the internal key arrays
-     *
-     * This handles resolving full key objects from the provided
-     * <kbd>$key</kbd> value.
-     *
-     * @param array   &$array     the array to which the key should be added.
-     * @param boolean $encrypt    whether or not the key must be able to
-     *                            encrypt.
-     * @param boolean $sign       whether or not the key must be able to sign.
-     * @param mixed   $key        the key to add. This may be a key identifier,
-     *                            user id, fingerprint, {@link Crypt_GPG_Key} or
-     *                            {@link Crypt_GPG_SubKey}.
-     * @param string  $passphrase optional. The passphrase associated with the
-     *                            key.
-     *
-     * @return void
-     *
-     * @sensitive $passphrase
-     */
-    protected function _addKey(array &$array, $encrypt, $sign, $key,
-        $passphrase = null
-    ) {
-        $subKeys = array();
-
-        if (is_scalar($key)) {
-            $keys = $this->getKeys($key);
-            if (count($keys) == 0) {
-                throw new Crypt_GPG_KeyNotFoundException(
-                    'Key "' . $key . '" not found.',
-                    0,
-                    $key
-                );
-            }
-            $key = $keys[0];
-        }
-
-        if ($key instanceof Crypt_GPG_Key) {
-            if ($encrypt && !$key->canEncrypt()) {
-                throw new InvalidArgumentException(
-                    'Key "' . $key . '" cannot encrypt.'
-                );
-            }
-
-            if ($sign && !$key->canSign()) {
-                throw new InvalidArgumentException(
-                    'Key "' . $key . '" cannot sign.'
-                );
-            }
-
-            foreach ($key->getSubKeys() as $subKey) {
-                $canEncrypt = $subKey->canEncrypt();
-                $canSign    = $subKey->canSign();
-                if (   ($encrypt && $sign && $canEncrypt && $canSign)
-                    || ($encrypt && !$sign && $canEncrypt)
-                    || (!$encrypt && $sign && $canSign)
-                ) {
-                    // We add all subkeys that meet the requirements because we
-                    // were not told which subkey is required.
-                    $subKeys[] = $subKey;
-                }
-            }
-        } elseif ($key instanceof Crypt_GPG_SubKey) {
-            $subKeys[] = $key;
-        }
-
-        if (count($subKeys) === 0) {
-            throw new InvalidArgumentException(
-                'Key "' . $key . '" is not in a recognized format.'
-            );
-        }
-
-        foreach ($subKeys as $subKey) {
-            if ($encrypt && !$subKey->canEncrypt()) {
-                throw new InvalidArgumentException(
-                    'Key "' . $key . '" cannot encrypt.'
-                );
-            }
-
-            if ($sign && !$subKey->canSign()) {
-                throw new InvalidArgumentException(
-                    'Key "' . $key . '" cannot sign.'
-                );
-            }
-
-            $array[$subKey->getId()] = array(
-                'fingerprint' => $subKey->getFingerprint(),
-                'passphrase'  => $passphrase
-            );
-        }
-    }
-
-    // }}}
-    // {{{ _setPinEntryEnv()
-
-    /**
-     * Sets the PINENTRY_USER_DATA environment variable with the currently
-     * added keys and passphrases
-     *
-     * Keys and pasphrases are stored as an indexed array of associative
-     * arrays that is JSON encoded to a flat string.
-     *
-     * For GnuPG 2.x this is how passphrases are passed. For GnuPG 1.x the
-     * environment variable is set but not used.
-     *
-     * @param array $keys the internal key array to use.
-     *
-     * @return void
-     */
-    protected function _setPinEntryEnv(array $keys)
-    {
-        $envKeys = array();
-        foreach ($keys as $id => $key) {
-            $envKeys[] = array(
-                'keyId'       => $id,
-                'fingerprint' => $key['fingerprint'],
-                'passphrase'  => $key['passphrase']
-            );
-        }
-        $envKeys = json_encode($envKeys);
-        $_ENV['PINENTRY_USER_DATA'] = $envKeys;
-    }
-
-    // }}}
-    // {{{ _importKey()
-
-    /**
-     * Imports a public or private key into the keyring
-     *
-     * @param string  $key    the key to be imported.
-     * @param boolean $isFile whether or not the input is a filename.
-     *
-     * @return array an associative array containing the following elements:
-     *               - <kbd>fingerprint</kbd>       - the fingerprint of the
-     *                                                imported key,
-     *               - <kbd>public_imported</kbd>   - the number of public
-     *                                                keys imported,
-     *               - <kbd>public_unchanged</kbd>  - the number of unchanged
-     *                                                public keys,
-     *               - <kbd>private_imported</kbd>  - the number of private
-     *                                                keys imported,
-     *               - <kbd>private_unchanged</kbd> - the number of unchanged
-     *                                                private keys.
-     *
-     * @throws Crypt_GPG_NoDataException if the key data is missing or if the
-     *         data is is not valid key data.
-     *
-     * @throws Crypt_GPG_FileException if the key file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    protected function _importKey($key, $isFile)
-    {
-        $result = array();
-
-        if ($isFile) {
-            $input = @fopen($key, 'rb');
-            if ($input === false) {
-                throw new Crypt_GPG_FileException(
-                    'Could not open key file "' . $key . '" for importing.',
-                    0,
-                    $key
-                );
-            }
-        } else {
-            $input = strval($key);
-            if ($input == '') {
-                throw new Crypt_GPG_NoDataException(
-                    'No valid GPG key data found.',
-                    self::ERROR_NO_DATA
-                );
-            }
-        }
-
-        $arguments = array();
-        $version   = $this->engine->getVersion();
-
-        if (   version_compare($version, '1.0.5', 'ge')
-            && version_compare($version, '1.0.7', 'lt')
-        ) {
-            $arguments[] = '--allow-secret-key-import';
-        }
-
-        $this->engine->reset();
-        $this->engine->addStatusHandler(
-            array($this, 'handleImportKeyStatus'),
-            array(&$result)
-        );
-
-        $this->engine->setOperation('--import', $arguments);
-        $this->engine->setInput($input);
-        $this->engine->run();
-
-        if ($isFile) {
-            fclose($input);
-        }
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_DUPLICATE_KEY:
-        case self::ERROR_NONE:
-            // ignore duplicate key import errors
-            break;
-        case self::ERROR_NO_DATA:
-            throw new Crypt_GPG_NoDataException(
-                'No valid GPG key data found.',
-                $code
-            );
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error importing GPG key. Please use the \'debug\' ' .
-                'option when creating the Crypt_GPG object, and file a bug ' .
-                'report at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        return $result;
-    }
-
-    // }}}
-    // {{{ _encrypt()
-
-    /**
-     * Encrypts data
-     *
-     * @param string  $data       the data to encrypt.
-     * @param boolean $isFile     whether or not the data is a filename.
-     * @param string  $outputFile the filename of the file in which to store
-     *                            the encrypted data. If null, the encrypted
-     *                            data is returned as a string.
-     * @param boolean $armor      if true, ASCII armored data is returned;
-     *                            otherwise, binary data is returned.
-     *
-     * @return void|string if the <kbd>$outputFile</kbd> parameter is null, a
-     *                     string containing the encrypted data is returned.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified.
-     *         See {@link Crypt_GPG::addEncryptKey()}.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    protected function _encrypt($data, $isFile, $outputFile, $armor)
-    {
-        if (count($this->encryptKeys) === 0) {
-            throw new Crypt_GPG_KeyNotFoundException(
-                'No encryption keys specified.'
-            );
-        }
-
-        if ($isFile) {
-            $input = @fopen($data, 'rb');
-            if ($input === false) {
-                throw new Crypt_GPG_FileException(
-                    'Could not open input file "' . $data .
-                    '" for encryption.',
-                    0,
-                    $data
-                );
-            }
-        } else {
-            $input = strval($data);
-        }
-
-        if ($outputFile === null) {
-            $output = '';
-        } else {
-            $output = @fopen($outputFile, 'wb');
-            if ($output === false) {
-                if ($isFile) {
-                    fclose($input);
-                }
-                throw new Crypt_GPG_FileException(
-                    'Could not open output file "' . $outputFile .
-                    '" for storing encrypted data.',
-                    0,
-                    $outputFile
-                );
-            }
-        }
-
-        $arguments = ($armor) ? array('--armor') : array();
-        foreach ($this->encryptKeys as $key) {
-            $arguments[] = '--recipient ' . escapeshellarg($key['fingerprint']);
-        }
-
-        $this->engine->reset();
-        $this->engine->setInput($input);
-        $this->engine->setOutput($output);
-        $this->engine->setOperation('--encrypt', $arguments);
-        $this->engine->run();
-
-        if ($isFile) {
-            fclose($input);
-        }
-
-        if ($outputFile !== null) {
-            fclose($output);
-        }
-
-        $code = $this->engine->getErrorCode();
-
-        if ($code !== self::ERROR_NONE) {
-            throw new Crypt_GPG_Exception(
-                'Unknown error encrypting data. Please use the \'debug\' ' .
-                'option when creating the Crypt_GPG object, and file a bug ' .
-                'report at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        if ($outputFile === null) {
-            return $output;
-        }
-    }
-
-    // }}}
-    // {{{ _decrypt()
-
-    /**
-     * Decrypts data
-     *
-     * @param string  $data       the data to be decrypted.
-     * @param boolean $isFile     whether or not the data is a filename.
-     * @param string  $outputFile the name of the file to which the decrypted
-     *                            data should be written. If null, the decrypted
-     *                            data is returned as a string.
-     *
-     * @return void|string if the <kbd>$outputFile</kbd> parameter is null, a
-     *                     string containing the decrypted data is returned.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
-     *         decrypt the data is not in the user's keyring.
-     *
-     * @throws Crypt_GPG_NoDataException if specified data does not contain
-     *         GPG encrypted data.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
-     *         incorrect or if a required passphrase is not specified. See
-     *         {@link Crypt_GPG::addDecryptKey()}.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    protected function _decrypt($data, $isFile, $outputFile)
-    {
-        if ($isFile) {
-            $input = @fopen($data, 'rb');
-            if ($input === false) {
-                throw new Crypt_GPG_FileException(
-                    'Could not open input file "' . $data .
-                    '" for decryption.',
-                    0,
-                    $data
-                );
-            }
-        } else {
-            $input = strval($data);
-            if ($input == '') {
-                throw new Crypt_GPG_NoDataException(
-                    'Cannot decrypt data. No PGP encrypted data was found in '.
-                    'the provided data.',
-                    self::ERROR_NO_DATA
-                );
-            }
-        }
-
-        if ($outputFile === null) {
-            $output = '';
-        } else {
-            $output = @fopen($outputFile, 'wb');
-            if ($output === false) {
-                if ($isFile) {
-                    fclose($input);
-                }
-                throw new Crypt_GPG_FileException(
-                    'Could not open output file "' . $outputFile .
-                    '" for storing decrypted data.',
-                    0,
-                    $outputFile
-                );
-            }
-        }
-
-        $handler = new Crypt_GPG_DecryptStatusHandler(
-            $this->engine,
-            $this->decryptKeys
-        );
-
-        // If using gpg-agent, set the decrypt pins used by the pinentry
-        $this->_setPinEntryEnv($this->decryptKeys);
-
-        $this->engine->reset();
-        $this->engine->addStatusHandler(array($handler, 'handle'));
-        $this->engine->setOperation('--decrypt');
-        $this->engine->setInput($input);
-        $this->engine->setOutput($output);
-        $this->engine->run();
-
-        if ($isFile) {
-            fclose($input);
-        }
-
-        if ($outputFile !== null) {
-            fclose($output);
-        }
-
-        // if there was any problem decrypting the data, the handler will
-        // deal with it here.
-        $handler->throwException();
-
-        if ($outputFile === null) {
-            return $output;
-        }
-    }
-
-    // }}}
-    // {{{ _sign()
-
-    /**
-     * Signs data
-     *
-     * @param string  $data       the data to be signed.
-     * @param boolean $isFile     whether or not the data is a filename.
-     * @param string  $outputFile the name of the file in which the signed data
-     *                            should be stored. If null, the signed data is
-     *                            returned as a string.
-     * @param boolean $mode       the data signing mode to use. Should be one of
-     *                            {@link Crypt_GPG::SIGN_MODE_NORMAL},
-     *                            {@link Crypt_GPG::SIGN_MODE_CLEAR} or
-     *                            {@link Crypt_GPG::SIGN_MODE_DETACHED}.
-     * @param boolean $armor      if true, ASCII armored data is returned;
-     *                            otherwise, binary data is returned. This has
-     *                            no effect if the mode
-     *                            <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
-     *                            used.
-     * @param boolean $textmode   if true, line-breaks in signed data be
-     *                            normalized. Use this option when signing
-     *                            e-mail, or for greater compatibility between
-     *                            systems with different line-break formats.
-     *                            Defaults to false. This has no effect if the
-     *                            mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
-     *                            used as clear-signing always uses textmode.
-     *
-     * @return void|string if the <kbd>$outputFile</kbd> parameter is null, a
-     *                     string containing the signed data (or the signature
-     *                     data if a detached signature is requested) is
-     *                     returned.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if no signing key is specified.
-     *         See {@link Crypt_GPG::addSignKey()}.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
-     *         incorrect or if a required passphrase is not specified.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    protected function _sign($data, $isFile, $outputFile, $mode, $armor,
-        $textmode
-    ) {
-        if (count($this->signKeys) === 0) {
-            throw new Crypt_GPG_KeyNotFoundException(
-                'No signing keys specified.'
-            );
-        }
-
-        if ($isFile) {
-            $input = @fopen($data, 'rb');
-            if ($input === false) {
-                throw new Crypt_GPG_FileException(
-                    'Could not open input file "' . $data . '" for signing.',
-                    0,
-                    $data
-                );
-            }
-        } else {
-            $input = strval($data);
-        }
-
-        if ($outputFile === null) {
-            $output = '';
-        } else {
-            $output = @fopen($outputFile, 'wb');
-            if ($output === false) {
-                if ($isFile) {
-                    fclose($input);
-                }
-                throw new Crypt_GPG_FileException(
-                    'Could not open output file "' . $outputFile .
-                    '" for storing signed data.',
-                    0,
-                    $outputFile
-                );
-            }
-        }
-
-        switch ($mode) {
-        case self::SIGN_MODE_DETACHED:
-            $operation = '--detach-sign';
-            break;
-        case self::SIGN_MODE_CLEAR:
-            $operation = '--clearsign';
-            break;
-        case self::SIGN_MODE_NORMAL:
-        default:
-            $operation = '--sign';
-            break;
-        }
-
-        $arguments  = array();
-
-        if ($armor) {
-            $arguments[] = '--armor';
-        }
-        if ($textmode) {
-            $arguments[] = '--textmode';
-        }
-
-        foreach ($this->signKeys as $key) {
-            $arguments[] = '--local-user ' .
-                escapeshellarg($key['fingerprint']);
-        }
-
-        // If using gpg-agent, set the sign pins used by the pinentry
-        $this->_setPinEntryEnv($this->signKeys);
-
-        $this->engine->reset();
-        $this->engine->addStatusHandler(array($this, 'handleSignStatus'));
-        $this->engine->setInput($input);
-        $this->engine->setOutput($output);
-        $this->engine->setOperation($operation, $arguments);
-        $this->engine->run();
-
-        if ($isFile) {
-            fclose($input);
-        }
-
-        if ($outputFile !== null) {
-            fclose($output);
-        }
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-            break;
-        case self::ERROR_KEY_NOT_FOUND:
-            throw new Crypt_GPG_KeyNotFoundException(
-                'Cannot sign data. Private key not found. Import the '.
-                'private key before trying to sign data.',
-                $code,
-                $this->engine->getErrorKeyId()
-            );
-        case self::ERROR_BAD_PASSPHRASE:
-            throw new Crypt_GPG_BadPassphraseException(
-                'Cannot sign data. Incorrect passphrase provided.',
-                $code
-            );
-        case self::ERROR_MISSING_PASSPHRASE:
-            throw new Crypt_GPG_BadPassphraseException(
-                'Cannot sign data. No passphrase provided.',
-                $code
-            );
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error signing data. Please use the \'debug\' option ' .
-                'when creating the Crypt_GPG object, and file a bug report ' .
-                'at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        if ($outputFile === null) {
-            return $output;
-        }
-    }
-
-    // }}}
-    // {{{ _encryptAndSign()
-
-    /**
-     * Encrypts and signs data
-     *
-     * @param string  $data       the data to be encrypted and signed.
-     * @param boolean $isFile     whether or not the data is a filename.
-     * @param string  $outputFile the name of the file in which the encrypted,
-     *                            signed data should be stored. If null, the
-     *                            encrypted, signed data is returned as a
-     *                            string.
-     * @param boolean $armor      if true, ASCII armored data is returned;
-     *                            otherwise, binary data is returned.
-     *
-     * @return void|string if the <kbd>$outputFile</kbd> parameter is null, a
-     *                     string containing the encrypted, signed data is
-     *                     returned.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified
-     *         or if no signing key is specified. See
-     *         {@link Crypt_GPG::addEncryptKey()} and
-     *         {@link Crypt_GPG::addSignKey()}.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
-     *         incorrect or if a required passphrase is not specified.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    protected function _encryptAndSign($data, $isFile, $outputFile, $armor)
-    {
-        if (count($this->signKeys) === 0) {
-            throw new Crypt_GPG_KeyNotFoundException(
-                'No signing keys specified.'
-            );
-        }
-
-        if (count($this->encryptKeys) === 0) {
-            throw new Crypt_GPG_KeyNotFoundException(
-                'No encryption keys specified.'
-            );
-        }
-
-
-        if ($isFile) {
-            $input = @fopen($data, 'rb');
-            if ($input === false) {
-                throw new Crypt_GPG_FileException(
-                    'Could not open input file "' . $data .
-                    '" for encrypting and signing.',
-                    0,
-                    $data
-                );
-            }
-        } else {
-            $input = strval($data);
-        }
-
-        if ($outputFile === null) {
-            $output = '';
-        } else {
-            $output = @fopen($outputFile, 'wb');
-            if ($output === false) {
-                if ($isFile) {
-                    fclose($input);
-                }
-                throw new Crypt_GPG_FileException(
-                    'Could not open output file "' . $outputFile .
-                    '" for storing encrypted, signed data.',
-                    0,
-                    $outputFile
-                );
-            }
-        }
-
-        $arguments  = ($armor) ? array('--armor') : array();
-
-        foreach ($this->signKeys as $key) {
-            $arguments[] = '--local-user ' .
-                escapeshellarg($key['fingerprint']);
-        }
-
-        // If using gpg-agent, set the sign pins used by the pinentry
-        $this->_setPinEntryEnv($this->signKeys);
-
-        foreach ($this->encryptKeys as $key) {
-            $arguments[] = '--recipient ' . escapeshellarg($key['fingerprint']);
-        }
-
-        $this->engine->reset();
-        $this->engine->addStatusHandler(array($this, 'handleSignStatus'));
-        $this->engine->setInput($input);
-        $this->engine->setOutput($output);
-        $this->engine->setOperation('--encrypt --sign', $arguments);
-        $this->engine->run();
-
-        if ($isFile) {
-            fclose($input);
-        }
-
-        if ($outputFile !== null) {
-            fclose($output);
-        }
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-            break;
-        case self::ERROR_KEY_NOT_FOUND:
-            throw new Crypt_GPG_KeyNotFoundException(
-                'Cannot sign encrypted data. Private key not found. Import '.
-                'the private key before trying to sign the encrypted data.',
-                $code,
-                $this->engine->getErrorKeyId()
-            );
-        case self::ERROR_BAD_PASSPHRASE:
-            throw new Crypt_GPG_BadPassphraseException(
-                'Cannot sign encrypted data. Incorrect passphrase provided.',
-                $code
-            );
-        case self::ERROR_MISSING_PASSPHRASE:
-            throw new Crypt_GPG_BadPassphraseException(
-                'Cannot sign encrypted data. No passphrase provided.',
-                $code
-            );
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error encrypting and signing data. Please use the ' .
-                '\'debug\' option when creating the Crypt_GPG object, and ' .
-                'file a bug report at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        if ($outputFile === null) {
-            return $output;
-        }
-    }
-
-    // }}}
-    // {{{ _verify()
-
-    /**
-     * Verifies data
-     *
-     * @param string  $data      the signed data to be verified.
-     * @param boolean $isFile    whether or not the data is a filename.
-     * @param string  $signature if verifying a file signed using a detached
-     *                           signature, this must be the detached signature
-     *                           data. Otherwise, specify ''.
-     *
-     * @return array an array of {@link Crypt_GPG_Signature} objects for the
-     *               signed data.
-     *
-     * @throws Crypt_GPG_NoDataException if the provided data is not signed
-     *         data.
-     *
-     * @throws Crypt_GPG_FileException if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @see Crypt_GPG_Signature
-     */
-    protected function _verify($data, $isFile, $signature)
-    {
-        if ($signature == '') {
-            $operation = '--verify';
-            $arguments = array();
-        } else {
-            // Signed data goes in FD_MESSAGE, detached signature data goes in
-            // FD_INPUT.
-            $operation = '--verify - "-&' . Crypt_GPG_Engine::FD_MESSAGE. '"';
-            $arguments = array('--enable-special-filenames');
-        }
-
-        $handler = new Crypt_GPG_VerifyStatusHandler();
-
-        if ($isFile) {
-            $input = @fopen($data, 'rb');
-            if ($input === false) {
-                throw new Crypt_GPG_FileException(
-                    'Could not open input file "' . $data . '" for verifying.',
-                    0,
-                    $data
-                );
-            }
-        } else {
-            $input = strval($data);
-            if ($input == '') {
-                throw new Crypt_GPG_NoDataException(
-                    'No valid signature data found.',
-                    self::ERROR_NO_DATA
-                );
-            }
-        }
-
-        $this->engine->reset();
-        $this->engine->addStatusHandler(array($handler, 'handle'));
-
-        if ($signature == '') {
-            // signed or clearsigned data
-            $this->engine->setInput($input);
-        } else {
-            // detached signature
-            $this->engine->setInput($signature);
-            $this->engine->setMessage($input);
-        }
-
-        $this->engine->setOperation($operation, $arguments);
-        $this->engine->run();
-
-        if ($isFile) {
-            fclose($input);
-        }
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-        case self::ERROR_BAD_SIGNATURE:
-            break;
-        case self::ERROR_NO_DATA:
-            throw new Crypt_GPG_NoDataException(
-                'No valid signature data found.',
-                $code
-            );
-        case self::ERROR_KEY_NOT_FOUND:
-            throw new Crypt_GPG_KeyNotFoundException(
-                'Public key required for data verification not in keyring.',
-                $code,
-                $this->engine->getErrorKeyId()
-            );
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error validating signature details. Please use the ' .
-                '\'debug\' option when creating the Crypt_GPG object, and ' .
-                'file a bug report at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        return $handler->getSignatures();
-    }
-
-    // }}}
-    // {{{ _decryptAndVerify()
-
-    /**
-     * Decrypts and verifies encrypted, signed data
-     *
-     * @param string  $data       the encrypted signed data to be decrypted and
-     *                            verified.
-     * @param boolean $isFile     whether or not the data is a filename.
-     * @param string  $outputFile the name of the file to which the decrypted
-     *                            data should be written. If null, the decrypted
-     *                            data is returned in the results array.
-     *
-     * @return array two element array. The array has an element 'data'
-     *               containing the decrypted data and an element
-     *               'signatures' containing an array of
-     *               {@link Crypt_GPG_Signature} objects for the signed data.
-     *               If the decrypted data is written to a file, the 'data'
-     *               element is null.
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
-     *         decrypt the data is not in the user's keyring or it the public
-     *         key needed for verification is not in the user's keyring.
-     *
-     * @throws Crypt_GPG_NoDataException if specified data does not contain
-     *         GPG signed, encrypted data.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
-     *         incorrect or if a required passphrase is not specified. See
-     *         {@link Crypt_GPG::addDecryptKey()}.
-     *
-     * @throws Crypt_GPG_FileException if the output file is not writeable or
-     *         if the input file is not readable.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @see Crypt_GPG_Signature
-     */
-    protected function _decryptAndVerify($data, $isFile, $outputFile)
-    {
-        if ($isFile) {
-            $input = @fopen($data, 'rb');
-            if ($input === false) {
-                throw new Crypt_GPG_FileException(
-                    'Could not open input file "' . $data .
-                    '" for decrypting and verifying.',
-                    0,
-                    $data
-                );
-            }
-        } else {
-            $input = strval($data);
-            if ($input == '') {
-                throw new Crypt_GPG_NoDataException(
-                    'No valid encrypted signed data found.',
-                    self::ERROR_NO_DATA
-                );
-            }
-        }
-
-        if ($outputFile === null) {
-            $output = '';
-        } else {
-            $output = @fopen($outputFile, 'wb');
-            if ($output === false) {
-                if ($isFile) {
-                    fclose($input);
-                }
-                throw new Crypt_GPG_FileException(
-                    'Could not open output file "' . $outputFile .
-                    '" for storing decrypted data.',
-                    0,
-                    $outputFile
-                );
-            }
-        }
-
-        $verifyHandler = new Crypt_GPG_VerifyStatusHandler();
-
-        $decryptHandler = new Crypt_GPG_DecryptStatusHandler(
-            $this->engine,
-            $this->decryptKeys
-        );
-
-        // If using gpg-agent, set the decrypt pins used by the pinentry
-        $this->_setPinEntryEnv($this->decryptKeys);
-
-        $this->engine->reset();
-        $this->engine->addStatusHandler(array($verifyHandler, 'handle'));
-        $this->engine->addStatusHandler(array($decryptHandler, 'handle'));
-        $this->engine->setInput($input);
-        $this->engine->setOutput($output);
-        $this->engine->setOperation('--decrypt');
-        $this->engine->run();
-
-        if ($isFile) {
-            fclose($input);
-        }
-
-        if ($outputFile !== null) {
-            fclose($output);
-        }
-
-        $return = array(
-            'data'       => null,
-            'signatures' => $verifyHandler->getSignatures()
-        );
-
-        // if there was any problem decrypting the data, the handler will
-        // deal with it here.
-        try {
-            $decryptHandler->throwException();
-        } catch (Exception $e) {
-            if ($e instanceof Crypt_GPG_KeyNotFoundException) {
-                throw new Crypt_GPG_KeyNotFoundException(
-                    'Public key required for data verification not in ',
-                    'the keyring. Either no suitable private decryption key ' .
-                    'is in the keyring or the public key required for data ' .
-                    'verification is not in the keyring. Import a suitable ' .
-                    'key before trying to decrypt and verify this data.',
-                    self::ERROR_KEY_NOT_FOUND,
-                    $this->engine->getErrorKeyId()
-                );
-            }
-
-            if ($e instanceof Crypt_GPG_NoDataException) {
-                throw new Crypt_GPG_NoDataException(
-                    'Cannot decrypt and verify data. No PGP encrypted data ' .
-                    'was found in the provided data.',
-                    self::ERROR_NO_DATA
-                );
-            }
-
-            throw $e;
-        }
-
-        if ($outputFile === null) {
-            $return['data'] = $output;
-        }
-
-        return $return;
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/ByteUtils.php b/program/lib/Crypt/GPG/ByteUtils.php
deleted file mode 100644
index 3429054..0000000
--- a/program/lib/Crypt/GPG/ByteUtils.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * A class for performing byte-wise string operations
- *
- * GPG I/O streams are managed using bytes rather than characters.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-
-// {{{ class Crypt_GPG_ByteUtils
-
-/**
- * A class for performing byte-wise string operations
- *
- * GPG I/O streams are managed using bytes rather than characters. This class
- * requires the mbstring extension to be available.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://php.net/mbstring
- */
-class Crypt_GPG_ByteUtils
-{
-    // {{{ strlen()
-
-    /**
-     * Gets the length of a string in bytes
-     *
-     * This is used for stream-based communication with the GPG subprocess.
-     *
-     * @param string $string the string for which to get the length.
-     *
-     * @return integer the length of the string in bytes.
-     */
-    public static function strlen($string)
-    {
-        return mb_strlen($string, '8bit');
-    }
-
-    // }}}
-    // {{{ substr()
-
-    /**
-     * Gets the substring of a string in bytes
-     *
-     * This is used for stream-based communication with the GPG subprocess.
-     *
-     * @param string  $string the input string.
-     * @param integer $start  the starting point at which to get the substring.
-     * @param integer $length optional. The length of the substring.
-     *
-     * @return string the extracted part of the string. Unlike the default PHP
-     *                <kbd>substr()</kbd> function, the returned value is
-     *                always a string and never false.
-     */
-    public static function substr($string, $start, $length = null)
-    {
-        if ($length === null) {
-            return mb_substr(
-                $string,
-                $start,
-                self::strlen($string) - $start, '8bit'
-            );
-        }
-
-        return mb_substr($string, $start, $length, '8bit');
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/DecryptStatusHandler.php b/program/lib/Crypt/GPG/DecryptStatusHandler.php
deleted file mode 100644
index 67c0dd7..0000000
--- a/program/lib/Crypt/GPG/DecryptStatusHandler.php
+++ /dev/null
@@ -1,344 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GnuPG from PHP
- *
- * This file contains an object that handles GnuPG's status output for the
- * decrypt operation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-
-/**
- * Crypt_GPG base class
- */
-require_once 'Crypt/GPG.php';
-
-/**
- * Crypt_GPG exception classes
- */
-require_once 'Crypt/GPG/Exceptions.php';
-
-
-/**
- * Status line handler for the decrypt operation
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * This class is responsible for sending the passphrase commands when required
- * by the {@link Crypt_GPG::decrypt()} method. See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GnuPG distribution} for detailed
- * information on GnuPG's status output for the decrypt operation.
- *
- * This class is also responsible for parsing error status and throwing a
- * meaningful exception in the event that decryption fails.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-class Crypt_GPG_DecryptStatusHandler
-{
-    // {{{ protected properties
-
-    /**
-     * Keys used to decrypt
-     *
-     * The array is of the form:
-     * <code>
-     * array(
-     *   $key_id => array(
-     *     'fingerprint' => $fingerprint,
-     *     'passphrase'  => $passphrase
-     *   )
-     * );
-     * </code>
-     *
-     * @var array
-     */
-    protected $keys = array();
-
-    /**
-     * Engine used to which passphrases are passed
-     *
-     * @var Crypt_GPG_Engine
-     */
-    protected $engine = null;
-
-    /**
-     * The id of the current sub-key used for decryption
-     *
-     * @var string
-     */
-    protected $currentSubKey = '';
-
-    /**
-     * Whether or not decryption succeeded
-     *
-     * If the message is only signed (compressed) and not encrypted, this is
-     * always true. If the message is encrypted, this flag is set to false
-     * until we know the decryption succeeded.
-     *
-     * @var boolean
-     */
-    protected $decryptionOkay = true;
-
-    /**
-     * Whether or not there was no data for decryption
-     *
-     * @var boolean
-     */
-    protected $noData = false;
-
-    /**
-     * Keys for which the passhprase is missing
-     *
-     * This contains primary user ids indexed by sub-key id and is used to
-     * create helpful exception messages.
-     *
-     * @var array
-     */
-    protected $missingPassphrases = array();
-
-    /**
-     * Keys for which the passhprase is incorrect
-     *
-     * This contains primary user ids indexed by sub-key id and is used to
-     * create helpful exception messages.
-     *
-     * @var array
-     */
-    protected $badPassphrases = array();
-
-    /**
-     * Keys that can be used to decrypt the data but are missing from the
-     * keychain
-     *
-     * This is an array with both the key and value being the sub-key id of
-     * the missing keys.
-     *
-     * @var array
-     */
-    protected $missingKeys = array();
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new decryption status handler
-     *
-     * @param Crypt_GPG_Engine $engine the GPG engine to which passphrases are
-     *                                 passed.
-     * @param array            $keys   the decryption keys to use.
-     */
-    public function __construct(Crypt_GPG_Engine $engine, array $keys)
-    {
-        $this->engine = $engine;
-        $this->keys   = $keys;
-    }
-
-    // }}}
-    // {{{ handle()
-
-    /**
-     * Handles a status line
-     *
-     * @param string $line the status line to handle.
-     *
-     * @return void
-     */
-    public function handle($line)
-    {
-        $tokens = explode(' ', $line);
-        switch ($tokens[0]) {
-        case 'ENC_TO':
-            // Now we know the message is encrypted. Set flag to check if
-            // decryption succeeded.
-            $this->decryptionOkay = false;
-
-            // this is the new key message
-            $this->currentSubKeyId = $tokens[1];
-            break;
-
-        case 'NEED_PASSPHRASE':
-            // send passphrase to the GPG engine
-            $subKeyId = $tokens[1];
-            if (array_key_exists($subKeyId, $this->keys)) {
-                $passphrase = $this->keys[$subKeyId]['passphrase'];
-                $this->engine->sendCommand($passphrase);
-            } else {
-                $this->engine->sendCommand('');
-            }
-            break;
-
-        case 'USERID_HINT':
-            // remember the user id for pretty exception messages
-            $this->badPassphrases[$tokens[1]]
-                = implode(' ', array_splice($tokens, 2));
-
-            break;
-
-        case 'GOOD_PASSPHRASE':
-            // if we got a good passphrase, remove the key from the list of
-            // bad passphrases.
-            unset($this->badPassphrases[$this->currentSubKeyId]);
-            break;
-
-        case 'MISSING_PASSPHRASE':
-            $this->missingPassphrases[$this->currentSubKeyId]
-                = $this->currentSubKeyId;
-
-            break;
-
-        case 'NO_SECKEY':
-            // note: this message is also received if there are multiple
-            // recipients and a previous key had a correct passphrase.
-            $this->missingKeys[$tokens[1]] = $tokens[1];
-            break;
-
-        case 'NODATA':
-            $this->noData = true;
-            break;
-
-        case 'DECRYPTION_OKAY':
-            // If the message is encrypted, this is the all-clear signal.
-            $this->decryptionOkay = true;
-            break;
-        }
-    }
-
-    // }}}
-    // {{{ throwException()
-
-    /**
-     * Takes the final status of the decrypt operation and throws an
-     * appropriate exception
-     *
-     * If decryption was successful, no exception is thrown.
-     *
-     * @return void
-     *
-     * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
-     *         decrypt the data is not in the user's keyring.
-     *
-     * @throws Crypt_GPG_NoDataException if specified data does not contain
-     *         GPG encrypted data.
-     *
-     * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
-     *         incorrect or if a required passphrase is not specified. See
-     *         {@link Crypt_GPG::addDecryptKey()}.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <i>debug</i> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function throwException()
-    {
-        $code = Crypt_GPG::ERROR_NONE;
-
-        if (!$this->decryptionOkay) {
-            if (count($this->badPassphrases) > 0) {
-                $code = Crypt_GPG::ERROR_BAD_PASSPHRASE;
-            } elseif (count($this->missingKeys) > 0) {
-                $code = Crypt_GPG::ERROR_KEY_NOT_FOUND;
-            } else {
-                $code = Crypt_GPG::ERROR_UNKNOWN;
-            }
-        } elseif ($this->noData) {
-            $code = Crypt_GPG::ERROR_NO_DATA;
-        }
-
-        switch ($code) {
-        case Crypt_GPG::ERROR_NONE:
-            break;
-
-        case Crypt_GPG::ERROR_KEY_NOT_FOUND:
-            if (count($this->missingKeys) > 0) {
-                $keyId = reset($this->missingKeys);
-            } else {
-                $keyId = '';
-            }
-            throw new Crypt_GPG_KeyNotFoundException(
-                'Cannot decrypt data. No suitable private key is in the ' .
-                'keyring. Import a suitable private key before trying to ' .
-                'decrypt this data.',
-                $code,
-                $keyId
-            );
-        case Crypt_GPG::ERROR_BAD_PASSPHRASE:
-            $badPassphrases = array_diff_key(
-                $this->badPassphrases,
-                $this->missingPassphrases
-            );
-
-            $missingPassphrases = array_intersect_key(
-                $this->badPassphrases,
-                $this->missingPassphrases
-            );
-
-            $message =  'Cannot decrypt data.';
-            if (count($badPassphrases) > 0) {
-                $message = ' Incorrect passphrase provided for keys: "' .
-                    implode('", "', $badPassphrases) . '".';
-            }
-            if (count($missingPassphrases) > 0) {
-                $message = ' No passphrase provided for keys: "' .
-                    implode('", "', $badPassphrases) . '".';
-            }
-
-            throw new Crypt_GPG_BadPassphraseException(
-                $message,
-                $code,
-                $badPassphrases,
-                $missingPassphrases
-            );
-        case Crypt_GPG::ERROR_NO_DATA:
-            throw new Crypt_GPG_NoDataException(
-                'Cannot decrypt data. No PGP encrypted data was found in '.
-                'the provided data.',
-                $code
-            );
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error decrypting data.',
-                $code
-            );
-        }
-    }
-
-    // }}}
-}
-
-?>
diff --git a/program/lib/Crypt/GPG/Engine.php b/program/lib/Crypt/GPG/Engine.php
deleted file mode 100644
index 6015414..0000000
--- a/program/lib/Crypt/GPG/Engine.php
+++ /dev/null
@@ -1,2006 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an engine that handles GPG subprocess control and I/O.
- * PHP's process manipulation functions are used to handle the GPG subprocess.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-
-/**
- * Crypt_GPG base class.
- */
-require_once 'Crypt/GPG.php';
-
-/**
- * GPG exception classes.
- */
-require_once 'Crypt/GPG/Exceptions.php';
-
-/**
- * Byte string operations.
- */
-require_once 'Crypt/GPG/ByteUtils.php';
-
-/**
- * Process control methods.
- */
-require_once 'Crypt/GPG/ProcessControl.php';
-
-/**
- * Standard PEAR exception is used if GPG binary is not found.
- */
-require_once 'PEAR/Exception.php';
-
-// {{{ class Crypt_GPG_Engine
-
-/**
- * Native PHP Crypt_GPG I/O engine
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * This engine uses PHP's native process control functions to directly control
- * the GPG process. The GPG executable is required to be on the system.
- *
- * All data is passed to the GPG subprocess using file descriptors. This is the
- * most secure method of passing data to the GPG subprocess.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-class Crypt_GPG_Engine
-{
-    // {{{ constants
-
-    /**
-     * Size of data chunks that are sent to and retrieved from the IPC pipes.
-     *
-     * PHP reads 8192 bytes. If this is set to less than 8192, PHP reads 8192
-     * and buffers the rest so we might as well just read 8192.
-     *
-     * Using values other than 8192 also triggers PHP bugs.
-     *
-     * @see http://bugs.php.net/bug.php?id=35224
-     */
-    const CHUNK_SIZE = 8192;
-
-    /**
-     * Standard input file descriptor. This is used to pass data to the GPG
-     * process.
-     */
-    const FD_INPUT = 0;
-
-    /**
-     * Standard output file descriptor. This is used to receive normal output
-     * from the GPG process.
-     */
-    const FD_OUTPUT = 1;
-
-    /**
-     * Standard output file descriptor. This is used to receive error output
-     * from the GPG process.
-     */
-    const FD_ERROR = 2;
-
-    /**
-     * GPG status output file descriptor. The status file descriptor outputs
-     * detailed information for many GPG commands. See the second section of
-     * the file <b>doc/DETAILS</b> in the
-     * {@link http://www.gnupg.org/download/ GPG package} for a detailed
-     * description of GPG's status output.
-     */
-    const FD_STATUS = 3;
-
-    /**
-     * Command input file descriptor. This is used for methods requiring
-     * passphrases.
-     */
-    const FD_COMMAND = 4;
-
-    /**
-     * Extra message input file descriptor. This is used for passing signed
-     * data when verifying a detached signature.
-     */
-    const FD_MESSAGE = 5;
-
-    /**
-     * Minimum version of GnuPG that is supported.
-     */
-    const MIN_VERSION = '1.0.2';
-
-    // }}}
-    // {{{ private class properties
-
-    /**
-     * Whether or not to use debugging mode
-     *
-     * When set to true, every GPG command is echoed before it is run. Sensitive
-     * data is always handled using pipes and is not specified as part of the
-     * command. As a result, sensitive data is never displayed when debug is
-     * enabled. Sensitive data includes private key data and passphrases.
-     *
-     * Debugging is off by default.
-     *
-     * @var boolean
-     * @see Crypt_GPG_Engine::__construct()
-     */
-    private $_debug = false;
-
-    /**
-     * Location of GPG binary
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::__construct()
-     * @see Crypt_GPG_Engine::_getBinary()
-     */
-    private $_binary = '';
-
-    /**
-     * Location of GnuPG agent binary
-     *
-     * Only used for GnuPG 2.x
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::__construct()
-     * @see Crypt_GPG_Engine::_getAgent()
-     */
-    private $_agent = '';
-
-    /**
-     * Directory containing the GPG key files
-     *
-     * This property only contains the path when the <i>homedir</i> option
-     * is specified in the constructor.
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::__construct()
-     */
-    private $_homedir = '';
-
-    /**
-     * File path of the public keyring
-     *
-     * This property only contains the file path when the <i>public_keyring</i>
-     * option is specified in the constructor.
-     *
-     * If the specified file path starts with <kbd>~/</kbd>, the path is
-     * relative to the <i>homedir</i> if specified, otherwise to
-     * <kbd>~/.gnupg</kbd>.
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::__construct()
-     */
-    private $_publicKeyring = '';
-
-    /**
-     * File path of the private (secret) keyring
-     *
-     * This property only contains the file path when the <i>private_keyring</i>
-     * option is specified in the constructor.
-     *
-     * If the specified file path starts with <kbd>~/</kbd>, the path is
-     * relative to the <i>homedir</i> if specified, otherwise to
-     * <kbd>~/.gnupg</kbd>.
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::__construct()
-     */
-    private $_privateKeyring = '';
-
-    /**
-     * File path of the trust database
-     *
-     * This property only contains the file path when the <i>trust_db</i>
-     * option is specified in the constructor.
-     *
-     * If the specified file path starts with <kbd>~/</kbd>, the path is
-     * relative to the <i>homedir</i> if specified, otherwise to
-     * <kbd>~/.gnupg</kbd>.
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::__construct()
-     */
-    private $_trustDb = '';
-
-    /**
-     * Array of pipes used for communication with the GPG binary
-     *
-     * This is an array of file descriptor resources.
-     *
-     * @var array
-     */
-    private $_pipes = array();
-
-    /**
-     * Array of pipes used for communication with the gpg-agent binary
-     *
-     * This is an array of file descriptor resources.
-     *
-     * @var array
-     */
-    private $_agentPipes = array();
-
-    /**
-     * Array of currently opened pipes
-     *
-     * This array is used to keep track of remaining opened pipes so they can
-     * be closed when the GPG subprocess is finished. This array is a subset of
-     * the {@link Crypt_GPG_Engine::$_pipes} array and contains opened file
-     * descriptor resources.
-     *
-     * @var array
-     * @see Crypt_GPG_Engine::_closePipe()
-     */
-    private $_openPipes = array();
-
-    /**
-     * A handle for the GPG process
-     *
-     * @var resource
-     */
-    private $_process = null;
-
-    /**
-     * A handle for the gpg-agent process
-     *
-     * @var resource
-     */
-    private $_agentProcess = null;
-
-    /**
-     * GPG agent daemon socket and PID for running gpg-agent
-     *
-     * @var string
-     */
-    private $_agentInfo = null;
-
-    /**
-     * Whether or not the operating system is Darwin (OS X)
-     *
-     * @var boolean
-     */
-    private $_isDarwin = false;
-
-    /**
-     * Commands to be sent to GPG's command input stream
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::sendCommand()
-     */
-    private $_commandBuffer = '';
-
-    /**
-     * Array of status line handlers
-     *
-     * @var array
-     * @see Crypt_GPG_Engine::addStatusHandler()
-     */
-    private $_statusHandlers = array();
-
-    /**
-     * Array of error line handlers
-     *
-     * @var array
-     * @see Crypt_GPG_Engine::addErrorHandler()
-     */
-    private $_errorHandlers = array();
-
-    /**
-     * The error code of the current operation
-     *
-     * @var integer
-     * @see Crypt_GPG_Engine::getErrorCode()
-     */
-    private $_errorCode = Crypt_GPG::ERROR_NONE;
-
-    /**
-     * File related to the error code of the current operation
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::getErrorFilename()
-     */
-    private $_errorFilename = '';
-
-    /**
-     * Key id related to the error code of the current operation
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::getErrorKeyId()
-     */
-    private $_errorkeyId = '';
-
-    /**
-     * The number of currently needed passphrases
-     *
-     * If this is not zero when the GPG command is completed, the error code is
-     * set to {@link Crypt_GPG::ERROR_MISSING_PASSPHRASE}.
-     *
-     * @var integer
-     */
-    private $_needPassphrase = 0;
-
-    /**
-     * The input source
-     *
-     * This is data to send to GPG. Either a string or a stream resource.
-     *
-     * @var string|resource
-     * @see Crypt_GPG_Engine::setInput()
-     */
-    private $_input = null;
-
-    /**
-     * The extra message input source
-     *
-     * Either a string or a stream resource.
-     *
-     * @var string|resource
-     * @see Crypt_GPG_Engine::setMessage()
-     */
-    private $_message = null;
-
-    /**
-     * The output location
-     *
-     * This is where the output from GPG is sent. Either a string or a stream
-     * resource.
-     *
-     * @var string|resource
-     * @see Crypt_GPG_Engine::setOutput()
-     */
-    private $_output = '';
-
-    /**
-     * The GPG operation to execute
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::setOperation()
-     */
-    private $_operation;
-
-    /**
-     * Arguments for the current operation
-     *
-     * @var array
-     * @see Crypt_GPG_Engine::setOperation()
-     */
-    private $_arguments = array();
-
-    /**
-     * The version number of the GPG binary
-     *
-     * @var string
-     * @see Crypt_GPG_Engine::getVersion()
-     */
-    private $_version = '';
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new GPG engine
-     *
-     * Available options are:
-     *
-     * - <kbd>string  homedir</kbd>        - the directory where the GPG
-     *                                       keyring files are stored. If not
-     *                                       specified, Crypt_GPG uses the
-     *                                       default of <kbd>~/.gnupg</kbd>.
-     * - <kbd>string  publicKeyring</kbd>  - the file path of the public
-     *                                       keyring. Use this if the public
-     *                                       keyring is not in the homedir, or
-     *                                       if the keyring is in a directory
-     *                                       not writable by the process
-     *                                       invoking GPG (like Apache). Then
-     *                                       you can specify the path to the
-     *                                       keyring with this option
-     *                                       (/foo/bar/pubring.gpg), and specify
-     *                                       a writable directory (like /tmp)
-     *                                       using the <i>homedir</i> option.
-     * - <kbd>string  privateKeyring</kbd> - the file path of the private
-     *                                       keyring. Use this if the private
-     *                                       keyring is not in the homedir, or
-     *                                       if the keyring is in a directory
-     *                                       not writable by the process
-     *                                       invoking GPG (like Apache). Then
-     *                                       you can specify the path to the
-     *                                       keyring with this option
-     *                                       (/foo/bar/secring.gpg), and specify
-     *                                       a writable directory (like /tmp)
-     *                                       using the <i>homedir</i> option.
-     * - <kbd>string  trustDb</kbd>        - the file path of the web-of-trust
-     *                                       database. Use this if the trust
-     *                                       database is not in the homedir, or
-     *                                       if the database is in a directory
-     *                                       not writable by the process
-     *                                       invoking GPG (like Apache). Then
-     *                                       you can specify the path to the
-     *                                       trust database with this option
-     *                                       (/foo/bar/trustdb.gpg), and specify
-     *                                       a writable directory (like /tmp)
-     *                                       using the <i>homedir</i> option.
-     * - <kbd>string  binary</kbd>         - the location of the GPG binary. If
-     *                                       not specified, the driver attempts
-     *                                       to auto-detect the GPG binary
-     *                                       location using a list of known
-     *                                       default locations for the current
-     *                                       operating system. The option
-     *                                       <kbd>gpgBinary</kbd> is a
-     *                                       deprecated alias for this option.
-     * - <kbd>string  agent</kbd>          - the location of the GnuPG agent
-     *                                       binary. The gpg-agent is only
-     *                                       used for GnuPG 2.x. If not
-     *                                       specified, the engine attempts
-     *                                       to auto-detect the gpg-agent
-     *                                       binary location using a list of
-     *                                       know default locations for the
-     *                                       current operating system.
-     * - <kbd>boolean debug</kbd>          - whether or not to use debug mode.
-     *                                       When debug mode is on, all
-     *                                       communication to and from the GPG
-     *                                       subprocess is logged. This can be
-     *                                       useful to diagnose errors when
-     *                                       using Crypt_GPG.
-     *
-     * @param array $options optional. An array of options used to create the
-     *                       GPG object. All options are optional and are
-     *                       represented as key-value pairs.
-     *
-     * @throws Crypt_GPG_FileException if the <kbd>homedir</kbd> does not exist
-     *         and cannot be created. This can happen if <kbd>homedir</kbd> is
-     *         not specified, Crypt_GPG is run as the web user, and the web
-     *         user has no home directory. This exception is also thrown if any
-     *         of the options <kbd>publicKeyring</kbd>,
-     *         <kbd>privateKeyring</kbd> or <kbd>trustDb</kbd> options are
-     *         specified but the files do not exist or are are not readable.
-     *         This can happen if the user running the Crypt_GPG process (for
-     *         example, the Apache user) does not have permission to read the
-     *         files.
-     *
-     * @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
-     *         if no <kbd>binary</kbd> is provided and no suitable binary could
-     *         be found.
-     *
-     * @throws PEAR_Exception if the provided <kbd>agent</kbd> is invalid, or
-     *         if no <kbd>agent</kbd> is provided and no suitable gpg-agent
-     *         cound be found.
-     */
-    public function __construct(array $options = array())
-    {
-        $this->_isDarwin = (strncmp(strtoupper(PHP_OS), 'DARWIN', 6) === 0);
-
-        // get homedir
-        if (array_key_exists('homedir', $options)) {
-            $this->_homedir = (string)$options['homedir'];
-        } else {
-            if (extension_loaded('posix')) {
-                // note: this requires the package OS dep exclude 'windows'
-                $info = posix_getpwuid(posix_getuid());
-                $this->_homedir = $info['dir'].'/.gnupg';
-            } else {
-                if (isset($_SERVER['HOME'])) {
-                    $this->_homedir = $_SERVER['HOME'];
-                } else {
-                    $this->_homedir = getenv('HOME');
-                }
-            }
-
-            if ($this->_homedir === false) {
-                throw new Crypt_GPG_FileException(
-                    'Could not locate homedir. Please specify the homedir ' .
-                    'to use with the \'homedir\' option when instantiating ' .
-                    'the Crypt_GPG object.'
-                );
-            }
-        }
-
-        // attempt to create homedir if it does not exist
-        if (!is_dir($this->_homedir)) {
-            if (@mkdir($this->_homedir, 0777, true)) {
-                // Set permissions on homedir. Parent directories are created
-                // with 0777, homedir is set to 0700.
-                chmod($this->_homedir, 0700);
-            } else {
-                throw new Crypt_GPG_FileException(
-                    'The \'homedir\' "' . $this->_homedir . '" is not ' .
-                    'readable or does not exist and cannot be created. This ' .
-                    'can happen if \'homedir\' is not specified in the ' .
-                    'Crypt_GPG options, Crypt_GPG is run as the web user, ' .
-                    'and the web user has no home directory.',
-                    0,
-                    $this->_homedir
-                );
-            }
-        }
-
-        // check homedir permissions (See Bug #19833)
-        if (!is_executable($this->_homedir)) {
-            throw new Crypt_GPG_FileException(
-                'The \'homedir\' "' . $this->_homedir . '" is not enterable ' .
-                'by the current user. Please check the permissions on your ' .
-                'homedir and make sure the current user can both enter and ' .
-                'write to the directory.',
-                0,
-                $this->_homedir
-            );
-        }
-        if (!is_writeable($this->_homedir)) {
-            throw new Crypt_GPG_FileException(
-                'The \'homedir\' "' . $this->_homedir . '" is not writable ' .
-                'by the current user. Please check the permissions on your ' .
-                'homedir and make sure the current user can both enter and ' .
-                'write to the directory.',
-                0,
-                $this->_homedir
-            );
-        }
-
-        // get binary
-        if (array_key_exists('binary', $options)) {
-            $this->_binary = (string)$options['binary'];
-        } elseif (array_key_exists('gpgBinary', $options)) {
-            // deprecated alias
-            $this->_binary = (string)$options['gpgBinary'];
-        } else {
-            $this->_binary = $this->_getBinary();
-        }
-
-        if ($this->_binary == '' || !is_executable($this->_binary)) {
-            throw new PEAR_Exception(
-                'GPG binary not found. If you are sure the GPG binary is ' .
-                'installed, please specify the location of the GPG binary ' .
-                'using the \'binary\' driver option.'
-            );
-        }
-
-        // get agent 
-        if (array_key_exists('agent', $options)) {
-            $this->_agent = (string)$options['agent'];
-        } else {
-            $this->_agent = $this->_getAgent();
-        }
-
-        if ($this->_agent == '' || !is_executable($this->_agent)) {
-            throw new PEAR_Exception(
-                'gpg-agent binary not found. If you are sure the gpg-agent ' .
-                'is installed, please specify the location of the gpg-agent ' .
-                'binary using the \'agent\' driver option.'
-            );
-        }
-
-        /*
-         * Note:
-         *
-         * Normally, GnuPG expects keyrings to be in the homedir and expects
-         * to be able to write temporary files in the homedir. Sometimes,
-         * keyrings are not in the homedir, or location of the keyrings does
-         * not allow writing temporary files. In this case, the <i>homedir</i>
-         * option by itself is not enough to specify the keyrings because GnuPG
-         * can not write required temporary files. Additional options are
-         * provided so you can specify the location of the keyrings separately
-         * from the homedir.
-         */
-
-        // get public keyring
-        if (array_key_exists('publicKeyring', $options)) {
-            $this->_publicKeyring = (string)$options['publicKeyring'];
-            if (!is_readable($this->_publicKeyring)) {
-                 throw new Crypt_GPG_FileException('The \'publicKeyring\' "' .
-                    $this->_publicKeyring . '" does not exist or is ' .
-                    'not readable. Check the location and ensure the file ' .
-                    'permissions are correct.', 0, $this->_publicKeyring);
-            }
-        }
-
-        // get private keyring
-        if (array_key_exists('privateKeyring', $options)) {
-            $this->_privateKeyring = (string)$options['privateKeyring'];
-            if (!is_readable($this->_privateKeyring)) {
-                 throw new Crypt_GPG_FileException('The \'privateKeyring\' "' .
-                    $this->_privateKeyring . '" does not exist or is ' .
-                    'not readable. Check the location and ensure the file ' .
-                    'permissions are correct.', 0, $this->_privateKeyring);
-            }
-        }
-
-        // get trust database
-        if (array_key_exists('trustDb', $options)) {
-            $this->_trustDb = (string)$options['trustDb'];
-            if (!is_readable($this->_trustDb)) {
-                 throw new Crypt_GPG_FileException('The \'trustDb\' "' .
-                    $this->_trustDb . '" does not exist or is not readable. ' .
-                    'Check the location and ensure the file permissions are ' .
-                    'correct.', 0, $this->_trustDb);
-            }
-        }
-
-        if (array_key_exists('debug', $options)) {
-            $this->_debug = (boolean)$options['debug'];
-        }
-    }
-
-    // }}}
-    // {{{ __destruct()
-
-    /**
-     * Closes open GPG subprocesses when this object is destroyed
-     *
-     * Subprocesses should never be left open by this class unless there is
-     * an unknown error and unexpected script termination occurs.
-     */
-    public function __destruct()
-    {
-        $this->_closeSubprocess();
-    }
-
-    // }}}
-    // {{{ addErrorHandler()
-
-    /**
-     * Adds an error handler method
-     *
-     * The method is run every time a new error line is received from the GPG
-     * subprocess. The handler method must accept the error line to be handled
-     * as its first parameter.
-     *
-     * @param callback $callback the callback method to use.
-     * @param array    $args     optional. Additional arguments to pass as
-     *                           parameters to the callback method.
-     *
-     * @return void
-     */
-    public function addErrorHandler($callback, array $args = array())
-    {
-        $this->_errorHandlers[] = array(
-            'callback' => $callback,
-            'args'     => $args
-        );
-    }
-
-    // }}}
-    // {{{ addStatusHandler()
-
-    /**
-     * Adds a status handler method
-     *
-     * The method is run every time a new status line is received from the
-     * GPG subprocess. The handler method must accept the status line to be
-     * handled as its first parameter.
-     *
-     * @param callback $callback the callback method to use.
-     * @param array    $args     optional. Additional arguments to pass as
-     *                           parameters to the callback method.
-     *
-     * @return void
-     */
-    public function addStatusHandler($callback, array $args = array())
-    {
-        $this->_statusHandlers[] = array(
-            'callback' => $callback,
-            'args'     => $args
-        );
-    }
-
-    // }}}
-    // {{{ sendCommand()
-
-    /**
-     * Sends a command to the GPG subprocess over the command file-descriptor
-     * pipe
-     *
-     * @param string $command the command to send.
-     *
-     * @return void
-     *
-     * @sensitive $command
-     */
-    public function sendCommand($command)
-    {
-        if (array_key_exists(self::FD_COMMAND, $this->_openPipes)) {
-            $this->_commandBuffer .= $command . PHP_EOL;
-        }
-    }
-
-    // }}}
-    // {{{ reset()
-
-    /**
-     * Resets the GPG engine, preparing it for a new operation
-     *
-     * @return void
-     *
-     * @see Crypt_GPG_Engine::run()
-     * @see Crypt_GPG_Engine::setOperation()
-     */
-    public function reset()
-    {
-        $this->_operation      = '';
-        $this->_arguments      = array();
-        $this->_input          = null;
-        $this->_message        = null;
-        $this->_output         = '';
-        $this->_errorCode      = Crypt_GPG::ERROR_NONE;
-        $this->_needPassphrase = 0;
-        $this->_commandBuffer  = '';
-
-        $this->_statusHandlers = array();
-        $this->_errorHandlers  = array();
-
-        $this->addStatusHandler(array($this, '_handleErrorStatus'));
-        $this->addErrorHandler(array($this, '_handleErrorError'));
-
-        if ($this->_debug) {
-            $this->addStatusHandler(array($this, '_handleDebugStatus'));
-            $this->addErrorHandler(array($this, '_handleDebugError'));
-        }
-    }
-
-    // }}}
-    // {{{ run()
-
-    /**
-     * Runs the current GPG operation
-     *
-     * This creates and manages the GPG subprocess.
-     *
-     * The operation must be set with {@link Crypt_GPG_Engine::setOperation()}
-     * before this method is called.
-     *
-     * @return void
-     *
-     * @throws Crypt_GPG_InvalidOperationException if no operation is specified.
-     *
-     * @see Crypt_GPG_Engine::reset()
-     * @see Crypt_GPG_Engine::setOperation()
-     */
-    public function run()
-    {
-        if ($this->_operation === '') {
-            throw new Crypt_GPG_InvalidOperationException('No GPG operation ' .
-                'specified. Use Crypt_GPG_Engine::setOperation() before ' .
-                'calling Crypt_GPG_Engine::run().');
-        }
-
-        $this->_openSubprocess();
-        $this->_process();
-        $this->_closeSubprocess();
-    }
-
-    // }}}
-    // {{{ getErrorCode()
-
-    /**
-     * Gets the error code of the last executed operation
-     *
-     * This value is only meaningful after {@link Crypt_GPG_Engine::run()} has
-     * been executed.
-     *
-     * @return integer the error code of the last executed operation.
-     */
-    public function getErrorCode()
-    {
-        return $this->_errorCode;
-    }
-
-    // }}}
-    // {{{ getErrorFilename()
-
-    /**
-     * Gets the file related to the error code of the last executed operation
-     *
-     * This value is only meaningful after {@link Crypt_GPG_Engine::run()} has
-     * been executed. If there is no file related to the error, an empty string
-     * is returned.
-     *
-     * @return string the file related to the error code of the last executed
-     *                operation.
-     */
-    public function getErrorFilename()
-    {
-        return $this->_errorFilename;
-    }
-
-    // }}}
-    // {{{ getErrorKeyId()
-
-    /**
-     * Gets the key id related to the error code of the last executed operation
-     *
-     * This value is only meaningful after {@link Crypt_GPG_Engine::run()} has
-     * been executed. If there is no key id related to the error, an empty
-     * string is returned.
-     *
-     * @return string the key id related to the error code of the last executed
-     *                operation.
-     */
-    public function getErrorKeyId()
-    {
-        return $this->_errorKeyId;
-    }
-
-    // }}}
-    // {{{ setInput()
-
-    /**
-     * Sets the input source for the current GPG operation
-     *
-     * @param string|resource &$input either a reference to the string
-     *                                containing the input data or an open
-     *                                stream resource containing the input
-     *                                data.
-     *
-     * @return void
-     */
-    public function setInput(&$input)
-    {
-        $this->_input =& $input;
-    }
-
-    // }}}
-    // {{{ setMessage()
-
-    /**
-     * Sets the message source for the current GPG operation
-     *
-     * Detached signature data should be specified here.
-     *
-     * @param string|resource &$message either a reference to the string
-     *                                  containing the message data or an open
-     *                                  stream resource containing the message
-     *                                  data.
-     *
-     * @return void
-     */
-    public function setMessage(&$message)
-    {
-        $this->_message =& $message;
-    }
-
-    // }}}
-    // {{{ setOutput()
-
-    /**
-     * Sets the output destination for the current GPG operation
-     *
-     * @param string|resource &$output either a reference to the string in
-     *                                 which to store GPG output or an open
-     *                                 stream resource to which the output data
-     *                                 should be written.
-     *
-     * @return void
-     */
-    public function setOutput(&$output)
-    {
-        $this->_output =& $output;
-    }
-
-    // }}}
-    // {{{ setOperation()
-
-    /**
-     * Sets the operation to perform
-     *
-     * @param string $operation the operation to perform. This should be one
-     *                          of GPG's operations. For example,
-     *                          <kbd>--encrypt</kbd>, <kbd>--decrypt</kbd>,
-     *                          <kbd>--sign</kbd>, etc.
-     * @param array  $arguments optional. Additional arguments for the GPG
-     *                          subprocess. See the GPG manual for specific
-     *                          values.
-     *
-     * @return void
-     *
-     * @see Crypt_GPG_Engine::reset()
-     * @see Crypt_GPG_Engine::run()
-     */
-    public function setOperation($operation, array $arguments = array())
-    {
-        $this->_operation = $operation;
-        $this->_arguments = $arguments;
-    }
-
-    // }}}
-    // {{{ getVersion()
-
-    /**
-     * Gets the version of the GnuPG binary
-     *
-     * @return string a version number string containing the version of GnuPG
-     *                being used. This value is suitable to use with PHP's
-     *                version_compare() function.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @throws Crypt_GPG_UnsupportedException if the provided binary is not
-     *         GnuPG or if the GnuPG version is less than 1.0.2.
-     */
-    public function getVersion()
-    {
-        if ($this->_version == '') {
-
-            $options = array(
-                'homedir' => $this->_homedir,
-                'binary'  => $this->_binary,
-                'debug'   => $this->_debug
-            );
-
-            $engine = new self($options);
-            $info   = '';
-
-            // Set a garbage version so we do not end up looking up the version
-            // recursively.
-            $engine->_version = '1.0.0';
-
-            $engine->reset();
-            $engine->setOutput($info);
-            $engine->setOperation('--version');
-            $engine->run();
-
-            $code = $this->getErrorCode();
-
-            if ($code !== Crypt_GPG::ERROR_NONE) {
-                throw new Crypt_GPG_Exception(
-                    'Unknown error getting GnuPG version information. Please ' .
-                    'use the \'debug\' option when creating the Crypt_GPG ' .
-                    'object, and file a bug report at ' . Crypt_GPG::BUG_URI,
-                    $code);
-            }
-
-            $matches    = array();
-            $expression = '#gpg \(GnuPG[A-Za-z0-9/]*?\) (\S+)#';
-
-            if (preg_match($expression, $info, $matches) === 1) {
-                $this->_version = $matches[1];
-            } else {
-                throw new Crypt_GPG_Exception(
-                    'No GnuPG version information provided by the binary "' .
-                    $this->_binary . '". Are you sure it is GnuPG?');
-            }
-
-            if (version_compare($this->_version, self::MIN_VERSION, 'lt')) {
-                throw new Crypt_GPG_Exception(
-                    'The version of GnuPG being used (' . $this->_version .
-                    ') is not supported by Crypt_GPG. The minimum version ' .
-                    'required by Crypt_GPG is ' . self::MIN_VERSION);
-            }
-        }
-
-
-        return $this->_version;
-    }
-
-    // }}}
-    // {{{ _handleErrorStatus()
-
-    /**
-     * Handles error values in the status output from GPG
-     *
-     * This method is responsible for setting the
-     * {@link Crypt_GPG_Engine::$_errorCode}. See <b>doc/DETAILS</b> in the
-     * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
-     * information on GPG's status output.
-     *
-     * @param string $line the status line to handle.
-     *
-     * @return void
-     */
-    private function _handleErrorStatus($line)
-    {
-        $tokens = explode(' ', $line);
-        switch ($tokens[0]) {
-        case 'BAD_PASSPHRASE':
-            $this->_errorCode = Crypt_GPG::ERROR_BAD_PASSPHRASE;
-            break;
-
-        case 'MISSING_PASSPHRASE':
-            $this->_errorCode = Crypt_GPG::ERROR_MISSING_PASSPHRASE;
-            break;
-
-        case 'NODATA':
-            $this->_errorCode = Crypt_GPG::ERROR_NO_DATA;
-            break;
-
-        case 'DELETE_PROBLEM':
-            if ($tokens[1] == '1') {
-                $this->_errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
-                break;
-            } elseif ($tokens[1] == '2') {
-                $this->_errorCode = Crypt_GPG::ERROR_DELETE_PRIVATE_KEY;
-                break;
-            }
-            break;
-
-        case 'IMPORT_RES':
-            if ($tokens[12] > 0) {
-                $this->_errorCode = Crypt_GPG::ERROR_DUPLICATE_KEY;
-            }
-            break;
-
-        case 'NO_PUBKEY':
-        case 'NO_SECKEY':
-            $this->_errorKeyId = $tokens[1];
-            $this->_errorCode  = Crypt_GPG::ERROR_KEY_NOT_FOUND;
-            break;
-
-        case 'NEED_PASSPHRASE':
-            $this->_needPassphrase++;
-            break;
-
-        case 'GOOD_PASSPHRASE':
-            $this->_needPassphrase--;
-            break;
-
-        case 'EXPSIG':
-        case 'EXPKEYSIG':
-        case 'REVKEYSIG':
-        case 'BADSIG':
-            $this->_errorCode = Crypt_GPG::ERROR_BAD_SIGNATURE;
-            break;
-
-        }
-    }
-
-    // }}}
-    // {{{ _handleErrorError()
-
-    /**
-     * Handles error values in the error output from GPG
-     *
-     * This method is responsible for setting the
-     * {@link Crypt_GPG_Engine::$_errorCode}.
-     *
-     * @param string $line the error line to handle.
-     *
-     * @return void
-     */
-    private function _handleErrorError($line)
-    {
-        if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
-            $pattern = '/no valid OpenPGP data found/';
-            if (preg_match($pattern, $line) === 1) {
-                $this->_errorCode = Crypt_GPG::ERROR_NO_DATA;
-            }
-        }
-
-        if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
-            $pattern = '/No secret key|secret key not available/';
-            if (preg_match($pattern, $line) === 1) {
-                $this->_errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
-            }
-        }
-
-        if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
-            $pattern = '/No public key|public key not found/';
-            if (preg_match($pattern, $line) === 1) {
-                $this->_errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
-            }
-        }
-
-        if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
-            $matches = array();
-            $pattern = '/can\'t (?:access|open) `(.*?)\'/';
-            if (preg_match($pattern, $line, $matches) === 1) {
-                $this->_errorFilename = $matches[1];
-                $this->_errorCode = Crypt_GPG::ERROR_FILE_PERMISSIONS;
-            }
-        }
-    }
-
-    // }}}
-    // {{{ _handleDebugStatus()
-
-    /**
-     * Displays debug output for status lines
-     *
-     * @param string $line the status line to handle.
-     *
-     * @return void
-     */
-    private function _handleDebugStatus($line)
-    {
-        $this->_debug('STATUS: ' . $line);
-    }
-
-    // }}}
-    // {{{ _handleDebugError()
-
-    /**
-     * Displays debug output for error lines
-     *
-     * @param string $line the error line to handle.
-     *
-     * @return void
-     */
-    private function _handleDebugError($line)
-    {
-        $this->_debug('ERROR: ' . $line);
-    }
-
-    // }}}
-    // {{{ _process()
-
-    /**
-     * Performs internal streaming operations for the subprocess using either
-     * strings or streams as input / output points
-     *
-     * This is the main I/O loop for streaming to and from the GPG subprocess.
-     *
-     * The implementation of this method is verbose mainly for performance
-     * reasons. Adding streams to a lookup array and looping the array inside
-     * the main I/O loop would be siginficantly slower for large streams.
-     *
-     * @return void
-     *
-     * @throws Crypt_GPG_Exception if there is an error selecting streams for
-     *         reading or writing. If this occurs, please file a bug report at
-     *         http://pear.php.net/bugs/report.php?package=Crypt_GPG.
-     */
-    private function _process()
-    {
-        $this->_debug('BEGIN PROCESSING');
-
-        $this->_commandBuffer = '';    // buffers input to GPG
-        $messageBuffer        = '';    // buffers input to GPG
-        $inputBuffer          = '';    // buffers input to GPG
-        $outputBuffer         = '';    // buffers output from GPG
-        $statusBuffer         = '';    // buffers output from GPG
-        $errorBuffer          = '';    // buffers output from GPG
-        $inputComplete        = false; // input stream is completely buffered
-        $messageComplete      = false; // message stream is completely buffered
-
-        if (is_string($this->_input)) {
-            $inputBuffer   = $this->_input;
-            $inputComplete = true;
-        }
-
-        if (is_string($this->_message)) {
-            $messageBuffer   = $this->_message;
-            $messageComplete = true;
-        }
-
-        if (is_string($this->_output)) {
-            $outputBuffer =& $this->_output;
-        }
-
-        // convenience variables
-        $fdInput   = $this->_pipes[self::FD_INPUT];
-        $fdOutput  = $this->_pipes[self::FD_OUTPUT];
-        $fdError   = $this->_pipes[self::FD_ERROR];
-        $fdStatus  = $this->_pipes[self::FD_STATUS];
-        $fdCommand = $this->_pipes[self::FD_COMMAND];
-        $fdMessage = $this->_pipes[self::FD_MESSAGE];
-
-        // select loop delay in milliseconds
-        $delay = 0;
-
-        while (true) {
-
-            $inputStreams     = array();
-            $outputStreams    = array();
-            $exceptionStreams = array();
-
-            // set up input streams
-            if (is_resource($this->_input) && !$inputComplete) {
-                if (feof($this->_input)) {
-                    $inputComplete = true;
-                } else {
-                    $inputStreams[] = $this->_input;
-                }
-            }
-
-            // close GPG input pipe if there is no more data
-            if ($inputBuffer == '' && $inputComplete) {
-                $this->_debug('=> closing GPG input pipe');
-                $this->_closePipe(self::FD_INPUT);
-            }
-
-            if (is_resource($this->_message) && !$messageComplete) {
-                if (feof($this->_message)) {
-                    $messageComplete = true;
-                } else {
-                    $inputStreams[] = $this->_message;
-                }
-            }
-
-            // close GPG message pipe if there is no more data
-            if ($messageBuffer == '' && $messageComplete) {
-                $this->_debug('=> closing GPG message pipe');
-                $this->_closePipe(self::FD_MESSAGE);
-            }
-
-            if (!feof($fdOutput)) {
-                $inputStreams[] = $fdOutput;
-            }
-
-            if (!feof($fdStatus)) {
-                $inputStreams[] = $fdStatus;
-            }
-
-            if (!feof($fdError)) {
-                $inputStreams[] = $fdError;
-            }
-
-            // set up output streams
-            if ($outputBuffer != '' && is_resource($this->_output)) {
-                $outputStreams[] = $this->_output;
-            }
-
-            if ($this->_commandBuffer != '' && is_resource($fdCommand)) {
-                $outputStreams[] = $fdCommand;
-            }
-
-            if ($messageBuffer != '' && is_resource($fdMessage)) {
-                $outputStreams[] = $fdMessage;
-            }
-
-            if ($inputBuffer != '' && is_resource($fdInput)) {
-                $outputStreams[] = $fdInput;
-            }
-
-            // no streams left to read or write, we're all done
-            if (count($inputStreams) === 0 && count($outputStreams) === 0) {
-                break;
-            }
-
-            $this->_debug('selecting streams');
-
-            $ready = stream_select(
-                $inputStreams,
-                $outputStreams,
-                $exceptionStreams,
-                null
-            );
-
-            $this->_debug('=> got ' . $ready);
-
-            if ($ready === false) {
-                throw new Crypt_GPG_Exception(
-                    'Error selecting stream for communication with GPG ' .
-                    'subprocess. Please file a bug report at: ' .
-                    'http://pear.php.net/bugs/report.php?package=Crypt_GPG');
-            }
-
-            if ($ready === 0) {
-                throw new Crypt_GPG_Exception(
-                    'stream_select() returned 0. This can not happen! Please ' .
-                    'file a bug report at: ' .
-                    'http://pear.php.net/bugs/report.php?package=Crypt_GPG');
-            }
-
-            // write input (to GPG)
-            if (in_array($fdInput, $outputStreams, true)) {
-                $this->_debug('GPG is ready for input');
-
-                $chunk = Crypt_GPG_ByteUtils::substr(
-                    $inputBuffer,
-                    0,
-                    self::CHUNK_SIZE
-                );
-
-                $length = Crypt_GPG_ByteUtils::strlen($chunk);
-
-                $this->_debug(
-                    '=> about to write ' . $length . ' bytes to GPG input'
-                );
-
-                $length = fwrite($fdInput, $chunk, $length);
-                if ($length === 0) {
-                    // If we wrote 0 bytes it was either EAGAIN or EPIPE. Since
-                    // the pipe was seleted for writing, we assume it was EPIPE.
-                    // There's no way to get the actual erorr code in PHP. See
-                    // PHP Bug #39598. https://bugs.php.net/bug.php?id=39598
-                    $this->_debug('=> broken pipe on GPG input');
-                    $this->_debug('=> closing pipe GPG input');
-                    $this->_closePipe(self::FD_INPUT);
-                } else {
-                    $this->_debug('=> wrote ' . $length . ' bytes');
-                    $inputBuffer = Crypt_GPG_ByteUtils::substr(
-                        $inputBuffer,
-                        $length
-                    );
-                }
-            }
-
-            // read input (from PHP stream)
-            if (in_array($this->_input, $inputStreams, true)) {
-                $this->_debug('input stream is ready for reading');
-                $this->_debug(
-                    '=> about to read ' . self::CHUNK_SIZE .
-                    ' bytes from input stream'
-                );
-
-                $chunk        = fread($this->_input, self::CHUNK_SIZE);
-                $length       = Crypt_GPG_ByteUtils::strlen($chunk);
-                $inputBuffer .= $chunk;
-
-                $this->_debug('=> read ' . $length . ' bytes');
-            }
-
-            // write message (to GPG)
-            if (in_array($fdMessage, $outputStreams, true)) {
-                $this->_debug('GPG is ready for message data');
-
-                $chunk = Crypt_GPG_ByteUtils::substr(
-                    $messageBuffer,
-                    0,
-                    self::CHUNK_SIZE
-                );
-
-                $length = Crypt_GPG_ByteUtils::strlen($chunk);
-
-                $this->_debug(
-                    '=> about to write ' . $length . ' bytes to GPG message'
-                );
-
-                $length = fwrite($fdMessage, $chunk, $length);
-                if ($length === 0) {
-                    // If we wrote 0 bytes it was either EAGAIN or EPIPE. Since
-                    // the pipe was seleted for writing, we assume it was EPIPE.
-                    // There's no way to get the actual erorr code in PHP. See
-                    // PHP Bug #39598. https://bugs.php.net/bug.php?id=39598
-                    $this->_debug('=> broken pipe on GPG message');
-                    $this->_debug('=> closing pipe GPG message');
-                    $this->_closePipe(self::FD_MESSAGE);
-                } else {
-                    $this->_debug('=> wrote ' . $length . ' bytes');
-                    $messageBuffer = Crypt_GPG_ByteUtils::substr(
-                        $messageBuffer,
-                        $length
-                    );
-                }
-            }
-
-            // read message (from PHP stream)
-            if (in_array($this->_message, $inputStreams, true)) {
-                $this->_debug('message stream is ready for reading');
-                $this->_debug(
-                    '=> about to read ' . self::CHUNK_SIZE .
-                    ' bytes from message stream'
-                );
-
-                $chunk          = fread($this->_message, self::CHUNK_SIZE);
-                $length         = Crypt_GPG_ByteUtils::strlen($chunk);
-                $messageBuffer .= $chunk;
-
-                $this->_debug('=> read ' . $length . ' bytes');
-            }
-
-            // read output (from GPG)
-            if (in_array($fdOutput, $inputStreams, true)) {
-                $this->_debug('GPG output stream ready for reading');
-                $this->_debug(
-                    '=> about to read ' . self::CHUNK_SIZE .
-                    ' bytes from GPG output'
-                );
-
-                $chunk         = fread($fdOutput, self::CHUNK_SIZE);
-                $length        = Crypt_GPG_ByteUtils::strlen($chunk);
-                $outputBuffer .= $chunk;
-
-                $this->_debug('=> read ' . $length . ' bytes');
-            }
-
-            // write output (to PHP stream)
-            if (in_array($this->_output, $outputStreams, true)) {
-                $this->_debug('output stream is ready for data');
-
-                $chunk = Crypt_GPG_ByteUtils::substr(
-                    $outputBuffer,
-                    0,
-                    self::CHUNK_SIZE
-                );
-
-                $length = Crypt_GPG_ByteUtils::strlen($chunk);
-
-                $this->_debug(
-                    '=> about to write ' . $length . ' bytes to output stream'
-                );
-
-                $length = fwrite($this->_output, $chunk, $length);
-
-                $this->_debug('=> wrote ' . $length . ' bytes');
-
-                $outputBuffer = Crypt_GPG_ByteUtils::substr(
-                    $outputBuffer,
-                    $length
-                );
-            }
-
-            // read error (from GPG)
-            if (in_array($fdError, $inputStreams, true)) {
-                $this->_debug('GPG error stream ready for reading');
-                $this->_debug(
-                    '=> about to read ' . self::CHUNK_SIZE .
-                    ' bytes from GPG error'
-                );
-
-                $chunk        = fread($fdError, self::CHUNK_SIZE);
-                $length       = Crypt_GPG_ByteUtils::strlen($chunk);
-                $errorBuffer .= $chunk;
-
-                $this->_debug('=> read ' . $length . ' bytes');
-
-                // pass lines to error handlers
-                while (($pos = strpos($errorBuffer, PHP_EOL)) !== false) {
-                    $line = Crypt_GPG_ByteUtils::substr($errorBuffer, 0, $pos);
-                    foreach ($this->_errorHandlers as $handler) {
-                        array_unshift($handler['args'], $line);
-                        call_user_func_array(
-                            $handler['callback'],
-                            $handler['args']
-                        );
-
-                        array_shift($handler['args']);
-                    }
-                    $errorBuffer = Crypt_GPG_ByteUtils::substr(
-                        $errorBuffer,
-                        $pos + Crypt_GPG_ByteUtils::strlen(PHP_EOL)
-                    );
-                }
-            }
-
-            // read status (from GPG)
-            if (in_array($fdStatus, $inputStreams, true)) {
-                $this->_debug('GPG status stream ready for reading');
-                $this->_debug(
-                    '=> about to read ' . self::CHUNK_SIZE .
-                    ' bytes from GPG status'
-                );
-
-                $chunk         = fread($fdStatus, self::CHUNK_SIZE);
-                $length        = Crypt_GPG_ByteUtils::strlen($chunk);
-                $statusBuffer .= $chunk;
-
-                $this->_debug('=> read ' . $length . ' bytes');
-
-                // pass lines to status handlers
-                while (($pos = strpos($statusBuffer, PHP_EOL)) !== false) {
-                    $line = Crypt_GPG_ByteUtils::substr($statusBuffer, 0, $pos);
-                    // only pass lines beginning with magic prefix
-                    if (Crypt_GPG_ByteUtils::substr($line, 0, 9) == '[GNUPG:] ') {
-                        $line = Crypt_GPG_ByteUtils::substr($line, 9);
-                        foreach ($this->_statusHandlers as $handler) {
-                            array_unshift($handler['args'], $line);
-                            call_user_func_array(
-                                $handler['callback'],
-                                $handler['args']
-                            );
-
-                            array_shift($handler['args']);
-                        }
-                    }
-                    $statusBuffer = Crypt_GPG_ByteUtils::substr(
-                        $statusBuffer,
-                        $pos + Crypt_GPG_ByteUtils::strlen(PHP_EOL)
-                    );
-                }
-            }
-
-            // write command (to GPG)
-            if (in_array($fdCommand, $outputStreams, true)) {
-                $this->_debug('GPG is ready for command data');
-
-                // send commands
-                $chunk = Crypt_GPG_ByteUtils::substr(
-                    $this->_commandBuffer,
-                    0,
-                    self::CHUNK_SIZE
-                );
-
-                $length = Crypt_GPG_ByteUtils::strlen($chunk);
-
-                $this->_debug(
-                    '=> about to write ' . $length . ' bytes to GPG command'
-                );
-
-                $length = fwrite($fdCommand, $chunk, $length);
-                if ($length === 0) {
-                    // If we wrote 0 bytes it was either EAGAIN or EPIPE. Since
-                    // the pipe was seleted for writing, we assume it was EPIPE.
-                    // There's no way to get the actual erorr code in PHP. See
-                    // PHP Bug #39598. https://bugs.php.net/bug.php?id=39598
-                    $this->_debug('=> broken pipe on GPG command');
-                    $this->_debug('=> closing pipe GPG command');
-                    $this->_closePipe(self::FD_COMMAND);
-                } else {
-                    $this->_debug('=> wrote ' . $length);
-                    $this->_commandBuffer = Crypt_GPG_ByteUtils::substr(
-                        $this->_commandBuffer,
-                        $length
-                    );
-                }
-            }
-
-            if (count($outputStreams) === 0 || count($inputStreams) === 0) {
-                // we have an I/O imbalance, increase the select loop delay
-                // to smooth things out
-                $delay += 10;
-            } else {
-                // things are running smoothly, decrease the delay
-                $delay -= 8;
-                $delay = max(0, $delay);
-            }
-
-            if ($delay > 0) {
-                usleep($delay);
-            }
-
-        } // end loop while streams are open
-
-        $this->_debug('END PROCESSING');
-    }
-
-    // }}}
-    // {{{ _openSubprocess()
-
-    /**
-     * Opens an internal GPG subprocess for the current operation
-     *
-     * Opens a GPG subprocess, then connects the subprocess to some pipes. Sets
-     * the private class property {@link Crypt_GPG_Engine::$_process} to
-     * the new subprocess.
-     *
-     * @return void
-     *
-     * @throws Crypt_GPG_OpenSubprocessException if the subprocess could not be
-     *         opened.
-     *
-     * @see Crypt_GPG_Engine::setOperation()
-     * @see Crypt_GPG_Engine::_closeSubprocess()
-     * @see Crypt_GPG_Engine::$_process
-     */
-    private function _openSubprocess()
-    {
-        $version = $this->getVersion();
-
-        // Binary operations will not work on Windows with PHP < 5.2.6. This is
-        // in case stream_select() ever works on Windows.
-        $rb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'r' : 'rb';
-        $wb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'w' : 'wb';
-
-        $env = $_ENV;
-
-        // Newer versions of GnuPG return localized results. Crypt_GPG only
-        // works with English, so set the locale to 'C' for the subprocess.
-        $env['LC_ALL'] = 'C';
-
-        // If using GnuPG 2.x start the gpg-agent
-        if (version_compare($version, '2.0.0', 'ge')) {
-            $agentCommandLine = $this->_agent;
-
-            $agentArguments = array(
-                '--options /dev/null', // ignore any saved options
-                '--csh', // output is easier to parse
-                '--keep-display', // prevent passing --display to pinentry
-                '--no-grab',
-                '--ignore-cache-for-signing',
-                '--pinentry-touch-file /dev/null',
-                '--disable-scdaemon',
-                '--no-use-standard-socket',
-                '--pinentry-program ' . escapeshellarg($this->_getPinEntry())
-            );
-
-            if ($this->_homedir) {
-                $agentArguments[] = '--homedir ' .
-                    escapeshellarg($this->_homedir);
-            }
-
-
-            $agentCommandLine .= ' ' . implode(' ', $agentArguments)
-                . ' --daemon';
-
-            $agentDescriptorSpec = array(
-                self::FD_INPUT   => array('pipe', $rb), // stdin
-                self::FD_OUTPUT  => array('pipe', $wb), // stdout
-                self::FD_ERROR   => array('pipe', $wb)  // stderr
-            );
-
-            $this->_debug('OPENING GPG-AGENT SUBPROCESS WITH THE FOLLOWING COMMAND:');
-            $this->_debug($agentCommandLine);
-
-            $this->_agentProcess = proc_open(
-                $agentCommandLine,
-                $agentDescriptorSpec,
-                $this->_agentPipes,
-                null,
-                $env,
-                array('binary_pipes' => true)
-            );
-
-            if (!is_resource($this->_agentProcess)) {
-                throw new Crypt_GPG_OpenSubprocessException(
-                    'Unable to open gpg-agent subprocess.',
-                    0,
-                    $agentCommandLine
-                );
-            }
-
-            // Get GPG_AGENT_INFO and set environment variable for gpg process.
-            // This is a blocking read, but is only 1 line.
-            $agentInfo = fread(
-                $this->_agentPipes[self::FD_OUTPUT],
-                self::CHUNK_SIZE
-            );
-
-            $agentInfo             = explode(' ', $agentInfo, 3);
-            $this->_agentInfo      = $agentInfo[2];
-            $env['GPG_AGENT_INFO'] = $this->_agentInfo;
-
-            // gpg-agent daemon is started, we can close the launching process
-            $this->_closeAgentLaunchProcess();
-        }
-
-        $commandLine = $this->_binary;
-
-        $defaultArguments = array(
-            '--status-fd ' . escapeshellarg(self::FD_STATUS),
-            '--command-fd ' . escapeshellarg(self::FD_COMMAND),
-            '--no-secmem-warning',
-            '--no-tty',
-            '--no-default-keyring', // ignored if keying files are not specified
-            '--no-options'          // prevent creation of ~/.gnupg directory
-        );
-
-        if (version_compare($version, '1.0.7', 'ge')) {
-            if (version_compare($version, '2.0.0', 'lt')) {
-                $defaultArguments[] = '--no-use-agent';
-            }
-            $defaultArguments[] = '--no-permission-warning';
-        }
-
-        if (version_compare($version, '1.4.2', 'ge')) {
-            $defaultArguments[] = '--exit-on-status-write-error';
-        }
-
-        if (version_compare($version, '1.3.2', 'ge')) {
-            $defaultArguments[] = '--trust-model always';
-        } else {
-            $defaultArguments[] = '--always-trust';
-        }
-
-        $arguments = array_merge($defaultArguments, $this->_arguments);
-
-        if ($this->_homedir) {
-            $arguments[] = '--homedir ' . escapeshellarg($this->_homedir);
-
-            // the random seed file makes subsequent actions faster so only
-            // disable it if we have to.
-            if (!is_writeable($this->_homedir)) {
-                $arguments[] = '--no-random-seed-file';
-            }
-        }
-
-        if ($this->_publicKeyring) {
-            $arguments[] = '--keyring ' . escapeshellarg($this->_publicKeyring);
-        }
-
-        if ($this->_privateKeyring) {
-            $arguments[] = '--secret-keyring ' .
-                escapeshellarg($this->_privateKeyring);
-        }
-
-        if ($this->_trustDb) {
-            $arguments[] = '--trustdb-name ' . escapeshellarg($this->_trustDb);
-        }
-
-        $commandLine .= ' ' . implode(' ', $arguments) . ' ' .
-            $this->_operation;
-
-        $descriptorSpec = array(
-            self::FD_INPUT   => array('pipe', $rb), // stdin
-            self::FD_OUTPUT  => array('pipe', $wb), // stdout
-            self::FD_ERROR   => array('pipe', $wb), // stderr
-            self::FD_STATUS  => array('pipe', $wb), // status
-            self::FD_COMMAND => array('pipe', $rb), // command
-            self::FD_MESSAGE => array('pipe', $rb)  // message
-        );
-
-        $this->_debug('OPENING GPG SUBPROCESS WITH THE FOLLOWING COMMAND:');
-        $this->_debug($commandLine);
-
-        $this->_process = proc_open(
-            $commandLine,
-            $descriptorSpec,
-            $this->_pipes,
-            null,
-            $env,
-            array('binary_pipes' => true)
-        );
-
-        if (!is_resource($this->_process)) {
-            throw new Crypt_GPG_OpenSubprocessException(
-                'Unable to open GPG subprocess.', 0, $commandLine);
-        }
-
-        // Set streams as non-blocking. See Bug #18618.
-        foreach ($this->_pipes as $pipe) {
-            stream_set_blocking($pipe, 0);
-        }
-
-        $this->_openPipes = $this->_pipes;
-        $this->_errorCode = Crypt_GPG::ERROR_NONE;
-    }
-
-    // }}}
-    // {{{ _closeSubprocess()
-
-    /**
-     * Closes a the internal GPG subprocess
-     *
-     * Closes the internal GPG subprocess. Sets the private class property
-     * {@link Crypt_GPG_Engine::$_process} to null.
-     *
-     * @return void
-     *
-     * @see Crypt_GPG_Engine::_openSubprocess()
-     * @see Crypt_GPG_Engine::$_process
-     */
-    private function _closeSubprocess()
-    {
-        // clear PINs from environment if they were set
-        $_ENV['PINENTRY_USER_DATA'] = null;
-
-        if (is_resource($this->_process)) {
-            $this->_debug('CLOSING GPG SUBPROCESS');
-
-            // close remaining open pipes
-            foreach (array_keys($this->_openPipes) as $pipeNumber) {
-                $this->_closePipe($pipeNumber);
-            }
-
-            $exitCode = proc_close($this->_process);
-
-            if ($exitCode != 0) {
-                $this->_debug(
-                    '=> subprocess returned an unexpected exit code: ' .
-                    $exitCode
-                );
-
-                if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
-                    if ($this->_needPassphrase > 0) {
-                        $this->_errorCode = Crypt_GPG::ERROR_MISSING_PASSPHRASE;
-                    } else {
-                        $this->_errorCode = Crypt_GPG::ERROR_UNKNOWN;
-                    }
-                }
-            }
-
-            $this->_process = null;
-            $this->_pipes   = array();
-        }
-
-        $this->_closeAgentLaunchProcess();
-
-        if ($this->_agentInfo !== null) {
-            $this->_debug('STOPPING GPG-AGENT DAEMON');
-
-            $parts   = explode(':', $this->_agentInfo, 3);
-            $pid     = $parts[1];
-            $process = new Crypt_GPG_ProcessControl($pid);
-
-            // terminate agent daemon
-            $process->terminate();
-
-            while ($process->isRunning()) {
-                usleep(10000); // 10 ms
-                $process->terminate();
-            }
-
-            $this->_agentInfo = null;
-
-            $this->_debug('GPG-AGENT DAEMON STOPPED');
-        }
-    }
-
-    // }}}
-    // {{ _closeAgentLaunchProcess()
-
-    private function _closeAgentLaunchProcess()
-    {
-        if (is_resource($this->_agentProcess)) {
-            $this->_debug('CLOSING GPG-AGENT LAUNCH PROCESS');
-
-            // close agent pipes
-            foreach ($this->_agentPipes as $pipe) {
-                fflush($pipe);
-                fclose($pipe);
-            }
-
-            // close agent launching process
-            proc_close($this->_agentProcess);
-
-            $this->_agentProcess = null;
-            $this->_agentPipes   = array();
-
-            $this->_debug('GPG-AGENT LAUNCH PROCESS CLOSED');
-        }
-    }
-
-    // }}
-    // {{{ _closePipe()
-
-    /**
-     * Closes an opened pipe used to communicate with the GPG subprocess
-     *
-     * If the pipe is already closed, it is ignored. If the pipe is open, it
-     * is flushed and then closed.
-     *
-     * @param integer $pipeNumber the file descriptor number of the pipe to
-     *                            close.
-     *
-     * @return void
-     */
-    private function _closePipe($pipeNumber)
-    {
-        $pipeNumber = intval($pipeNumber);
-        if (array_key_exists($pipeNumber, $this->_openPipes)) {
-            fflush($this->_openPipes[$pipeNumber]);
-            fclose($this->_openPipes[$pipeNumber]);
-            unset($this->_openPipes[$pipeNumber]);
-        }
-    }
-
-    // }}}
-    // {{{ _getBinary()
-
-    /**
-     * Gets the name of the GPG binary for the current operating system
-     *
-     * This method is called if the '<kbd>binary</kbd>' option is <i>not</i>
-     * specified when creating this driver.
-     *
-     * @return string the name of the GPG binary for the current operating
-     *                system. If no suitable binary could be found, an empty
-     *                string is returned.
-     */
-    private function _getBinary()
-    {
-        $binary = '';
-
-        if ($this->_isDarwin) {
-            $binaryFiles = array(
-                '/opt/local/bin/gpg', // MacPorts
-                '/usr/local/bin/gpg', // Mac GPG
-                '/sw/bin/gpg',        // Fink
-                '/usr/bin/gpg'
-            );
-        } else {
-            $binaryFiles = array(
-                '/usr/bin/gpg',
-                '/usr/local/bin/gpg'
-            );
-        }
-
-        foreach ($binaryFiles as $binaryFile) {
-            if (is_executable($binaryFile)) {
-                $binary = $binaryFile;
-                break;
-            }
-        }
-
-        return $binary;
-    }
-
-    // }}}
-    // {{ _getAgent()
-
-    private function _getAgent()
-    {
-        $agent = '';
-
-        if ($this->_isDarwin) {
-            $agentFiles = array(
-                '/opt/local/bin/gpg-agent', // MacPorts
-                '/usr/local/bin/gpg-agent', // Mac GPG
-                '/sw/bin/gpg-agent',        // Fink
-                '/usr/bin/gpg-agent'
-            );
-        } else {
-            $agentFiles = array(
-                '/usr/bin/gpg-agent',
-                '/usr/local/bin/gpg-agent'
-            );
-        }
-
-        foreach ($agentFiles as $agentFile) {
-            if (is_executable($agentFile)) {
-                $agent = $agentFile;
-                break;
-            }
-        }
-
-        return $agent;
-    }
-
-    // }}
-    // {{ _getPinEntry()
-
-    private function _getPinEntry()
-    {
-        // Check if we're running directly from git or if we're using a
-        // PEAR-packaged version
-        $pinEntry = '@bin-dir@' . DIRECTORY_SEPARATOR . 'crypt-gpg-pinentry';
-
-        if ($pinEntry[0] === '@') {
-            $pinEntry = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..'
-                . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'scripts'
-                . DIRECTORY_SEPARATOR . 'crypt-gpg-pinentry';
-        }
-
-        return $pinEntry;
-    }
-
-    // }}
-    // {{{ _debug()
-
-    /**
-     * Displays debug text if debugging is turned on
-     *
-     * Debugging text is prepended with a debug identifier and echoed to stdout.
-     *
-     * @param string $text the debugging text to display.
-     *
-     * @return void
-     */
-    private function _debug($text)
-    {
-        if ($this->_debug) {
-            if (php_sapi_name() === 'cli') {
-                foreach (explode(PHP_EOL, $text) as $line) {
-                    echo "Crypt_GPG DEBUG: ", $line, PHP_EOL;
-                }
-            } else {
-                // running on a web server, format debug output nicely
-                foreach (explode(PHP_EOL, $text) as $line) {
-                    echo "Crypt_GPG DEBUG: <strong>", $line,
-                        '</strong><br />', PHP_EOL;
-                }
-            }
-        }
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/Exceptions.php b/program/lib/Crypt/GPG/Exceptions.php
deleted file mode 100644
index 0ca917d..0000000
--- a/program/lib/Crypt/GPG/Exceptions.php
+++ /dev/null
@@ -1,598 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Various exception handling classes for Crypt_GPG
- *
- * Crypt_GPG provides an object oriented interface to GNU Privacy
- * Guard (GPG). It requires the GPG executable to be on the system.
- *
- * This file contains various exception classes used by the Crypt_GPG package.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2011 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-
-/**
- * PEAR Exception handler and base class
- */
-require_once 'PEAR/Exception.php';
-
-// {{{ class Crypt_GPG_Exception
-
-/**
- * An exception thrown by the Crypt_GPG package
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_Exception extends PEAR_Exception
-{
-}
-
-// }}}
-// {{{ class Crypt_GPG_FileException
-
-/**
- * An exception thrown when a file is used in ways it cannot be used
- *
- * For example, if an output file is specified and the file is not writeable, or
- * if an input file is specified and the file is not readable, this exception
- * is thrown.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2007-2008 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_FileException extends Crypt_GPG_Exception
-{
-    // {{{ private class properties
-
-    /**
-     * The name of the file that caused this exception
-     *
-     * @var string
-     */
-    private $_filename = '';
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new Crypt_GPG_FileException
-     *
-     * @param string  $message  an error message.
-     * @param integer $code     a user defined error code.
-     * @param string  $filename the name of the file that caused this exception.
-     */
-    public function __construct($message, $code = 0, $filename = '')
-    {
-        $this->_filename = $filename;
-        parent::__construct($message, $code);
-    }
-
-    // }}}
-    // {{{ getFilename()
-
-    /**
-     * Returns the filename of the file that caused this exception
-     *
-     * @return string the filename of the file that caused this exception.
-     *
-     * @see Crypt_GPG_FileException::$_filename
-     */
-    public function getFilename()
-    {
-        return $this->_filename;
-    }
-
-    // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_OpenSubprocessException
-
-/**
- * An exception thrown when the GPG subprocess cannot be opened
- *
- * This exception is thrown when the {@link Crypt_GPG_Engine} tries to open a
- * new subprocess and fails.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_OpenSubprocessException extends Crypt_GPG_Exception
-{
-    // {{{ private class properties
-
-    /**
-     * The command used to try to open the subprocess
-     *
-     * @var string
-     */
-    private $_command = '';
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new Crypt_GPG_OpenSubprocessException
-     *
-     * @param string  $message an error message.
-     * @param integer $code    a user defined error code.
-     * @param string  $command the command that was called to open the
-     *                         new subprocess.
-     *
-     * @see Crypt_GPG::_openSubprocess()
-     */
-    public function __construct($message, $code = 0, $command = '')
-    {
-        $this->_command = $command;
-        parent::__construct($message, $code);
-    }
-
-    // }}}
-    // {{{ getCommand()
-
-    /**
-     * Returns the contents of the internal _command property
-     *
-     * @return string the command used to open the subprocess.
-     *
-     * @see Crypt_GPG_OpenSubprocessException::$_command
-     */
-    public function getCommand()
-    {
-        return $this->_command;
-    }
-
-    // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_InvalidOperationException
-
-/**
- * An exception thrown when an invalid GPG operation is attempted
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_InvalidOperationException extends Crypt_GPG_Exception
-{
-    // {{{ private class properties
-
-    /**
-     * The attempted operation
-     *
-     * @var string
-     */
-    private $_operation = '';
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new Crypt_GPG_OpenSubprocessException
-     *
-     * @param string  $message   an error message.
-     * @param integer $code      a user defined error code.
-     * @param string  $operation the operation.
-     */
-    public function __construct($message, $code = 0, $operation = '')
-    {
-        $this->_operation = $operation;
-        parent::__construct($message, $code);
-    }
-
-    // }}}
-    // {{{ getOperation()
-
-    /**
-     * Returns the contents of the internal _operation property
-     *
-     * @return string the attempted operation.
-     *
-     * @see Crypt_GPG_InvalidOperationException::$_operation
-     */
-    public function getOperation()
-    {
-        return $this->_operation;
-    }
-
-    // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_KeyNotFoundException
-
-/**
- * An exception thrown when Crypt_GPG fails to find the key for various
- * operations
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_KeyNotFoundException extends Crypt_GPG_Exception
-{
-    // {{{ private class properties
-
-    /**
-     * The key identifier that was searched for
-     *
-     * @var string
-     */
-    private $_keyId = '';
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new Crypt_GPG_KeyNotFoundException
-     *
-     * @param string  $message an error message.
-     * @param integer $code    a user defined error code.
-     * @param string  $keyId   the key identifier of the key.
-     */
-    public function __construct($message, $code = 0, $keyId= '')
-    {
-        $this->_keyId = $keyId;
-        parent::__construct($message, $code);
-    }
-
-    // }}}
-    // {{{ getKeyId()
-
-    /**
-     * Gets the key identifier of the key that was not found
-     *
-     * @return string the key identifier of the key that was not found.
-     */
-    public function getKeyId()
-    {
-        return $this->_keyId;
-    }
-
-    // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_NoDataException
-
-/**
- * An exception thrown when Crypt_GPG cannot find valid data for various
- * operations
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2006 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_NoDataException extends Crypt_GPG_Exception
-{
-}
-
-// }}}
-// {{{ class Crypt_GPG_BadPassphraseException
-
-/**
- * An exception thrown when a required passphrase is incorrect or missing
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2006-2008 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_BadPassphraseException extends Crypt_GPG_Exception
-{
-    // {{{ private class properties
-
-    /**
-     * Keys for which the passhprase is missing
-     *
-     * This contains primary user ids indexed by sub-key id.
-     *
-     * @var array
-     */
-    private $_missingPassphrases = array();
-
-    /**
-     * Keys for which the passhprase is incorrect
-     *
-     * This contains primary user ids indexed by sub-key id.
-     *
-     * @var array
-     */
-    private $_badPassphrases = array();
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new Crypt_GPG_BadPassphraseException
-     *
-     * @param string  $message            an error message.
-     * @param integer $code               a user defined error code.
-     * @param string  $badPassphrases     an array containing user ids of keys
-     *                                    for which the passphrase is incorrect.
-     * @param string  $missingPassphrases an array containing user ids of keys
-     *                                    for which the passphrase is missing.
-     */
-    public function __construct($message, $code = 0,
-        array $badPassphrases = array(), array $missingPassphrases = array()
-    ) {
-        $this->_badPassphrases     = $badPassphrases;
-        $this->_missingPassphrases = $missingPassphrases;
-
-        parent::__construct($message, $code);
-    }
-
-    // }}}
-    // {{{ getBadPassphrases()
-
-    /**
-     * Gets keys for which the passhprase is incorrect
-     *
-     * @return array an array of keys for which the passphrase is incorrect.
-     *               The array contains primary user ids indexed by the sub-key
-     *               id.
-     */
-    public function getBadPassphrases()
-    {
-        return $this->_badPassphrases;
-    }
-
-    // }}}
-    // {{{ getMissingPassphrases()
-
-    /**
-     * Gets keys for which the passhprase is missing 
-     *
-     * @return array an array of keys for which the passphrase is missing.
-     *               The array contains primary user ids indexed by the sub-key
-     *               id.
-     */
-    public function getMissingPassphrases()
-    {
-        return $this->_missingPassphrases;
-    }
-
-    // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_DeletePrivateKeyException
-
-/**
- * An exception thrown when an attempt is made to delete public key that has an
- * associated private key on the keyring
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_DeletePrivateKeyException extends Crypt_GPG_Exception
-{
-    // {{{ private class properties
-
-    /**
-     * The key identifier the deletion attempt was made upon
-     *
-     * @var string
-     */
-    private $_keyId = '';
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new Crypt_GPG_DeletePrivateKeyException
-     *
-     * @param string  $message an error message.
-     * @param integer $code    a user defined error code.
-     * @param string  $keyId   the key identifier of the public key that was
-     *                         attempted to delete.
-     *
-     * @see Crypt_GPG::deletePublicKey()
-     */
-    public function __construct($message, $code = 0, $keyId = '')
-    {
-        $this->_keyId = $keyId;
-        parent::__construct($message, $code);
-    }
-
-    // }}}
-    // {{{ getKeyId()
-
-    /**
-     * Gets the key identifier of the key that was not found
-     *
-     * @return string the key identifier of the key that was not found.
-     */
-    public function getKeyId()
-    {
-        return $this->_keyId;
-    }
-
-    // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_KeyNotCreatedException
-
-/**
- * An exception thrown when an attempt is made to generate a key and the
- * attempt fails
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2011 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_KeyNotCreatedException extends Crypt_GPG_Exception
-{
-}
-
-// }}}
-// {{{ class Crypt_GPG_InvalidKeyParamsException
-
-/**
- * An exception thrown when an attempt is made to generate a key and the
- * key parameters set on the key generator are invalid
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2011 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_InvalidKeyParamsException extends Crypt_GPG_Exception
-{
-    // {{{ private class properties
-
-    /**
-     * The key algorithm
-     *
-     * @var integer
-     */
-    private $_algorithm = 0;
-
-    /**
-     * The key size
-     *
-     * @var integer
-     */
-    private $_size = 0;
-
-    /**
-     * The key usage
-     *
-     * @var integer
-     */
-    private $_usage = 0;
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new Crypt_GPG_InvalidKeyParamsException
-     *
-     * @param string  $message   an error message.
-     * @param integer $code      a user defined error code.
-     * @param string  $algorithm the key algorithm.
-     * @param string  $size      the key size.
-     * @param string  $usage     the key usage.
-     */
-    public function __construct(
-        $message,
-        $code = 0,
-        $algorithm = 0,
-        $size = 0,
-        $usage = 0
-    ) {
-        parent::__construct($message, $code);
-
-        $this->_algorithm = $algorithm;
-        $this->_size      = $size;
-        $this->_usage     = $usage;
-    }
-
-    // }}}
-    // {{{ getAlgorithm()
-
-    /**
-     * Gets the key algorithm
-     *
-     * @return integer the key algorithm.
-     */
-    public function getAlgorithm()
-    {
-        return $this->_algorithm;
-    }
-
-    // }}}
-    // {{{ getSize()
-
-    /**
-     * Gets the key size
-     *
-     * @return integer the key size.
-     */
-    public function getSize()
-    {
-        return $this->_size;
-    }
-
-    // }}}
-    // {{{ getUsage()
-
-    /**
-     * Gets the key usage
-     *
-     * @return integer the key usage.
-     */
-    public function getUsage()
-    {
-        return $this->_usage;
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/Key.php b/program/lib/Crypt/GPG/Key.php
deleted file mode 100644
index 6ecb538..0000000
--- a/program/lib/Crypt/GPG/Key.php
+++ /dev/null
@@ -1,223 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Contains a class representing GPG keys
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2010 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-
-/**
- * Sub-key class definition
- */
-require_once 'Crypt/GPG/SubKey.php';
-
-/**
- * User id class definition
- */
-require_once 'Crypt/GPG/UserId.php';
-
-// {{{ class Crypt_GPG_Key
-
-/**
- * A data class for GPG key information
- *
- * This class is used to store the results of the {@link Crypt_GPG::getKeys()}
- * method.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2010 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @see       Crypt_GPG::getKeys()
- */
-class Crypt_GPG_Key
-{
-    // {{{ class properties
-
-    /**
-     * The user ids associated with this key
-     *
-     * This is an array of {@link Crypt_GPG_UserId} objects.
-     *
-     * @var array
-     *
-     * @see Crypt_GPG_Key::addUserId()
-     * @see Crypt_GPG_Key::getUserIds()
-     */
-    private $_userIds = array();
-
-    /**
-     * The subkeys of this key
-     *
-     * This is an array of {@link Crypt_GPG_SubKey} objects.
-     *
-     * @var array
-     *
-     * @see Crypt_GPG_Key::addSubKey()
-     * @see Crypt_GPG_Key::getSubKeys()
-     */
-    private $_subKeys = array();
-
-    // }}}
-    // {{{ getSubKeys()
-
-    /**
-     * Gets the sub-keys of this key
-     *
-     * @return array the sub-keys of this key.
-     *
-     * @see Crypt_GPG_Key::addSubKey()
-     */
-    public function getSubKeys()
-    {
-        return $this->_subKeys;
-    }
-
-    // }}}
-    // {{{ getUserIds()
-
-    /**
-     * Gets the user ids of this key
-     *
-     * @return array the user ids of this key.
-     *
-     * @see Crypt_GPG_Key::addUserId()
-     */
-    public function getUserIds()
-    {
-        return $this->_userIds;
-    }
-
-    // }}}
-    // {{{ getPrimaryKey()
-
-    /**
-     * Gets the primary sub-key of this key
-     *
-     * The primary key is the first added sub-key.
-     *
-     * @return Crypt_GPG_SubKey the primary sub-key of this key.
-     */
-    public function getPrimaryKey()
-    {
-        $primary_key = null;
-        if (count($this->_subKeys) > 0) {
-            $primary_key = $this->_subKeys[0];
-        }
-        return $primary_key;
-    }
-
-    // }}}
-    // {{{ canSign()
-
-    /**
-     * Gets whether or not this key can sign data
-     *
-     * This key can sign data if any sub-key of this key can sign data.
-     *
-     * @return boolean true if this key can sign data and false if this key
-     *                 cannot sign data.
-     */
-    public function canSign()
-    {
-        $canSign = false;
-        foreach ($this->_subKeys as $subKey) {
-            if ($subKey->canSign()) {
-                $canSign = true;
-                break;
-            }
-        }
-        return $canSign;
-    }
-
-    // }}}
-    // {{{ canEncrypt()
-
-    /**
-     * Gets whether or not this key can encrypt data
-     *
-     * This key can encrypt data if any sub-key of this key can encrypt data.
-     *
-     * @return boolean true if this key can encrypt data and false if this
-     *                 key cannot encrypt data.
-     */
-    public function canEncrypt()
-    {
-        $canEncrypt = false;
-        foreach ($this->_subKeys as $subKey) {
-            if ($subKey->canEncrypt()) {
-                $canEncrypt = true;
-                break;
-            }
-        }
-        return $canEncrypt;
-    }
-
-    // }}}
-    // {{{ addSubKey()
-
-    /**
-     * Adds a sub-key to this key
-     *
-     * The first added sub-key will be the primary key of this key.
-     *
-     * @param Crypt_GPG_SubKey $subKey the sub-key to add.
-     *
-     * @return Crypt_GPG_Key the current object, for fluent interface.
-     */
-    public function addSubKey(Crypt_GPG_SubKey $subKey)
-    {
-        $this->_subKeys[] = $subKey;
-        return $this;
-    }
-
-    // }}}
-    // {{{ addUserId()
-
-    /**
-     * Adds a user id to this key
-     *
-     * @param Crypt_GPG_UserId $userId the user id to add.
-     *
-     * @return Crypt_GPG_Key the current object, for fluent interface.
-     */
-    public function addUserId(Crypt_GPG_UserId $userId)
-    {
-        $this->_userIds[] = $userId;
-        return $this;
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/KeyGenerator.php b/program/lib/Crypt/GPG/KeyGenerator.php
deleted file mode 100644
index f59c0ee..0000000
--- a/program/lib/Crypt/GPG/KeyGenerator.php
+++ /dev/null
@@ -1,790 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an object that handles GnuPG key generation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id:$
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-
-/**
- * Base class for GPG methods
- */
-require_once 'Crypt/GPGAbstract.php';
-
-/**
- * Status output handler for key generation
- */
-require_once 'Crypt/GPG/KeyGeneratorStatusHandler.php';
-
-/**
- * Error output handler for key generation
- */
-require_once 'Crypt/GPG/KeyGeneratorErrorHandler.php';
-
-// {{{ class Crypt_GPG_KeyGenerator
-
-/**
- * GnuPG key generator
- *
- * This class provides an object oriented interface for generating keys with
- * the GNU Privacy Guard (GPG).
- *
- * Secure key generation requires true random numbers, and as such can be slow.
- * If the operating system runs out of entropy, key generation will block until
- * more entropy is available.
- *
- * If quick key generation is important, a hardware entropy generator, or an
- * entropy gathering daemon may be installed. For example, administrators of
- * Debian systems may want to install the 'randomsound' package.
- *
- * This class uses the experimental automated key generation support available
- * in GnuPG. See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on the key generation format.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-class Crypt_GPG_KeyGenerator extends Crypt_GPGAbstract
-{
-    // {{{ protected properties
-
-    /**
-     * The expiration date of generated keys
-     *
-     * @var integer
-     *
-     * @see Crypt_GPG_KeyGenerator::setExpirationDate()
-     */
-    protected $expirationDate = 0;
-
-    /**
-     * The passphrase of generated keys
-     *
-     * @var string
-     *
-     * @see Crypt_GPG_KeyGenerator::setPassphrase()
-     */
-    protected $passphrase = '';
-
-    /**
-     * The algorithm for generated primary keys
-     *
-     * @var integer
-     *
-     * @see Crypt_GPG_KeyGenerator::setKeyParams()
-     */
-    protected $keyAlgorithm = Crypt_GPG_SubKey::ALGORITHM_DSA;
-
-    /**
-     * The size of generated primary keys
-     *
-     * @var integer
-     *
-     * @see Crypt_GPG_KeyGenerator::setKeyParams()
-     */
-    protected $keySize = 1024;
-
-    /**
-     * The usages of generated primary keys
-     *
-     * This is a bitwise combination of the usage constants in
-     * {@link Crypt_GPG_SubKey}.
-     *
-     * @var integer
-     *
-     * @see Crypt_GPG_KeyGenerator::setKeyParams()
-     */
-    protected $keyUsage = 6; // USAGE_SIGN | USAGE_CERTIFY
-
-    /**
-     * The algorithm for generated sub-keys
-     *
-     * @var integer
-     *
-     * @see Crypt_GPG_KeyGenerator::setSubKeyParams()
-     */
-    protected $subKeyAlgorithm = Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC;
-
-    /**
-     * The size of generated sub-keys
-     *
-     * @var integer
-     *
-     * @see Crypt_GPG_KeyGenerator::setSubKeyParams()
-     */
-    protected $subKeySize = 2048;
-
-    /**
-     * The usages of generated sub-keys
-     *
-     * This is a bitwise combination of the usage constants in
-     * {@link Crypt_GPG_SubKey}.
-     *
-     * @var integer
-     *
-     * @see Crypt_GPG_KeyGenerator::setSubKeyParams()
-     */
-    protected $subKeyUsage = Crypt_GPG_SubKey::USAGE_ENCRYPT;
-
-    /**
-     * The GnuPG status handler to use for key generation
-     *
-     * @var Crypt_GPG_KeyGeneratorStatusHandler
-     *
-     * @see Crypt_GPG_KeyGenerator::setStatusHandler()
-     */
-    protected $statusHandler = null;
-
-    /**
-     * The GnuPG error handler to use for key generation
-     *
-     * @var Crypt_GPG_KeyGeneratorErrorHandler
-     *
-     * @see Crypt_GPG_KeyGenerator::setErrorHandler()
-     */
-    protected $errorHandler = null;
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new GnuPG key generator
-     *
-     * Available options are:
-     *
-     * - <kbd>string  homedir</kbd>        - the directory where the GPG
-     *                                       keyring files are stored. If not
-     *                                       specified, Crypt_GPG uses the
-     *                                       default of <kbd>~/.gnupg</kbd>.
-     * - <kbd>string  publicKeyring</kbd>  - the file path of the public
-     *                                       keyring. Use this if the public
-     *                                       keyring is not in the homedir, or
-     *                                       if the keyring is in a directory
-     *                                       not writable by the process
-     *                                       invoking GPG (like Apache). Then
-     *                                       you can specify the path to the
-     *                                       keyring with this option
-     *                                       (/foo/bar/pubring.gpg), and specify
-     *                                       a writable directory (like /tmp)
-     *                                       using the <i>homedir</i> option.
-     * - <kbd>string  privateKeyring</kbd> - the file path of the private
-     *                                       keyring. Use this if the private
-     *                                       keyring is not in the homedir, or
-     *                                       if the keyring is in a directory
-     *                                       not writable by the process
-     *                                       invoking GPG (like Apache). Then
-     *                                       you can specify the path to the
-     *                                       keyring with this option
-     *                                       (/foo/bar/secring.gpg), and specify
-     *                                       a writable directory (like /tmp)
-     *                                       using the <i>homedir</i> option.
-     * - <kbd>string  trustDb</kbd>        - the file path of the web-of-trust
-     *                                       database. Use this if the trust
-     *                                       database is not in the homedir, or
-     *                                       if the database is in a directory
-     *                                       not writable by the process
-     *                                       invoking GPG (like Apache). Then
-     *                                       you can specify the path to the
-     *                                       trust database with this option
-     *                                       (/foo/bar/trustdb.gpg), and specify
-     *                                       a writable directory (like /tmp)
-     *                                       using the <i>homedir</i> option.
-     * - <kbd>string  binary</kbd>         - the location of the GPG binary. If
-     *                                       not specified, the driver attempts
-     *                                       to auto-detect the GPG binary
-     *                                       location using a list of known
-     *                                       default locations for the current
-     *                                       operating system. The option
-     *                                       <kbd>gpgBinary</kbd> is a
-     *                                       deprecated alias for this option.
-     * - <kbd>string  agent</kbd>          - the location of the GnuPG agent
-     *                                       binary. The gpg-agent is only
-     *                                       used for GnuPG 2.x. If not
-     *                                       specified, the engine attempts
-     *                                       to auto-detect the gpg-agent
-     *                                       binary location using a list of
-     *                                       know default locations for the
-     *                                       current operating system.
-     * - <kbd>boolean debug</kbd>          - whether or not to use debug mode.
-     *                                       When debug mode is on, all
-     *                                       communication to and from the GPG
-     *                                       subprocess is logged. This can be
-     *
-     * @param array $options optional. An array of options used to create the
-     *                       GPG object. All options are optional and are
-     *                       represented as key-value pairs.
-     *
-     * @throws Crypt_GPG_FileException if the <kbd>homedir</kbd> does not exist
-     *         and cannot be created. This can happen if <kbd>homedir</kbd> is
-     *         not specified, Crypt_GPG is run as the web user, and the web
-     *         user has no home directory. This exception is also thrown if any
-     *         of the options <kbd>publicKeyring</kbd>,
-     *         <kbd>privateKeyring</kbd> or <kbd>trustDb</kbd> options are
-     *         specified but the files do not exist or are are not readable.
-     *         This can happen if the user running the Crypt_GPG process (for
-     *         example, the Apache user) does not have permission to read the
-     *         files.
-     *
-     * @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
-     *         if no <kbd>binary</kbd> is provided and no suitable binary could
-     *         be found.
-     *
-     * @throws PEAR_Exception if the provided <kbd>agent</kbd> is invalid, or
-     *         if no <kbd>agent</kbd> is provided and no suitable gpg-agent
-     *         cound be found.
-     */
-    public function __construct(array $options = array())
-    {
-        parent::__construct($options);
-
-        $this->statusHandler = new Crypt_GPG_KeyGeneratorStatusHandler();
-        $this->errorHandler  = new Crypt_GPG_KeyGeneratorErrorHandler();
-    }
-
-    // }}}
-    // {{{ setExpirationDate()
-
-    /**
-     * Sets the expiration date of generated keys
-     *
-     * @param string|integer $date either a string that may be parsed by
-     *                             PHP's strtotime() function, or an integer
-     *                             timestamp representing the number of seconds
-     *                             since the UNIX epoch. This date must be at
-     *                             least one date in the future. Keys that
-     *                             expire in the past may not be generated. Use
-     *                             an expiration date of 0 for keys that do not
-     *                             expire.
-     *
-     * @throws InvalidArgumentException if the date is not a valid format, or
-     *                                  if the date is not at least one day in
-     *                                  the future, or if the date is greater
-     *                                  than 2038-01-19T03:14:07.
-     *
-     * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
-     */
-    public function setExpirationDate($date)
-    {
-        if (is_int($date) || ctype_digit(strval($date))) {
-            $expirationDate = intval($date);
-        } else {
-            $expirationDate = strtotime($date);
-        }
-
-        if ($expirationDate === false) {
-            throw new InvalidArgumentException(
-                sprintf(
-                    'Invalid expiration date format: "%s". Please use a ' .
-                    'format compatible with PHP\'s strtotime().',
-                    $date
-                )
-            );
-        }
-
-        if ($expirationDate !== 0 && $expirationDate < time() + 86400) {
-            throw new InvalidArgumentException(
-                'Expiration date must be at least a day in the future.'
-            );
-        }
-
-        // GnuPG suffers from the 2038 bug
-        if ($expirationDate > 2147483647) {
-            throw new InvalidArgumentException(
-                'Expiration date must not be greater than 2038-01-19T03:14:07.'
-            );
-        }
-
-        $this->expirationDate = $expirationDate;
-
-        return $this;
-    }
-
-    // }}}
-    // {{{ setPassphrase()
-
-    /**
-     * Sets the passphrase of generated keys
-     *
-     * @param string $passphrase the passphrase to use for generated keys. Use
-     *                           null or an empty string for no passphrase.
-     *
-     * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
-     */
-    public function setPassphrase($passphrase)
-    {
-        $this->passphrase = strval($passphrase);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setKeyParams()
-
-    /**
-     * Sets the parameters for the primary key of generated key-pairs
-     *
-     * @param integer $algorithm the algorithm used by the key. This should be
-     *                           one of the Crypt_GPG_SubKey::ALGORITHM_*
-     *                           constants.
-     * @param integer $size      optional. The size of the key. Different
-     *                           algorithms have different size requirements.
-     *                           If not specified, the default size for the
-     *                           specified algorithm will be used. If an
-     *                           invalid key size is used, GnuPG will do its
-     *                           best to round it to a valid size.
-     * @param integer $usage     optional. A bitwise combination of key usages.
-     *                           If not specified, the primary key will be used
-     *                           only to sign and certify. This is the default
-     *                           behavior of GnuPG in interactive mode. Use
-     *                           the Crypt_GPG_SubKey::USAGE_* constants here.
-     *                           The primary key may be used to certify even
-     *                           if the certify usage is not specified.
-     *
-     * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
-     */
-    public function setKeyParams($algorithm, $size = 0, $usage = 0)
-    {
-        $apgorithm = intval($algorithm);
-
-        if ($algorithm === Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC) {
-            throw new Crypt_GPG_InvalidKeyParamsException(
-                'Primary key algorithm must be capable of signing. The ' .
-                'Elgamal algorithm can only encrypt.',
-                0,
-                $algorithm,
-                $size,
-                $usage
-            );
-        }
-
-        if ($size != 0) {
-            $size = intval($size);
-        }
-
-        if ($usage != 0) {
-            $usage = intval($usage);
-        }
-
-        $usageEncrypt = Crypt_GPG_SubKey::USAGE_ENCRYPT;
-
-        if (   $algorithm === Crypt_GPG_SubKey::ALGORITHM_DSA
-            && ($usage & $usageEncrypt) === $usageEncrypt
-        ) {
-            throw new Crypt_GPG_InvalidKeyParamsException(
-                'The DSA algorithm is not capable of encrypting. Please ' .
-                'specify a different algorithm or do not include encryption ' .
-                'as a usage for the primary key.',
-                0,
-                $algorithm,
-                $size,
-                $usage
-            );
-        }
-
-        $this->keyAlgorithm = $algorithm;
-
-        if ($size != 0) {
-            $this->keySize = $size;
-        }
-
-        if ($usage != 0) {
-            $this->keyUsage = $usage;
-        }
-
-        return $this;
-    }
-
-    // }}}
-    // {{{ setSubKeyParams()
-
-    /**
-     * Sets the parameters for the sub-key of generated key-pairs
-     *
-     * @param integer $algorithm the algorithm used by the key. This should be
-     *                           one of the Crypt_GPG_SubKey::ALGORITHM_*
-     *                           constants.
-     * @param integer $size      optional. The size of the key. Different
-     *                           algorithms have different size requirements.
-     *                           If not specified, the default size for the
-     *                           specified algorithm will be used. If an
-     *                           invalid key size is used, GnuPG will do its
-     *                           best to round it to a valid size.
-     * @param integer $usage     optional. A bitwise combination of key usages.
-     *                           If not specified, the sub-key will be used
-     *                           only to encrypt. This is the default behavior
-     *                           of GnuPG in interactive mode. Use the
-     *                           Crypt_GPG_SubKey::USAGE_* constants here.
-     *
-     * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
-     */
-    public function setSubKeyParams($algorithm, $size = '', $usage = 0)
-    {
-        $apgorithm = intval($algorithm);
-
-        if ($size != 0) {
-            $size = intval($size);
-        }
-
-        if ($usage != 0) {
-            $usage = intval($usage);
-        }
-
-        $usageSign = Crypt_GPG_SubKey::USAGE_SIGN;
-
-        if (   $algorithm === Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC
-            && ($usage & $usageSign) === $usageSign
-        ) {
-            throw new Crypt_GPG_InvalidKeyParamsException(
-                'The Elgamal algorithm is not capable of signing. Please ' .
-                'specify a different algorithm or do not include signing ' .
-                'as a usage for the sub-key.',
-                0,
-                $algorithm,
-                $size,
-                $usage
-            );
-        }
-
-        $usageEncrypt = Crypt_GPG_SubKey::USAGE_ENCRYPT;
-
-        if (   $algorithm === Crypt_GPG_SubKey::ALGORITHM_DSA
-            && ($usage & $usageEncrypt) === $usageEncrypt
-        ) {
-            throw new Crypt_GPG_InvalidKeyParamsException(
-                'The DSA algorithm is not capable of encrypting. Please ' .
-                'specify a different algorithm or do not include encryption ' .
-                'as a usage for the sub-key.',
-                0,
-                $algorithm,
-                $size,
-                $usage
-            );
-        }
-
-        $this->subKeyAlgorithm = $algorithm;
-
-        if ($size != 0) {
-            $this->subKeySize = $size;
-        }
-
-        if ($usage != 0) {
-            $this->subKeyUsage = $usage;
-        }
-
-        return $this;
-    }
-
-    // }}}
-    // {{{ setStatusHandler()
-
-    /**
-     * Sets the status handler to use for key generation
-     *
-     * Normally this method does not need to be used. It provides a means for
-     * dependency injection.
-     *
-     * @param Crypt_GPG_KeyStatusHandler $handler the key status handler to
-     *                                            use.
-     *
-     * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
-     */
-    public function setStatusHandler(
-        Crypt_GPG_KeyGeneratorStatusHandler $handler
-    ) {
-        $this->statusHandler = $handler;
-        return $this;
-    }
-
-    // }}}
-    // {{{ setErrorHandler()
-
-    /**
-     * Sets the error handler to use for key generation
-     *
-     * Normally this method does not need to be used. It provides a means for
-     * dependency injection.
-     *
-     * @param Crypt_GPG_KeyErrorHandler $handler the key error handler to
-     *                                           use.
-     *
-     * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
-     */
-    public function setErrorHandler(
-        Crypt_GPG_KeyGeneratorErrorHandler $handler
-    ) {
-        $this->errorHandler = $handler;
-        return $this;
-    }
-
-    // }}}
-    // {{{ generateKey()
-
-    /**
-     * Generates a new key-pair in the current keyring
-     *
-     * Secure key generation requires true random numbers, and as such can be
-     * solw. If the operating system runs out of entropy, key generation will
-     * block until more entropy is available.
-     *
-     * If quick key generation is important, a hardware entropy generator, or
-     * an entropy gathering daemon may be installed. For example,
-     * administrators of Debian systems may want to install the 'randomsound'
-     * package.
-     *
-     * @param string|Crypt_GPG_UserId $name    either a {@link Crypt_GPG_UserId}
-     *                                         object, or a string containing
-     *                                         the name of the user id.
-     * @param string                  $email   optional. If <i>$name</i> is
-     *                                         specified as a string, this is
-     *                                         the email address of the user id.
-     * @param string                  $comment optional. If <i>$name</i> is
-     *                                         specified as a string, this is
-     *                                         the comment of the user id.
-     *
-     * @return Crypt_GPG_Key the newly generated key.
-     *
-     * @throws Crypt_GPG_KeyNotCreatedException if the key parameters are
-     *         incorrect, if an unknown error occurs during key generation, or
-     *         if the newly generated key is not found in the keyring.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     */
-    public function generateKey($name, $email = '', $comment = '')
-    {
-        $handle = uniqid('key', true);
-
-        $userId = $this->getUserId($name, $email, $comment);
-
-        $keyParams = array(
-            'Key-Type'      => $this->keyAlgorithm,
-            'Key-Length'    => $this->keySize,
-            'Key-Usage'     => $this->getUsage($this->keyUsage),
-            'Subkey-Type'   => $this->subKeyAlgorithm,
-            'Subkey-Length' => $this->subKeySize,
-            'Subkey-Usage'  => $this->getUsage($this->subKeyUsage),
-            'Name-Real'     => $userId->getName(),
-            'Handle'        => $handle,
-        );
-
-        if ($this->expirationDate != 0) {
-            // GnuPG only accepts granularity of days
-            $expirationDate = date('Y-m-d', $this->expirationDate);
-            $keyParams['Expire-Date'] = $expirationDate;
-        }
-
-        if ($this->passphrase != '') {
-            $keyParams['Passphrase'] = $this->passphrase;
-        }
-
-        if ($userId->getEmail() != '') {
-            $keyParams['Name-Email'] = $userId->getEmail();
-        }
-
-        if ($userId->getComment() != '') {
-            $keyParams['Name-Comment'] = $userId->getComment();
-        }
-
-
-        $keyParamsFormatted = array();
-        foreach ($keyParams as $name => $value) {
-            $keyParamsFormatted[] = $name . ': ' . $value;
-        }
-
-        $input = implode("\n", $keyParamsFormatted) . "\n%commit\n";
-
-        $statusHandler = clone $this->statusHandler;
-        $statusHandler->setHandle($handle);
-
-        $errorHandler = clone $this->errorHandler;
-
-        $this->engine->reset();
-        $this->engine->addStatusHandler(array($statusHandler, 'handle'));
-        $this->engine->addErrorHandler(array($errorHandler, 'handle'));
-        $this->engine->setInput($input);
-        $this->engine->setOutput($output);
-        $this->engine->setOperation('--gen-key', array('--batch'));
-        $this->engine->run();
-
-        $code = $errorHandler->getErrorCode();
-        switch ($code) {
-        case self::ERROR_BAD_KEY_PARAMS:
-            switch ($errorHandler->getLineNumber()) {
-            case 1:
-                throw new Crypt_GPG_InvalidKeyParamsException(
-                    'Invalid primary key algorithm specified.',
-                    0,
-                    $this->keyAlgorithm,
-                    $this->keySize,
-                    $this->keyUsage
-                );
-            case 4:
-                throw new Crypt_GPG_InvalidKeyParamsException(
-                    'Invalid sub-key algorithm specified.',
-                    0,
-                    $this->subKeyAlgorithm,
-                    $this->subKeySize,
-                    $this->subKeyUsage
-                );
-            default:
-                throw new Crypt_GPG_InvalidKeyParamsException(
-                    'Invalid key algorithm specified.'
-                );
-            }
-        }
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-            break;
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error generating key-pair. Please use the \'debug\' ' .
-                'option when creating the Crypt_GPG object, and file a bug ' .
-                'report at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        $code = $statusHandler->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-            break;
-        case self::ERROR_KEY_NOT_CREATED:
-            throw new Crypt_GPG_KeyNotCreatedException(
-                'Unable to create new key-pair. Invalid key parameters. ' .
-                'Make sure the specified key algorithms and sizes are ' .
-                'correct.',
-                $code
-            );
-        }
-
-        $fingerprint = $statusHandler->getKeyFingerprint();
-        $keys        = $this->_getKeys($fingerprint);
-
-        if (count($keys) === 0) {
-            throw new Crypt_GPG_KeyNotCreatedException(
-                sprintf(
-                    'Newly created key "%s" not found in keyring.',
-                    $fingerprint
-                )
-            );
-        }
-
-        return $keys[0];
-    }
-
-    // }}}
-    // {{{ getUsage()
-
-    /**
-     * Builds a GnuPG key usage string suitable for key generation
-     *
-     * See <b>doc/DETAILS</b> in the
-     * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
-     * information on the key usage format.
-     *
-     * @param integer $usage a bitwise combination of the key usages. This is
-     *                       a combination of the Crypt_GPG_SubKey::USAGE_*
-     *                       constants.
-     *
-     * @return string the key usage string.
-     */
-    protected function getUsage($usage)
-    {
-        $map = array(
-            Crypt_GPG_SubKey::USAGE_ENCRYPT        => 'encrypt',
-            Crypt_GPG_SubKey::USAGE_SIGN           => 'sign',
-            Crypt_GPG_SubKey::USAGE_CERTIFY        => 'cert',
-            Crypt_GPG_SubKey::USAGE_AUTHENTICATION => 'auth',
-        );
-
-        // cert is always used for primary keys and does not need to be
-        // specified
-        $usage &= ~Crypt_GPG_SubKey::USAGE_CERTIFY;
-
-        $usageArray = array();
-
-        foreach ($map as $key => $value) {
-            if (($usage & $key) === $key) {
-                $usageArray[] = $value;
-            }
-        }
-
-        return implode(',', $usageArray);
-    }
-
-    // }}}
-    // {{{ getUserId()
-
-    /**
-     * Gets a user id object from parameters
-     *
-     * @param string|Crypt_GPG_UserId $name    either a {@link Crypt_GPG_UserId}
-     *                                         object, or a string containing
-     *                                         the name of the user id.
-     * @param string                  $email   optional. If <i>$name</i> is
-     *                                         specified as a string, this is
-     *                                         the email address of the user id.
-     * @param string                  $comment optional. If <i>$name</i> is
-     *                                         specified as a string, this is
-     *                                         the comment of the user id.
-     *
-     * @return Crypt_GPG_UserId a user id object for the specified parameters.
-     */
-    protected function getUserId($name, $email = '', $comment = '')
-    {
-        if ($name instanceof Crypt_GPG_UserId) {
-            $userId = $name;
-        } else {
-            $userId = new Crypt_GPG_UserId();
-            $userId->setName($name)->setEmail($email)->setComment($comment);
-        }
-
-        return $userId;
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php b/program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php
deleted file mode 100644
index ad9ebf3..0000000
--- a/program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an object that handles GPG's error output for the
- * key generation operation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id:$
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-
-/**
- * Error line handler for the key generation operation
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-class Crypt_GPG_KeyGeneratorErrorHandler
-{
-    // {{{ protected properties
-
-    /**
-     * Error code (if any) caused by key generation
-     *
-     * @var integer
-     */
-    protected $errorCode = Crypt_GPG::ERROR_NONE;
-
-    /**
-     * Line number at which the error occurred
-     *
-     * @var integer
-     */
-    protected $lineNumber = null;
-
-    // }}}
-    // {{{ handle()
-
-    /**
-     * Handles an error line
-     *
-     * @param string $line the error line to handle.
-     *
-     * @return void
-     */
-    public function handle($line)
-    {
-        $matches = array();
-        $pattern = '/:([0-9]+): invalid algorithm$/';
-        if (preg_match($pattern, $line, $matches) === 1) {
-            $this->errorCode  = Crypt_GPG::ERROR_BAD_KEY_PARAMS;
-            $this->lineNumber = intval($matches[1]);
-        }
-    }
-
-    // }}}
-    // {{{ getErrorCode()
-
-    /**
-     * Gets the error code resulting from key gneration
-     *
-     * @return integer the error code resulting from key generation.
-     */
-    public function getErrorCode()
-    {
-        return $this->errorCode;
-    }
-
-    // }}}
-    // {{{ getLineNumber()
-
-    /**
-     * Gets the line number at which the error occurred
-     *
-     * @return integer the line number at which the error occurred. Null if
-     *                 no error occurred.
-     */
-    public function getLineNumber()
-    {
-        return $this->lineNumber;
-    }
-
-    // }}}
-}
-
-?>
diff --git a/program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php b/program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php
deleted file mode 100644
index 8b4c85c..0000000
--- a/program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an object that handles GPG's status output for the
- * key generation operation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id:$
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-
-/**
- * Status line handler for the key generation operation
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * This class is responsible for parsing the final key fingerprint from the
- * status output and for updating the key generation progress file. See
- * <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on GPG's status output for the batch key generation operation.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-class Crypt_GPG_KeyGeneratorStatusHandler
-{
-    // {{{ protected properties
-
-    /**
-     * The key fingerprint
-     *
-     * Ths key fingerprint is emitted by GPG after the key generation is
-     * complete.
-     *
-     * @var string
-     */
-    protected $keyFingerprint = '';
-
-    /**
-     * The unique key handle used by this handler
-     *
-     * The key handle is used to track GPG status output for a particular key
-     * before the key has its own identifier.
-     *
-     * @var string
-     *
-     * @see Crypt_GPG_KeyGeneratorStatusHandler::setHandle()
-     */
-    protected $handle = '';
-
-    /**
-     * Error code (if any) caused by key generation
-     *
-     * @var integer
-     */
-    protected $errorCode = Crypt_GPG::ERROR_NONE;
-
-    // }}}
-    // {{{ setHandle()
-
-    /**
-     * Sets the unique key handle used by this handler
-     *
-     * The key handle is used to track GPG status output for a particular key
-     * before the key has its own identifier.
-     *
-     * @param string $handle the key handle this status handle will use.
-     *
-     * @return Crypt_GPG_KeyGeneratorStatusHandler the current object, for
-     *                                             fluent interface.
-     */
-    public function setHandle($handle)
-    {
-        $this->handle = strval($handle);
-        return $this;
-    }
-
-    // }}}
-    // {{{ handle()
-
-    /**
-     * Handles a status line
-     *
-     * @param string $line the status line to handle.
-     *
-     * @return void
-     */
-    public function handle($line)
-    {
-        $tokens = explode(' ', $line);
-        switch ($tokens[0]) {
-        case 'KEY_CREATED':
-            if ($tokens[3] == $this->handle) {
-                $this->keyFingerprint = $tokens[2];
-            }
-            break;
-
-        case 'KEY_NOT_CREATED':
-            if ($tokens[1] == $this->handle) {
-                $this->errorCode = Crypt_GPG::ERROR_KEY_NOT_CREATED;
-            }
-            break;
-
-        case 'PROGRESS':
-            // todo: at some point, support reporting status async
-            break;
-        }
-    }
-
-    // }}}
-    // {{{ getKeyFingerprint()
-
-    /**
-     * Gets the key fingerprint parsed by this handler
-     *
-     * @return array the key fingerprint parsed by this handler.
-     */
-    public function getKeyFingerprint()
-    {
-        return $this->keyFingerprint;
-    }
-
-    // }}}
-    // {{{ getErrorCode()
-
-    /**
-     * Gets the error code resulting from key gneration
-     *
-     * @return integer the error code resulting from key generation.
-     */
-    public function getErrorCode()
-    {
-        return $this->errorCode;
-    }
-
-    // }}}
-}
-
-?>
diff --git a/program/lib/Crypt/GPG/PinEntry.php b/program/lib/Crypt/GPG/PinEntry.php
deleted file mode 100644
index c097036..0000000
--- a/program/lib/Crypt/GPG/PinEntry.php
+++ /dev/null
@@ -1,875 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Contains a class implementing automatic pinentry for gpg-agent
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-
-/**
- * CLI user-interface and parser.
- */
-require_once 'Console/CommandLine.php';
-
-// {{{ class Crypt_GPG_PinEntry
-
-/**
- * A command-line dummy pinentry program for use with gpg-agent and Crypt_GPG
- *
- * This pinentry receives passphrases through en environment variable and
- * automatically enters the PIN in response to gpg-agent requests. No user-
- * interaction required.
- *
- * Thie pinentry can be run independently for testing and debugging with the
- * following syntax:
- *
- * <pre>
- * Usage:
- *   crypt-gpg-pinentry [options]
- *
- * Options:
- *   -l log, --log=log  Optional location to log pinentry activity.
- *   -v, --verbose      Sets verbosity level. Use multiples for more detail
- *                      (e.g. "-vv").
- *   -h, --help         show this help message and exit
- *   --version          show the program version and exit
- * </pre>
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @see       Crypt_GPG::getKeys()
- */
-class Crypt_GPG_PinEntry
-{
-    // {{{ class constants
-
-    /**
-     * Verbosity level for showing no output.
-     */
-    const VERBOSITY_NONE = 0;
-
-    /**
-     * Verbosity level for showing error output.
-     */
-    const VERBOSITY_ERRORS = 1;
-
-    /**
-     * Verbosity level for showing all output, including Assuan protocol
-     * messages.
-     */
-    const VERBOSITY_ALL = 2;
-
-    /**
-     * Length of buffer for reading lines from the Assuan server.
-     *
-     * PHP reads 8192 bytes. If this is set to less than 8192, PHP reads 8192
-     * and buffers the rest so we might as well just read 8192.
-     *
-     * Using values other than 8192 also triggers PHP bugs.
-     *
-     * @see http://bugs.php.net/bug.php?id=35224
-     */
-    const CHUNK_SIZE = 8192;
-
-    // }}}
-    // {{{ protected properties
-
-    /**
-     * File handle for the input stream
-     *
-     * @var resource
-     */
-    protected $stdin = null;
-
-    /**
-     * File handle for the output stream
-     *
-     * @var resource
-     */
-    protected $stdout = null;
-
-    /**
-     * File handle for the log file if a log file is used
-     *
-     * @var resource
-     */
-    protected $logFile = null;
-
-    /**
-     * Whether or not this pinentry is finished and is exiting
-     *
-     * @var boolean
-     */
-    protected $moribund = false;
-
-    /**
-     * Verbosity level
-     *
-     * One of:
-     * - {@link Crypt_GPG_PinEntry::VERBOSITY_NONE},
-     * - {@link Crypt_GPG_PinEntry::VERBOSITY_ERRORS}, or
-     * - {@link Crypt_GPG_PinEntry::VERBOSITY_ALL}
-     *
-     * @var integer
-     */
-    protected $verbosity = self::VERBOSITY_NONE;
-
-    /**
-     * The command-line interface parser for this pinentry
-     *
-     * @var Console_CommandLine
-     *
-     * @see Crypt_GPG_PinEntry::getParser()
-     */
-    protected $parser = null;
-
-    /**
-     * PINs to be entered by this pinentry
-     *
-     * An indexed array of associative arrays in the form:
-     * <code>
-     * <?php
-     *   array(
-     *     array(
-     *       'keyId'      => $keyId,
-     *       'passphrase' => $passphrase
-     *     ),
-     *     ...
-     *   );
-     * ?>
-     * </code>
-     *
-     * This array is parsed from the environment variable
-     * <kbd>PINENTRY_USER_DATA</kbd>.
-     *
-     * @var array
-     *
-     * @see Crypt_GPG_PinEntry::initPinsFromENV()
-     */
-    protected $pins = array();
-
-    /**
-     * PINs that have been tried for the current PIN
-     *
-     * This is an associative array indexed by the key identifier with
-     * values being the same as elements in the {@link Crypt_GPG_PinEntry::$pins}
-     * array.
-     *
-     * @var array
-     */
-    protected $triedPins = array();
-
-    /**
-     * The PIN currently being requested by the Assuan server
-     *
-     * If set, this is an associative array in the form:
-     * <code>
-     * <?php
-     *   array(
-     *     'keyId'  => $shortKeyId,
-     *     'userId' => $userIdString
-     *   );
-     * ?>
-     * </code>
-     *
-     * @var array|null
-     */
-    protected $currentPin = null;
-
-    // }}}
-    // {{{ __invoke()
-
-    /**
-     * Runs this pinentry
-     *
-     * @return void
-     */
-    public function __invoke()
-    {
-        $this->parser = $this->getCommandLineParser();
-
-        try {
-            $result = $this->parser->parse();
-
-            $this->setVerbosity($result->options['verbose']);
-            $this->setLogFilename($result->options['log']);
-
-            $this->connect();
-            $this->initPinsFromENV();
-
-            while (($line = fgets($this->stdin, self::CHUNK_SIZE)) !== false) {
-                $this->parseCommand(mb_substr($line, 0, -1, '8bit'));
-                if ($this->moribund) {
-                    break;
-                }
-            }
-
-            $this->disconnect();
-
-        } catch (Console_CommandLineException $e) {
-            $this->log($e->getMessage() . PHP_EOL, slf::VERBOSITY_ERRORS);
-            exit(1);
-        } catch (Exception $e) {
-            $this->log($e->getMessage() . PHP_EOL, self::VERBOSITY_ERRORS);
-            $this->log($e->getTraceAsString() . PHP_EOL, self::VERBOSITY_ERRORS);
-            exit(1);
-        }
-    }
-
-    // }}}
-    // {{{ setVerbosity()
-
-    /**
-     * Sets the verbosity of logging for this pinentry
-     *
-     * Verbosity levels are:
-     *
-     * - {@link Crypt_GPG_PinEntry::VERBOSITY_NONE}   - no logging.
-     * - {@link Crypt_GPG_PinEntry::VERBOSITY_ERRORS} - log errors only.
-     * - {@link Crypt_GPG_PinEntry::VERBOSITY_ALL}    - log everything, including
-     *                                                  the assuan protocol.
-     *
-     * @param integer $verbosity the level of verbosity of this pinentry.
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    public function setVerbosity($verbosity)
-    {
-        $this->verbosity = (integer)$verbosity;
-        return $this;
-    }
-
-    // }}}
-    // {{{ setLogFilename()
-
-    /**
-     * Sets the log file location
-     *
-     * @param string $filename the new log filename to use. If an empty string
-     *                         is used, file-based logging is disabled.
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    public function setLogFilename($filename)
-    {
-        if (is_resource($this->logFile)) {
-            fflush($this->logFile);
-            fclose($this->logFile);
-            $this->logFile = null;
-        }
-
-        if ($filename != '') {
-            if (($this->logFile = fopen($filename, 'w')) === false) {
-                $this->log(
-                    'Unable to open log file "' . $filename . '" '
-                    . 'for writing.' . PHP_EOL,
-                    self::VERBOSITY_ERRORS
-                );
-                exit(1);
-            } else {
-                stream_set_write_buffer($this->logFile, 0);
-            }
-        }
-
-        return $this;
-    }
-
-    // }}}
-    // {{{ getUIXML()
-
-    /**
-     * Gets the CLI user-interface definition for this pinentry
-     *
-     * Detects whether or not this package is PEAR-installed and appropriately
-     * locates the XML UI definition.
-     *
-     * @return string the location of the CLI user-interface definition XML.
-     */
-    protected function getUIXML()
-    {
-        $dir = '@data-dir@' . DIRECTORY_SEPARATOR
-            . '@package-name@' . DIRECTORY_SEPARATOR . 'data';
-
-        // Check if we're running directly from a git checkout or if we're
-        // running from a PEAR-packaged version.
-        if ($dir[0] == '@') {
-            $dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..'
-                . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'data';
-        }
-
-        return $dir . DIRECTORY_SEPARATOR . 'pinentry-cli.xml';
-    }
-
-    // }}}
-    // {{{ getCommandLineParser()
-
-    /**
-     * Gets the CLI parser for this pinentry
-     *
-     * @return Console_CommandLine the CLI parser for this pinentry.
-     */
-    protected function getCommandLineParser()
-    {
-        return Console_CommandLine::fromXmlFile($this->getUIXML());
-    }
-
-    // }}}
-    // {{{ log()
-
-    /**
-     * Logs a message at the specified verbosity level
-     *
-     * If a log file is used, the message is written to the log. Otherwise,
-     * the message is sent to STDERR.
-     *
-     * @param string  $data  the message to log.
-     * @param integer $level the verbosity level above which the message should
-     *                       be logged.
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function log($data, $level)
-    {
-        if ($this->verbosity >= $level) {
-            if (is_resource($this->logFile)) {
-                fwrite($this->logFile, $data);
-                fflush($this->logFile);
-            } else {
-                $this->parser->outputter->stderr($data);
-            }
-        }
-
-        return $this;
-    }
-
-    // }}}
-    // {{{ connect()
-
-    /**
-     * Connects this pinentry to the assuan server
-     *
-     * Opens I/O streams and sends initial handshake.
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function connect()
-    {
-        // Binary operations will not work on Windows with PHP < 5.2.6.
-        $rb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'r' : 'rb';
-        $wb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'w' : 'wb';
-
-        $this->stdin  = fopen('php://stdin', $rb);
-        $this->stdout = fopen('php://stdout', $wb);
-
-        if (function_exists('stream_set_read_buffer')) {
-            stream_set_read_buffer($this->stdin, 0);
-        }
-        stream_set_write_buffer($this->stdout, 0);
-
-        // initial handshake
-        $this->send($this->getOK('Crypt_GPG pinentry ready and waiting'));
-
-        return $this;
-    }
-
-    // }}}
-    // {{{ parseCommand()
-
-    /**
-     * Parses an assuan command and performs the appropriate action
-     *
-     * Documentation of the assuan commands for pinentry is limited to
-     * non-existent. Most of these commands were taken from the C source code
-     * to gpg-agent and pinentry.
-     *
-     * Additional context was provided by using strace -f when calling the
-     * gpg-agent.
-     *
-     * @param string $line the assuan command line to parse
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function parseCommand($line)
-    {
-        $this->log('<- ' . $line . PHP_EOL, self::VERBOSITY_ALL);
-
-        $parts = explode(' ', $line, 2);
-
-        $command = $parts[0];
-
-        if (count($parts) === 2) {
-            $data = $parts[1];
-        } else {
-            $data = null;
-        }
-
-        switch ($command) {
-        case 'SETDESC':
-            return $this->sendSetDescription($data);
-
-        case 'SETPROMPT':
-        case 'SETERROR':
-        case 'SETOK':
-        case 'SETNOTOK':
-        case 'SETCANCEL':
-        case 'SETQUALITYBAR':
-        case 'SETQUALITYBAR_TT':
-        case 'OPTION':
-            return $this->sendNotImplementedOK();
-
-        case 'MESSAGE':
-            return $this->sendMessage();
-
-        case 'CONFIRM':
-            return $this->sendConfirm();
-
-        case 'GETINFO':
-            return $this->sendGetInfo($data);
-
-        case 'GETPIN':
-            return $this->sendGetPin($data);
-
-        case 'RESET':
-            return $this->sendReset();
-
-        case 'BYE':
-            return $this->sendBye();
-        }
-    }
-
-    // }}}
-    // {{{ initPinsFromENV()
-
-    /**
-     * Initializes the PINs to be entered by this pinentry from the environment
-     * variable PINENTRY_USER_DATA
-     *
-     * The PINs are parsed from a JSON-encoded string.
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function initPinsFromENV()
-    {
-        if (($userData = getenv('PINENTRY_USER_DATA')) !== false) {
-            $pins = json_decode($userData, true);
-            if ($pins === null) {
-                $this->log(
-                    '-- failed to parse user data' . PHP_EOL,
-                    self::VERBOSITY_ERRORS
-                );
-            } else {
-                $this->pins = $pins;
-                $this->log(
-                    '-- got user data [not showing passphrases]' . PHP_EOL,
-                    self::VERBOSITY_ALL
-                );
-            }
-        }
-
-        return $this;
-    }
-
-    // }}}
-    // {{{ disconnect()
-
-    /**
-     * Disconnects this pinentry from the Assuan server
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function disconnect()
-    {
-        $this->log('-- disconnecting' . PHP_EOL, self::VERBOSITY_ALL);
-
-        fflush($this->stdout);
-        fclose($this->stdout);
-        fclose($this->stdin);
-
-        $this->stdin  = null;
-        $this->stdout = null;
-
-        $this->log('-- disconnected' . PHP_EOL, self::VERBOSITY_ALL);
-
-        if (is_resource($this->logFile)) {
-            fflush($this->logFile);
-            fclose($this->logFile);
-            $this->logFile = null;
-        }
-
-        return $this;
-    }
-
-    // }}}
-    // {{{ sendNotImplementedOK()
-
-    /**
-     * Sends an OK response for a not implemented feature
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendNotImplementedOK()
-    {
-        return $this->send($this->getOK());
-    }
-
-    // }}}
-    // {{{ sendSetDescription()
-
-    /**
-     * Parses the currently requested key identifier and user identifier from
-     * the description passed to this pinentry
-     *
-     * @param string $text the raw description sent from gpg-agent.
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendSetDescription($text)
-    {
-        $text = rawurldecode($text);
-        $matches = array();
-        // TODO: handle user id with quotation marks
-        $exp = '/\n"(.+)"\n.*\sID ([A-Z0-9]+),\n/mu';
-        if (preg_match($exp, $text, $matches) === 1) {
-            $userId = $matches[1];
-            $keyId  = $matches[2];
-
-            // only reset tried pins for new requested pin
-            if (   $this->currentPin === null
-                || $this->currentPin['keyId'] !== $keyId
-            ) {
-                $this->currentPin = array(
-                    'userId' => $userId,
-                    'keyId'  => $keyId
-                );
-                $this->triedPins = array();
-                $this->log(
-                    '-- looking for PIN for ' . $keyId . PHP_EOL,
-                    self::VERBOSITY_ALL
-                );
-            }
-        }
-
-        return $this->send($this->getOK());
-    }
-
-    // }}}
-    // {{{ sendConfirm()
-
-    /**
-     * Tells the assuan server the PIN entry was confirmed (not cancelled)
-     * by pressing the fake 'close' button
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendConfirm()
-    {
-        return $this->sendButtonInfo('close');
-    }
-
-    // }}}
-    // {{{ sendMessage()
-
-    /**
-     * Tells the assuan server that any requested pop-up messages were confirmed
-     * by pressing the fake 'close' button
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendMessage()
-    {
-        return $this->sendButtonInfo('close');
-    }
-
-    // }}}
-    // {{{ sendButtonInfo()
-
-    /**
-     * Sends information about pressed buttons to the assuan server
-     *
-     * This is used to fake a user-interface for this pinentry.
-     *
-     * @param string $text the button status to send.
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendButtonInfo($text)
-    {
-        return $this->send('BUTTON_INFO ' . $text . "\n");
-    }
-
-    // }}}
-    // {{{ sendGetPin()
-
-    /**
-     * Sends the PIN value for the currently requested key
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendGetPin()
-    {
-        $foundPin = '';
-
-        if (is_array($this->currentPin)) {
-            $keyIdLength = mb_strlen($this->currentPin['keyId'], '8bit');
-
-            // search for the pin
-            foreach ($this->pins as $pin) {
-                // only check pins we haven't tried
-                if (!isset($this->triedPins[$pin['keyId']])) {
-
-                    // get last X characters of key identifier to compare
-                    $keyId = mb_substr(
-                        $pin['keyId'],
-                        -$keyIdLength,
-                        mb_strlen($pin['keyId'], '8bit'),
-                        '8bit'
-                    );
-
-                    if ($keyId === $this->currentPin['keyId']) {
-                        $foundPin = $pin['passphrase'];
-                        $this->triedPins[$pin['keyId']] = $pin;
-                        break;
-                    }
-                }
-            }
-        }
-
-        return $this
-            ->send($this->getData($foundPin))
-            ->send($this->getOK());
-    }
-
-    // }}}
-    // {{{ sendGetInfo()
-
-    /**
-     * Sends information about this pinentry
-     *
-     * @param string $data the information requested by the assuan server.
-     *                     Currently only 'pid' is supported. Other requests
-     *                     return no information.
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendGetInfo($data)
-    {
-        $parts   = explode(' ', $data, 2);
-        $command = reset($parts);
-
-        switch ($command) {
-        case 'pid':
-            return $this->sendGetInfoPID();
-        default:
-            return $this->send($this->getOK());
-        }
-
-        return $this;
-    }
-    // }}}
-    // {{{ sendGetInfoPID()
-
-    /**
-     * Sends the PID of this pinentry to the assuan server
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendGetInfoPID()
-    {
-        return $this
-            ->send($this->getData(getmypid()))
-            ->send($this->getOK());
-    }
-
-    // }}}
-    // {{{ sendBye()
-
-    /**
-     * Flags this pinentry for disconnection and sends an OK response
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendBye()
-    {
-        $return = $this->send($this->getOK('closing connection'));
-        $this->moribund = true;
-        return $return;
-    }
-
-    // }}}
-    // {{{ sendReset()
-
-    /**
-     * Resets this pinentry and sends an OK response
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function sendReset()
-    {
-        $this->currentPin = null;
-        $this->triedPins = array();
-        return $this->send($this->getOK());
-    }
-
-    // }}}
-    // {{{ getOK()
-
-    /**
-     * Gets an OK response to send to the assuan server
-     *
-     * @param string $data an optional message to include with the OK response.
-     *
-     * @return string the OK response.
-     */
-    protected function getOK($data = null)
-    {
-        $return = 'OK';
-
-        if ($data) {
-            $return .= ' ' . $data;
-        }
-
-        return $return . "\n";
-    }
-
-    // }}}
-    // {{{ getData()
-
-    /**
-     * Gets data ready to send to the assuan server
-     *
-     * Data is appropriately escaped and long lines are wrapped.
-     *
-     * @param string $data the data to send to the assuan server.
-     *
-     * @return string the properly escaped, formatted data.
-     *
-     * @see  http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
-     */
-    protected function getData($data)
-    {
-        // Escape data. Only %, \n and \r need to be escaped but other
-        // values are allowed to be escaped. See
-        // http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
-        $data = rawurlencode($data);
-        $data = $this->getWordWrappedData($data, 'D');
-        return $data;
-    }
-
-    // }}}
-    // {{{ getComment()
-
-    /**
-     * Gets a comment ready to send to the assuan server
-     *
-     * @param string $data the comment to send to the assuan server.
-     *
-     * @return string the properly formatted comment.
-     *
-     * @see  http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
-     */
-    protected function getComment($data)
-    {
-        return $this->getWordWrappedData($data, '#');
-    }
-
-    // }}}
-    // {{{ getWordWrappedData()
-
-    /**
-     * Wraps strings at 1,000 bytes without splitting UTF-8 multibyte
-     * characters
-     *
-     * Each line is prepended with the specified line prefix. Wrapped lines
-     * are automatically appended with \ characters.
-     *
-     * Protocol strings are UTF-8 but maximum line length is 1,000 bytes.
-     * <kbd>mb_strcut()</kbd> is used so we can limit line length by bytes
-     * and not split characters across multiple lines.
-     *
-     * @param string $data   the data to wrap.
-     * @param string $prefix a single character to use as the line prefix. For
-     *                       example, 'D' or '#'.
-     *
-     * @return string the word-wrapped, prefixed string.
-     *
-     * @see http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
-     */
-    protected function getWordWrappedData($data, $prefix)
-    {
-        $lines = array();
-
-        do {
-            if (mb_strlen($data, '8bit') > 997) {
-                $line = $prefix . ' ' . mb_strcut($data, 0, 996, 'utf-8') . "\\\n";
-                $lines[] = $line;
-                $lineLength = mb_strlen($line, '8bit') - 1;
-                $dataLength = mb_substr($data, '8bit');
-                $data = mb_substr(
-                    $data,
-                    $lineLength,
-                    $dataLength - $lineLength,
-                    '8bit'
-                );
-            } else {
-                $lines[] = $prefix . ' ' . $data . "\n";
-                $data = '';
-            }
-        } while ($data != '');
-
-        return implode('', $lines);
-    }
-
-    // }}}
-    // {{{ send()
-
-    /**
-     * Sends raw data to the assuan server
-     *
-     * @param string $data the data to send.
-     *
-     * @return Crypt_GPG_PinEntry the current object, for fluent interface.
-     */
-    protected function send($data)
-    {
-        $this->log('-> ' . $data, self::VERBOSITY_ALL);
-        fwrite($this->stdout, $data);
-        fflush($this->stdout);
-        return $this;
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/ProcessControl.php b/program/lib/Crypt/GPG/ProcessControl.php
deleted file mode 100644
index d6dae03..0000000
--- a/program/lib/Crypt/GPG/ProcessControl.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * A class for monitoring and terminating processes
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-
-// {{{ class Crypt_GPG_ProcessControl
-
-/**
- * A class for monitoring and terminating processes by PID
- *
- * This is used to safely terminate the gpg-agent for GnuPG 2.x. This class
- * is limited in its abilities and can only check if a PID is running and
- * send a PID SIGTERM.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_ProcessControl
-{
-    // {{{ protected properties
-
-    /**
-     * The PID (process identifier) being monitored
-     *
-     * @var integer
-     */
-    protected $pid;
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new process controller from the given PID (process identifier)
-     *
-     * @param integer $pid the PID (process identifier).
-     */
-    public function __construct($pid)
-    {
-        $this->pid = $pid;
-    }
-
-    // }}}
-    // {{{ public function getPid()
-
-    /**
-     * Gets the PID (process identifier) being controlled
-     *
-     * @return integer the PID being controlled.
-     */
-    public function getPid()
-    {
-        return $this->pid;
-    }
-
-    // }}}
-    // {{{ isRunning()
-
-    /**
-     * Checks if the process is running
-     *
-     * Uses <kbd>ps</kbd> on UNIX-like systems and <kbd>tasklist</kbd> on
-     * Windows.
-     *
-     * @return boolean true if the process is running, false if not.
-     */
-    public function isRunning()
-    {
-        $running = false;
-
-        if (PHP_OS === 'WINNT') {
-            $command = 'tasklist /fo csv /nh /fi '
-                . escapeshellarg('PID eq ' . $this->pid);
-
-            $result  = exec($command);
-            $parts   = explode(',', $result);
-            $running = (count($parts) > 1 && trim($parts[1], '"') == $this->pid);
-        } else {
-            $result  = exec('ps -p ' . escapeshellarg($this->pid) . ' -o pid=');
-            $running = (trim($result) == $this->pid);
-        }
-
-        return $running;
-    }
-
-    // }}}
-    // {{{ terminate()
-
-    /**
-     * Ends the process gracefully
-     *
-     * The signal SIGTERM is sent to the process. The gpg-agent process will
-     * end gracefully upon receiving the SIGTERM signal. Upon 3 consecutive
-     * SIGTERM signals the gpg-agent will forcefully shut down.
-     *
-     * If the <kbd>posix</kbd> extension is available, <kbd>posix_kill()</kbd>
-     * is used. Otherwise <kbd>kill</kbd> is used on UNIX-like systems and
-     * <kbd>taskkill</kbd> is used in Windows.
-     *
-     * @return void
-     */
-    public function terminate()
-    {
-        if (function_exists('posix_kill')) {
-            posix_kill($this->pid, 15);
-        } elseif (PHP_OS === 'WINNT') {
-            exec('taskkill /PID ' . escapeshellarg($this->pid));
-        } else {
-            exec('kill -15 ' . escapeshellarg($this->pid));
-        }
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/Signature.php b/program/lib/Crypt/GPG/Signature.php
deleted file mode 100644
index 1d28a11..0000000
--- a/program/lib/Crypt/GPG/Signature.php
+++ /dev/null
@@ -1,427 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * A class representing GPG signatures
- *
- * This file contains a data class representing a GPG signature.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-
-/**
- * User id class definition
- */
-require_once 'Crypt/GPG/UserId.php';
-
-// {{{ class Crypt_GPG_Signature
-
-/**
- * A class for GPG signature information
- *
- * This class is used to store the results of the Crypt_GPG::verify() method.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @see       Crypt_GPG::verify()
- */
-class Crypt_GPG_Signature
-{
-    // {{{ class properties
-
-    /**
-     * A base64-encoded string containing a unique id for this signature if
-     * this signature has been verified as ok
-     *
-     * This id is used to prevent replay attacks and is not present for all
-     * types of signatures.
-     *
-     * @var string
-     */
-    private $_id = '';
-
-    /**
-     * The fingerprint of the key used to create the signature
-     *
-     * @var string
-     */
-    private $_keyFingerprint = '';
-
-    /**
-     * The id of the key used to create the signature
-     *
-     * @var string
-     */
-    private $_keyId = '';
-
-    /**
-     * The creation date of this signature
-     *
-     * This is a Unix timestamp.
-     *
-     * @var integer
-     */
-    private $_creationDate = 0;
-
-    /**
-     * The expiration date of the signature
-     *
-     * This is a Unix timestamp. If this signature does not expire, this will
-     * be zero.
-     *
-     * @var integer
-     */
-    private $_expirationDate = 0;
-
-    /**
-     * The user id associated with this signature
-     *
-     * @var Crypt_GPG_UserId
-     */
-    private $_userId = null;
-
-    /**
-     * Whether or not this signature is valid
-     *
-     * @var boolean
-     */
-    private $_isValid = false;
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new signature
-     *
-     * Signatures can be initialized from an array of named values. Available
-     * names are:
-     *
-     * - <kbd>string  id</kbd>          - the unique id of this signature.
-     * - <kbd>string  fingerprint</kbd> - the fingerprint of the key used to
-     *                                    create the signature. The fingerprint
-     *                                    should not contain formatting
-     *                                    characters.
-     * - <kbd>string  keyId</kbd>       - the id of the key used to create the
-     *                                    the signature.
-     * - <kbd>integer creation</kbd>    - the date the signature was created.
-     *                                    This is a UNIX timestamp.
-     * - <kbd>integer expiration</kbd>  - the date the signature expired. This
-     *                                    is a UNIX timestamp. If the signature
-     *                                    does not expire, use 0.
-     * - <kbd>boolean valid</kbd>       - whether or not the signature is valid.
-     * - <kbd>string  userId</kbd>      - the user id associated with the
-     *                                    signature. This may also be a
-     *                                    {@link Crypt_GPG_UserId} object.
-     *
-     * @param Crypt_GPG_Signature|array $signature optional. Either an existing
-     *        signature object, which is copied; or an array of initial values.
-     */
-    public function __construct($signature = null)
-    {
-        // copy from object
-        if ($signature instanceof Crypt_GPG_Signature) {
-            $this->_id             = $signature->_id;
-            $this->_keyFingerprint = $signature->_keyFingerprint;
-            $this->_keyId          = $signature->_keyId;
-            $this->_creationDate   = $signature->_creationDate;
-            $this->_expirationDate = $signature->_expirationDate;
-            $this->_isValid        = $signature->_isValid;
-
-            if ($signature->_userId instanceof Crypt_GPG_UserId) {
-                $this->_userId = clone $signature->_userId;
-            }
-        }
-
-        // initialize from array
-        if (is_array($signature)) {
-            if (array_key_exists('id', $signature)) {
-                $this->setId($signature['id']);
-            }
-
-            if (array_key_exists('fingerprint', $signature)) {
-                $this->setKeyFingerprint($signature['fingerprint']);
-            }
-
-            if (array_key_exists('keyId', $signature)) {
-                $this->setKeyId($signature['keyId']);
-            }
-
-            if (array_key_exists('creation', $signature)) {
-                $this->setCreationDate($signature['creation']);
-            }
-
-            if (array_key_exists('expiration', $signature)) {
-                $this->setExpirationDate($signature['expiration']);
-            }
-
-            if (array_key_exists('valid', $signature)) {
-                $this->setValid($signature['valid']);
-            }
-
-            if (array_key_exists('userId', $signature)) {
-                $userId = new Crypt_GPG_UserId($signature['userId']);
-                $this->setUserId($userId);
-            }
-        }
-    }
-
-    // }}}
-    // {{{ getId()
-
-    /**
-     * Gets the id of this signature
-     *
-     * @return string a base64-encoded string containing a unique id for this
-     *                signature. This id is used to prevent replay attacks and
-     *                is not present for all types of signatures.
-     */
-    public function getId()
-    {
-        return $this->_id;
-    }
-
-    // }}}
-    // {{{ getKeyFingerprint()
-
-    /**
-     * Gets the fingerprint of the key used to create this signature
-     *
-     * @return string the fingerprint of the key used to create this signature.
-     */
-    public function getKeyFingerprint()
-    {
-        return $this->_keyFingerprint;
-    }
-
-    // }}}
-    // {{{ getKeyId()
-
-    /**
-     * Gets the id of the key used to create this signature
-     *
-     * Whereas the fingerprint of the signing key may not always be available
-     * (for example if the signature is bad), the id should always be
-     * available.
-     *
-     * @return string the id of the key used to create this signature.
-     */
-    public function getKeyId()
-    {
-        return $this->_keyId;
-    }
-
-    // }}}
-    // {{{ getCreationDate()
-
-    /**
-     * Gets the creation date of this signature
-     *
-     * @return integer the creation date of this signature. This is a Unix
-     *                 timestamp.
-     */
-    public function getCreationDate()
-    {
-        return $this->_creationDate;
-    }
-
-    // }}}
-    // {{{ getExpirationDate()
-
-    /**
-     * Gets the expiration date of the signature
-     *
-     * @return integer the expiration date of this signature. This is a Unix
-     *                 timestamp. If this signature does not expire, this will
-     *                 be zero.
-     */
-    public function getExpirationDate()
-    {
-        return $this->_expirationDate;
-    }
-
-    // }}}
-    // {{{ getUserId()
-
-    /**
-     * Gets the user id associated with this signature
-     *
-     * @return Crypt_GPG_UserId the user id associated with this signature.
-     */
-    public function getUserId()
-    {
-        return $this->_userId;
-    }
-
-    // }}}
-    // {{{ isValid()
-
-    /**
-     * Gets whether or no this signature is valid
-     *
-     * @return boolean true if this signature is valid and false if it is not.
-     */
-    public function isValid()
-    {
-        return $this->_isValid;
-    }
-
-    // }}}
-    // {{{ setId()
-
-    /**
-     * Sets the id of this signature
-     *
-     * @param string $id a base64-encoded string containing a unique id for
-     *                   this signature.
-     *
-     * @return Crypt_GPG_Signature the current object, for fluent interface.
-     *
-     * @see Crypt_GPG_Signature::getId()
-     */
-    public function setId($id)
-    {
-        $this->_id = strval($id);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setKeyFingerprint()
-
-    /**
-     * Sets the key fingerprint of this signature
-     *
-     * @param string $fingerprint the key fingerprint of this signature. This
-     *                            is the fingerprint of the primary key used to
-     *                            create this signature.
-     *
-     * @return Crypt_GPG_Signature the current object, for fluent interface.
-     */
-    public function setKeyFingerprint($fingerprint)
-    {
-        $this->_keyFingerprint = strval($fingerprint);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setKeyId()
-
-    /**
-     * Sets the key id of this signature
-     *
-     * @param string $id the key id of this signature. This is the id of the
-     *                   primary key used to create this signature.
-     *
-     * @return Crypt_GPG_Signature the current object, for fluent interface.
-     */
-    public function setKeyId($id)
-    {
-        $this->_keyId = strval($id);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setCreationDate()
-
-    /**
-     * Sets the creation date of this signature
-     *
-     * @param integer $creationDate the creation date of this signature. This
-     *                              is a Unix timestamp.
-     *
-     * @return Crypt_GPG_Signature the current object, for fluent interface.
-     */
-    public function setCreationDate($creationDate)
-    {
-        $this->_creationDate = intval($creationDate);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setExpirationDate()
-
-    /**
-     * Sets the expiration date of this signature
-     *
-     * @param integer $expirationDate the expiration date of this signature.
-     *                                This is a Unix timestamp. Specify zero if
-     *                                this signature does not expire.
-     *
-     * @return Crypt_GPG_Signature the current object, for fluent interface.
-     */
-    public function setExpirationDate($expirationDate)
-    {
-        $this->_expirationDate = intval($expirationDate);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setUserId()
-
-    /**
-     * Sets the user id associated with this signature
-     *
-     * @param Crypt_GPG_UserId $userId the user id associated with this
-     *                                 signature.
-     *
-     * @return Crypt_GPG_Signature the current object, for fluent interface.
-     */
-    public function setUserId(Crypt_GPG_UserId $userId)
-    {
-        $this->_userId = $userId;
-        return $this;
-    }
-
-    // }}}
-    // {{{ setValid()
-
-    /**
-     * Sets whether or not this signature is valid
-     *
-     * @param boolean $isValid true if this signature is valid and false if it
-     *                         is not.
-     *
-     * @return Crypt_GPG_Signature the current object, for fluent interface.
-     */
-    public function setValid($isValid)
-    {
-        $this->_isValid = ($isValid) ? true : false;
-        return $this;
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/SubKey.php b/program/lib/Crypt/GPG/SubKey.php
deleted file mode 100644
index 59245ca..0000000
--- a/program/lib/Crypt/GPG/SubKey.php
+++ /dev/null
@@ -1,672 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Contains a class representing GPG sub-keys and constants for GPG algorithms
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @copyright 2005-2010 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-
-// {{{ class Crypt_GPG_SubKey
-
-/**
- * A class for GPG sub-key information
- *
- * This class is used to store the results of the {@link Crypt_GPG::getKeys()}
- * method. Sub-key objects are members of a {@link Crypt_GPG_Key} object.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @copyright 2005-2010 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @see       Crypt_GPG::getKeys()
- * @see       Crypt_GPG_Key::getSubKeys()
- */
-class Crypt_GPG_SubKey
-{
-    // {{{ algorithm class constants
-
-    /**
-     * RSA encryption algorithm.
-     */
-    const ALGORITHM_RSA = 1;
-
-    /**
-     * Elgamal encryption algorithm (encryption only).
-     */
-    const ALGORITHM_ELGAMAL_ENC = 16;
-
-    /**
-     * DSA encryption algorithm (sometimes called DH, sign only).
-     */
-    const ALGORITHM_DSA = 17;
-
-    /**
-     * Elgamal encryption algorithm (signage and encryption - should not be
-     * used).
-     */
-    const ALGORITHM_ELGAMAL_ENC_SGN = 20;
-
-    // }}}
-    // {{{ usage class constants
-
-    /**
-     * Key can be used to encrypt
-     */
-    const USAGE_ENCRYPT = 1;
-
-    /**
-     * Key can be used to sign
-     */
-    const USAGE_SIGN = 2;
-
-    /**
-     * Key can be used to certify other keys
-     */
-    const USAGE_CERTIFY = 4;
-
-    /**
-     * Key can be used for authentication
-     */
-    const USAGE_AUTHENTICATION = 8;
-
-    // }}}
-    // {{{ class properties
-
-    /**
-     * The id of this sub-key
-     *
-     * @var string
-     */
-    private $_id = '';
-
-    /**
-     * The algorithm used to create this sub-key
-     *
-     * The value is one of the Crypt_GPG_SubKey::ALGORITHM_* constants.
-     *
-     * @var integer
-     */
-    private $_algorithm = 0;
-
-    /**
-     * The fingerprint of this sub-key
-     *
-     * @var string
-     */
-    private $_fingerprint = '';
-
-    /**
-     * Length of this sub-key in bits
-     *
-     * @var integer
-     */
-    private $_length = 0;
-
-    /**
-     * Date this sub-key was created
-     *
-     * This is a Unix timestamp.
-     *
-     * @var integer
-     */
-    private $_creationDate = 0;
-
-    /**
-     * Date this sub-key expires
-     *
-     * This is a Unix timestamp. If this sub-key does not expire, this will be
-     * zero.
-     *
-     * @var integer
-     */
-    private $_expirationDate = 0;
-
-    /**
-     * Whether or not this sub-key can sign data
-     *
-     * @var boolean
-     */
-    private $_canSign = false;
-
-    /**
-     * Whether or not this sub-key can encrypt data
-     *
-     * @var boolean
-     */
-    private $_canEncrypt = false;
-
-    /**
-     * Whether or not the private key for this sub-key exists in the keyring
-     *
-     * @var boolean
-     */
-    private $_hasPrivate = false;
-
-    /**
-     * Whether or not this sub-key is revoked
-     *
-     * @var boolean
-     */
-    private $_isRevoked = false;
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new sub-key object
-     *
-     * Sub-keys can be initialized from an array of named values. Available
-     * names are:
-     *
-     * - <kbd>string  id</kbd>          - the key id of the sub-key.
-     * - <kbd>integer algorithm</kbd>   - the encryption algorithm of the
-     *                                    sub-key.
-     * - <kbd>string  fingerprint</kbd> - the fingerprint of the sub-key. The
-     *                                    fingerprint should not contain
-     *                                    formatting characters.
-     * - <kbd>integer length</kbd>      - the length of the sub-key in bits.
-     * - <kbd>integer creation</kbd>    - the date the sub-key was created.
-     *                                    This is a UNIX timestamp.
-     * - <kbd>integer expiration</kbd>  - the date the sub-key expires. This
-     *                                    is a UNIX timestamp. If the sub-key
-     *                                    does not expire, use 0.
-     * - <kbd>boolean canSign</kbd>     - whether or not the sub-key can be
-     *                                    used to sign data.
-     * - <kbd>boolean canEncrypt</kbd>  - whether or not the sub-key can be
-     *                                    used to encrypt data.
-     * - <kbd>boolean hasPrivate</kbd>  - whether or not the private key for
-     *                                    the sub-key exists in the keyring.
-     * - <kbd>boolean isRevoked</kbd>   - whether or not this sub-key is
-     *                                    revoked.
-     *
-     * @param Crypt_GPG_SubKey|string|array $key optional. Either an existing
-     *        sub-key object, which is copied; a sub-key string, which is
-     *        parsed; or an array of initial values.
-     */
-    public function __construct($key = null)
-    {
-        // parse from string
-        if (is_string($key)) {
-            $key = self::parse($key);
-        }
-
-        // copy from object
-        if ($key instanceof Crypt_GPG_SubKey) {
-            $this->_id             = $key->_id;
-            $this->_algorithm      = $key->_algorithm;
-            $this->_fingerprint    = $key->_fingerprint;
-            $this->_length         = $key->_length;
-            $this->_creationDate   = $key->_creationDate;
-            $this->_expirationDate = $key->_expirationDate;
-            $this->_canSign        = $key->_canSign;
-            $this->_canEncrypt     = $key->_canEncrypt;
-            $this->_hasPrivate     = $key->_hasPrivate;
-            $this->_isRevoked      = $key->_isRevoked;
-        }
-
-        // initialize from array
-        if (is_array($key)) {
-            if (array_key_exists('id', $key)) {
-                $this->setId($key['id']);
-            }
-
-            if (array_key_exists('algorithm', $key)) {
-                $this->setAlgorithm($key['algorithm']);
-            }
-
-            if (array_key_exists('fingerprint', $key)) {
-                $this->setFingerprint($key['fingerprint']);
-            }
-
-            if (array_key_exists('length', $key)) {
-                $this->setLength($key['length']);
-            }
-
-            if (array_key_exists('creation', $key)) {
-                $this->setCreationDate($key['creation']);
-            }
-
-            if (array_key_exists('expiration', $key)) {
-                $this->setExpirationDate($key['expiration']);
-            }
-
-            if (array_key_exists('canSign', $key)) {
-                $this->setCanSign($key['canSign']);
-            }
-
-            if (array_key_exists('canEncrypt', $key)) {
-                $this->setCanEncrypt($key['canEncrypt']);
-            }
-
-            if (array_key_exists('hasPrivate', $key)) {
-                $this->setHasPrivate($key['hasPrivate']);
-            }
-
-            if (array_key_exists('isRevoked', $key)) {
-                $this->setRevoked($key['isRevoked']);
-            }
-        }
-    }
-
-    // }}}
-    // {{{ getId()
-
-    /**
-     * Gets the id of this sub-key
-     *
-     * @return string the id of this sub-key.
-     */
-    public function getId()
-    {
-        return $this->_id;
-    }
-
-    // }}}
-    // {{{ getAlgorithm()
-
-    /**
-     * Gets the algorithm used by this sub-key
-     *
-     * The algorithm should be one of the Crypt_GPG_SubKey::ALGORITHM_*
-     * constants.
-     *
-     * @return integer the algorithm used by this sub-key.
-     */
-    public function getAlgorithm()
-    {
-        return $this->_algorithm;
-    }
-
-    // }}}
-    // {{{ getCreationDate()
-
-    /**
-     * Gets the creation date of this sub-key
-     *
-     * This is a Unix timestamp.
-     *
-     * @return integer the creation date of this sub-key.
-     */
-    public function getCreationDate()
-    {
-        return $this->_creationDate;
-    }
-
-    // }}}
-    // {{{ getExpirationDate()
-
-    /**
-     * Gets the date this sub-key expires
-     *
-     * This is a Unix timestamp. If this sub-key does not expire, this will be
-     * zero.
-     *
-     * @return integer the date this sub-key expires.
-     */
-    public function getExpirationDate()
-    {
-        return $this->_expirationDate;
-    }
-
-    // }}}
-    // {{{ getFingerprint()
-
-    /**
-     * Gets the fingerprint of this sub-key
-     *
-     * @return string the fingerprint of this sub-key.
-     */
-    public function getFingerprint()
-    {
-        return $this->_fingerprint;
-    }
-
-    // }}}
-    // {{{ getLength()
-
-    /**
-     * Gets the length of this sub-key in bits
-     *
-     * @return integer the length of this sub-key in bits.
-     */
-    public function getLength()
-    {
-        return $this->_length;
-    }
-
-    // }}}
-    // {{{ canSign()
-
-    /**
-     * Gets whether or not this sub-key can sign data
-     *
-     * @return boolean true if this sub-key can sign data and false if this
-     *                 sub-key can not sign data.
-     */
-    public function canSign()
-    {
-        return $this->_canSign;
-    }
-
-    // }}}
-    // {{{ canEncrypt()
-
-    /**
-     * Gets whether or not this sub-key can encrypt data
-     *
-     * @return boolean true if this sub-key can encrypt data and false if this
-     *                 sub-key can not encrypt data.
-     */
-    public function canEncrypt()
-    {
-        return $this->_canEncrypt;
-    }
-
-    // }}}
-    // {{{ hasPrivate()
-
-    /**
-     * Gets whether or not the private key for this sub-key exists in the
-     * keyring
-     *
-     * @return boolean true the private key for this sub-key exists in the
-     *                 keyring and false if it does not.
-     */
-    public function hasPrivate()
-    {
-        return $this->_hasPrivate;
-    }
-
-    // }}}
-    // {{{ isRevoked()
-
-    /**
-     * Gets whether or not this sub-key is revoked
-     *
-     * @return boolean true if this sub-key is revoked and false if it is not.
-     */
-    public function isRevoked()
-    {
-        return $this->_isRevoked;
-    }
-
-    // }}}
-    // {{{ setCreationDate()
-
-    /**
-     * Sets the creation date of this sub-key
-     *
-     * The creation date is a Unix timestamp.
-     *
-     * @param integer $creationDate the creation date of this sub-key.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setCreationDate($creationDate)
-    {
-        $this->_creationDate = intval($creationDate);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setExpirationDate()
-
-    /**
-     * Sets the expiration date of this sub-key
-     *
-     * The expiration date is a Unix timestamp. Specify zero if this sub-key
-     * does not expire.
-     *
-     * @param integer $expirationDate the expiration date of this sub-key.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setExpirationDate($expirationDate)
-    {
-        $this->_expirationDate = intval($expirationDate);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setId()
-
-    /**
-     * Sets the id of this sub-key
-     *
-     * @param string $id the id of this sub-key.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setId($id)
-    {
-        $this->_id = strval($id);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setAlgorithm()
-
-    /**
-     * Sets the algorithm used by this sub-key
-     *
-     * @param integer $algorithm the algorithm used by this sub-key.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setAlgorithm($algorithm)
-    {
-        $this->_algorithm = intval($algorithm);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setFingerprint()
-
-    /**
-     * Sets the fingerprint of this sub-key
-     *
-     * @param string $fingerprint the fingerprint of this sub-key.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setFingerprint($fingerprint)
-    {
-        $this->_fingerprint = strval($fingerprint);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setLength()
-
-    /**
-     * Sets the length of this sub-key in bits
-     *
-     * @param integer $length the length of this sub-key in bits.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setLength($length)
-    {
-        $this->_length = intval($length);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setCanSign()
-
-    /**
-     * Sets whether of not this sub-key can sign data
-     *
-     * @param boolean $canSign true if this sub-key can sign data and false if
-     *                         it can not.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setCanSign($canSign)
-    {
-        $this->_canSign = ($canSign) ? true : false;
-        return $this;
-    }
-
-    // }}}
-    // {{{ setCanEncrypt()
-
-    /**
-     * Sets whether of not this sub-key can encrypt data
-     *
-     * @param boolean $canEncrypt true if this sub-key can encrypt data and
-     *                            false if it can not.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setCanEncrypt($canEncrypt)
-    {
-        $this->_canEncrypt = ($canEncrypt) ? true : false;
-        return $this;
-    }
-
-    // }}}
-    // {{{ setHasPrivate()
-
-    /**
-     * Sets whether of not the private key for this sub-key exists in the
-     * keyring
-     *
-     * @param boolean $hasPrivate true if the private key for this sub-key
-     *                            exists in the keyring and false if it does
-     *                            not.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setHasPrivate($hasPrivate)
-    {
-        $this->_hasPrivate = ($hasPrivate) ? true : false;
-        return $this;
-    }
-
-    // }}}
-    // {{{ setRevoked()
-
-    /**
-     * Sets whether or not this sub-key is revoked
-     *
-     * @param boolean $isRevoked whether or not this sub-key is revoked.
-     *
-     * @return Crypt_GPG_SubKey the current object, for fluent interface.
-     */
-    public function setRevoked($isRevoked)
-    {
-        $this->_isRevoked = ($isRevoked) ? true : false;
-        return $this;
-    }
-
-    // }}}
-    // {{{ parse()
-
-    /**
-     * Parses a sub-key object from a sub-key string
-     *
-     * See <b>doc/DETAILS</b> in the
-     * {@link http://www.gnupg.org/download/ GPG distribution} for information
-     * on how the sub-key string is parsed.
-     *
-     * @param string $string the string containing the sub-key.
-     *
-     * @return Crypt_GPG_SubKey the sub-key object parsed from the string.
-     */
-    public static function parse($string)
-    {
-        $tokens = explode(':', $string);
-
-        $subKey = new Crypt_GPG_SubKey();
-
-        $subKey->setId($tokens[4]);
-        $subKey->setLength($tokens[2]);
-        $subKey->setAlgorithm($tokens[3]);
-        $subKey->setCreationDate(self::_parseDate($tokens[5]));
-        $subKey->setExpirationDate(self::_parseDate($tokens[6]));
-
-        if ($tokens[1] == 'r') {
-            $subKey->setRevoked(true);
-        }
-
-        if (strpos($tokens[11], 's') !== false) {
-            $subKey->setCanSign(true);
-        }
-
-        if (strpos($tokens[11], 'e') !== false) {
-            $subKey->setCanEncrypt(true);
-        }
-
-        return $subKey;
-    }
-
-    // }}}
-    // {{{ _parseDate()
-
-    /**
-     * Parses a date string as provided by GPG into a UNIX timestamp
-     *
-     * @param string $string the date string.
-     *
-     * @return integer the UNIX timestamp corresponding to the provided date
-     *                 string.
-     */
-    private static function _parseDate($string)
-    {
-        if ($string == '') {
-            $timestamp = 0;
-        } else {
-            // all times are in UTC according to GPG documentation
-            $timeZone = new DateTimeZone('UTC');
-
-            if (strpos($string, 'T') === false) {
-                // interpret as UNIX timestamp
-                $string = '@' . $string;
-            }
-
-            $date = new DateTime($string, $timeZone);
-
-            // convert to UNIX timestamp
-            $timestamp = intval($date->format('U'));
-        }
-
-        return $timestamp;
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/UserId.php b/program/lib/Crypt/GPG/UserId.php
deleted file mode 100644
index a367bce..0000000
--- a/program/lib/Crypt/GPG/UserId.php
+++ /dev/null
@@ -1,373 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Contains a data class representing a GPG user id
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2010 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- */
-
-// {{{ class Crypt_GPG_UserId
-
-/**
- * A class for GPG user id information
- *
- * This class is used to store the results of the {@link Crypt_GPG::getKeys()}
- * method. User id objects are members of a {@link Crypt_GPG_Key} object.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2010 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @see       Crypt_GPG::getKeys()
- * @see       Crypt_GPG_Key::getUserIds()
- */
-class Crypt_GPG_UserId
-{
-    // {{{ class properties
-
-    /**
-     * The name field of this user id
-     *
-     * @var string
-     */
-    private $_name = '';
-
-    /**
-     * The comment field of this user id
-     *
-     * @var string
-     */
-    private $_comment = '';
-
-    /**
-     * The email field of this user id
-     *
-     * @var string
-     */
-    private $_email = '';
-
-    /**
-     * Whether or not this user id is revoked
-     *
-     * @var boolean
-     */
-    private $_isRevoked = false;
-
-    /**
-     * Whether or not this user id is valid
-     *
-     * @var boolean
-     */
-    private $_isValid = true;
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new user id
-     *
-     * User ids can be initialized from an array of named values. Available
-     * names are:
-     *
-     * - <kbd>string  name</kbd>    - the name field of the user id.
-     * - <kbd>string  comment</kbd> - the comment field of the user id.
-     * - <kbd>string  email</kbd>   - the email field of the user id.
-     * - <kbd>boolean valid</kbd>   - whether or not the user id is valid.
-     * - <kbd>boolean revoked</kbd> - whether or not the user id is revoked.
-     *
-     * @param Crypt_GPG_UserId|string|array $userId optional. Either an
-     *        existing user id object, which is copied; a user id string, which
-     *        is parsed; or an array of initial values.
-     */
-    public function __construct($userId = null)
-    {
-        // parse from string
-        if (is_string($userId)) {
-            $userId = self::parse($userId);
-        }
-
-        // copy from object
-        if ($userId instanceof Crypt_GPG_UserId) {
-            $this->_name      = $userId->_name;
-            $this->_comment   = $userId->_comment;
-            $this->_email     = $userId->_email;
-            $this->_isRevoked = $userId->_isRevoked;
-            $this->_isValid   = $userId->_isValid;
-        }
-
-        // initialize from array
-        if (is_array($userId)) {
-            if (array_key_exists('name', $userId)) {
-                $this->setName($userId['name']);
-            }
-
-            if (array_key_exists('comment', $userId)) {
-                $this->setComment($userId['comment']);
-            }
-
-            if (array_key_exists('email', $userId)) {
-                $this->setEmail($userId['email']);
-            }
-
-            if (array_key_exists('revoked', $userId)) {
-                $this->setRevoked($userId['revoked']);
-            }
-
-            if (array_key_exists('valid', $userId)) {
-                $this->setValid($userId['valid']);
-            }
-        }
-    }
-
-    // }}}
-    // {{{ getName()
-
-    /**
-     * Gets the name field of this user id
-     *
-     * @return string the name field of this user id.
-     */
-    public function getName()
-    {
-        return $this->_name;
-    }
-
-    // }}}
-    // {{{ getComment()
-
-    /**
-     * Gets the comments field of this user id
-     *
-     * @return string the comments field of this user id.
-     */
-    public function getComment()
-    {
-        return $this->_comment;
-    }
-
-    // }}}
-    // {{{ getEmail()
-
-    /**
-     * Gets the email field of this user id
-     *
-     * @return string the email field of this user id.
-     */
-    public function getEmail()
-    {
-        return $this->_email;
-    }
-
-    // }}}
-    // {{{ isRevoked()
-
-    /**
-     * Gets whether or not this user id is revoked
-     *
-     * @return boolean true if this user id is revoked and false if it is not.
-     */
-    public function isRevoked()
-    {
-        return $this->_isRevoked;
-    }
-
-    // }}}
-    // {{{ isValid()
-
-    /**
-     * Gets whether or not this user id is valid
-     *
-     * @return boolean true if this user id is valid and false if it is not.
-     */
-    public function isValid()
-    {
-        return $this->_isValid;
-    }
-
-    // }}}
-    // {{{ __toString()
-
-    /**
-     * Gets a string representation of this user id
-     *
-     * The string is formatted as:
-     * <b><kbd>name (comment) <email-address></kbd></b>.
-     *
-     * @return string a string representation of this user id.
-     */
-    public function __toString()
-    {
-        $components = array();
-
-        if (strlen($this->_name) > 0) {
-            $components[] = $this->_name;
-        }
-
-        if (strlen($this->_comment) > 0) {
-            $components[] = '(' . $this->_comment . ')';
-        }
-
-        if (strlen($this->_email) > 0) {
-            $components[] = '<' . $this->_email. '>';
-        }
-
-        return implode(' ', $components);
-    }
-
-    // }}}
-    // {{{ setName()
-
-    /**
-     * Sets the name field of this user id
-     *
-     * @param string $name the name field of this user id.
-     *
-     * @return Crypt_GPG_UserId the current object, for fluent interface.
-     */
-    public function setName($name)
-    {
-        $this->_name = strval($name);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setComment()
-
-    /**
-     * Sets the comment field of this user id
-     *
-     * @param string $comment the comment field of this user id.
-     *
-     * @return Crypt_GPG_UserId the current object, for fluent interface.
-     */
-    public function setComment($comment)
-    {
-        $this->_comment = strval($comment);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setEmail()
-
-    /**
-     * Sets the email field of this user id
-     *
-     * @param string $email the email field of this user id.
-     *
-     * @return Crypt_GPG_UserId the current object, for fluent interface.
-     */
-    public function setEmail($email)
-    {
-        $this->_email = strval($email);
-        return $this;
-    }
-
-    // }}}
-    // {{{ setRevoked()
-
-    /**
-     * Sets whether or not this user id is revoked
-     *
-     * @param boolean $isRevoked whether or not this user id is revoked.
-     *
-     * @return Crypt_GPG_UserId the current object, for fluent interface.
-     */
-    public function setRevoked($isRevoked)
-    {
-        $this->_isRevoked = ($isRevoked) ? true : false;
-        return $this;
-    }
-
-    // }}}
-    // {{{ setValid()
-
-    /**
-     * Sets whether or not this user id is valid
-     *
-     * @param boolean $isValid whether or not this user id is valid.
-     *
-     * @return Crypt_GPG_UserId the current object, for fluent interface.
-     */
-    public function setValid($isValid)
-    {
-        $this->_isValid = ($isValid) ? true : false;
-        return $this;
-    }
-
-    // }}}
-    // {{{ parse()
-
-    /**
-     * Parses a user id object from a user id string
-     *
-     * A user id string is of the form:
-     * <b><kbd>name (comment) <email-address></kbd></b> with the <i>comment</i>
-     * and <i>email-address</i> fields being optional.
-     *
-     * @param string $string the user id string to parse.
-     *
-     * @return Crypt_GPG_UserId the user id object parsed from the string.
-     */
-    public static function parse($string)
-    {
-        $userId  = new Crypt_GPG_UserId();
-        $email   = '';
-        $comment = '';
-
-        // get email address from end of string if it exists
-        $matches = array();
-        if (preg_match('/^(.+?) <([^>]+)>$/', $string, $matches) === 1) {
-            $string = $matches[1];
-            $email  = $matches[2];
-        }
-
-        // get comment from end of string if it exists
-        $matches = array();
-        if (preg_match('/^(.+?) \(([^\)]+)\)$/', $string, $matches) === 1) {
-            $string  = $matches[1];
-            $comment = $matches[2];
-        }
-
-        $name = $string;
-
-        $userId->setName($name);
-        $userId->setComment($comment);
-        $userId->setEmail($email);
-
-        return $userId;
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/VerifyStatusHandler.php b/program/lib/Crypt/GPG/VerifyStatusHandler.php
deleted file mode 100644
index 8904be1..0000000
--- a/program/lib/Crypt/GPG/VerifyStatusHandler.php
+++ /dev/null
@@ -1,216 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an object that handles GPG's status output for the verify
- * operation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-
-/**
- * Signature object class definition
- */
-require_once 'Crypt/GPG/Signature.php';
-
-/**
- * Status line handler for the verify operation
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * This class is responsible for building signature objects that are returned
- * by the {@link Crypt_GPG::verify()} method. See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on GPG's status output for the verify operation.
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2008 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-class Crypt_GPG_VerifyStatusHandler
-{
-    // {{{ protected properties
-
-    /**
-     * The current signature id
-     *
-     * Ths signature id is emitted by GPG before the new signature line so we
-     * must remember it temporarily.
-     *
-     * @var string
-     */
-    protected $signatureId = '';
-
-    /**
-     * List of parsed {@link Crypt_GPG_Signature} objects
-     *
-     * @var array
-     */
-    protected $signatures = array();
-
-    /**
-     * Array index of the current signature
-     *
-     * @var integer
-     */
-    protected $index = -1;
-
-    // }}}
-    // {{{ handle()
-
-    /**
-     * Handles a status line
-     *
-     * @param string $line the status line to handle.
-     *
-     * @return void
-     */
-    public function handle($line)
-    {
-        $tokens = explode(' ', $line);
-        switch ($tokens[0]) {
-        case 'GOODSIG':
-        case 'EXPSIG':
-        case 'EXPKEYSIG':
-        case 'REVKEYSIG':
-        case 'BADSIG':
-            $signature = new Crypt_GPG_Signature();
-
-            // if there was a signature id, set it on the new signature
-            if ($this->signatureId != '') {
-                $signature->setId($this->signatureId);
-                $this->signatureId = '';
-            }
-
-            // Detect whether fingerprint or key id was returned and set
-            // signature values appropriately. Key ids are strings of either
-            // 16 or 8 hexadecimal characters. Fingerprints are strings of 40
-            // hexadecimal characters. The key id is the last 16 characters of
-            // the key fingerprint.
-            if (strlen($tokens[1]) > 16) {
-                $signature->setKeyFingerprint($tokens[1]);
-                $signature->setKeyId(substr($tokens[1], -16));
-            } else {
-                $signature->setKeyId($tokens[1]);
-            }
-
-            // get user id string
-            $string = implode(' ', array_splice($tokens, 2));
-            $string = rawurldecode($string);
-
-            $signature->setUserId(Crypt_GPG_UserId::parse($string));
-
-            $this->index++;
-            $this->signatures[$this->index] = $signature;
-            break;
-
-        case 'ERRSIG':
-            $signature = new Crypt_GPG_Signature();
-
-            // if there was a signature id, set it on the new signature
-            if ($this->signatureId != '') {
-                $signature->setId($this->signatureId);
-                $this->signatureId = '';
-            }
-
-            // Detect whether fingerprint or key id was returned and set
-            // signature values appropriately. Key ids are strings of either
-            // 16 or 8 hexadecimal characters. Fingerprints are strings of 40
-            // hexadecimal characters. The key id is the last 16 characters of
-            // the key fingerprint.
-            if (strlen($tokens[1]) > 16) {
-                $signature->setKeyFingerprint($tokens[1]);
-                $signature->setKeyId(substr($tokens[1], -16));
-            } else {
-                $signature->setKeyId($tokens[1]);
-            }
-
-            $this->index++;
-            $this->signatures[$this->index] = $signature;
-
-            break;
-
-        case 'VALIDSIG':
-            if (!array_key_exists($this->index, $this->signatures)) {
-                break;
-            }
-
-            $signature = $this->signatures[$this->index];
-
-            $signature->setValid(true);
-            $signature->setKeyFingerprint($tokens[1]);
-
-            if (strpos($tokens[3], 'T') === false) {
-                $signature->setCreationDate($tokens[3]);
-            } else {
-                $signature->setCreationDate(strtotime($tokens[3]));
-            }
-
-            if (array_key_exists(4, $tokens)) {
-                if (strpos($tokens[4], 'T') === false) {
-                    $signature->setExpirationDate($tokens[4]);
-                } else {
-                    $signature->setExpirationDate(strtotime($tokens[4]));
-                }
-            }
-
-            break;
-
-        case 'SIG_ID':
-            // note: signature id comes before new signature line and may not
-            // exist for some signature types
-            $this->signatureId = $tokens[1];
-            break;
-        }
-    }
-
-    // }}}
-    // {{{ getSignatures()
-
-    /**
-     * Gets the {@link Crypt_GPG_Signature} objects parsed by this handler
-     *
-     * @return array the signature objects parsed by this handler.
-     */
-    public function getSignatures()
-    {
-        return $this->signatures;
-    }
-
-    // }}}
-}
-
-?>
diff --git a/program/lib/Crypt/GPGAbstract.php b/program/lib/Crypt/GPGAbstract.php
deleted file mode 100644
index 2141339..0000000
--- a/program/lib/Crypt/GPGAbstract.php
+++ /dev/null
@@ -1,508 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This package provides an object oriented interface to GNU Privacy
- * Guard (GPG). It requires the GPG executable to be on the system.
- *
- * Though GPG can support symmetric-key cryptography, this package is intended
- * only to facilitate public-key cryptography.
- *
- * This file contains an abstract implementation of a user of the
- * {@link Crypt_GPG_Engine} class.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version   CVS: $Id: GPG.php 305428 2010-11-17 02:47:56Z gauthierm $
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://pear.php.net/manual/en/package.encryption.crypt-gpg.php
- * @link      http://www.gnupg.org/
- */
-
-/**
- * GPG key class
- */
-require_once 'Crypt/GPG/Key.php';
-
-/**
- * GPG sub-key class
- */
-require_once 'Crypt/GPG/SubKey.php';
-
-/**
- * GPG user id class
- */
-require_once 'Crypt/GPG/UserId.php';
-
-/**
- * GPG process and I/O engine class
- */
-require_once 'Crypt/GPG/Engine.php';
-
-/**
- * GPG exception classes
- */
-require_once 'Crypt/GPG/Exceptions.php';
-
-// {{{ class Crypt_GPGAbstract
-
-/**
- * Base class for implementing a user of {@link Crypt_GPG_Engine}
- *
- * @category  Encryption
- * @package   Crypt_GPG
- * @author    Nathan Fredrickson <nathan@silverorange.com>
- * @author    Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link      http://pear.php.net/package/Crypt_GPG
- * @link      http://www.gnupg.org/
- */
-abstract class Crypt_GPGAbstract
-{
-    // {{{ class error constants
-
-    /**
-     * Error code returned when there is no error.
-     */
-    const ERROR_NONE = 0;
-
-    /**
-     * Error code returned when an unknown or unhandled error occurs.
-     */
-    const ERROR_UNKNOWN = 1;
-
-    /**
-     * Error code returned when a bad passphrase is used.
-     */
-    const ERROR_BAD_PASSPHRASE = 2;
-
-    /**
-     * Error code returned when a required passphrase is missing.
-     */
-    const ERROR_MISSING_PASSPHRASE = 3;
-
-    /**
-     * Error code returned when a key that is already in the keyring is
-     * imported.
-     */
-    const ERROR_DUPLICATE_KEY = 4;
-
-    /**
-     * Error code returned the required data is missing for an operation.
-     *
-     * This could be missing key data, missing encrypted data or missing
-     * signature data.
-     */
-    const ERROR_NO_DATA = 5;
-
-    /**
-     * Error code returned when an unsigned key is used.
-     */
-    const ERROR_UNSIGNED_KEY = 6;
-
-    /**
-     * Error code returned when a key that is not self-signed is used.
-     */
-    const ERROR_NOT_SELF_SIGNED = 7;
-
-    /**
-     * Error code returned when a public or private key that is not in the
-     * keyring is used.
-     */
-    const ERROR_KEY_NOT_FOUND = 8;
-
-    /**
-     * Error code returned when an attempt to delete public key having a
-     * private key is made.
-     */
-    const ERROR_DELETE_PRIVATE_KEY = 9;
-
-    /**
-     * Error code returned when one or more bad signatures are detected.
-     */
-    const ERROR_BAD_SIGNATURE = 10;
-
-    /**
-     * Error code returned when there is a problem reading GnuPG data files.
-     */
-    const ERROR_FILE_PERMISSIONS = 11;
-
-    /**
-     * Error code returned when a key could not be created.
-     */
-    const ERROR_KEY_NOT_CREATED = 12;
-
-    /**
-     * Error code returned when bad key parameters are used during key
-     * generation.
-     */
-    const ERROR_BAD_KEY_PARAMS = 13;
-
-    // }}}
-    // {{{ other class constants
-
-    /**
-     * URI at which package bugs may be reported.
-     */
-    const BUG_URI = 'http://pear.php.net/bugs/report.php?package=Crypt_GPG';
-
-    // }}}
-    // {{{ protected class properties
-
-    /**
-     * Engine used to control the GPG subprocess
-     *
-     * @var Crypt_GPG_Engine
-     *
-     * @see Crypt_GPGAbstract::setEngine()
-     */
-    protected $engine = null;
-
-    // }}}
-    // {{{ __construct()
-
-    /**
-     * Creates a new GPG object
-     *
-     * Available options are:
-     *
-     * - <kbd>string  homedir</kbd>        - the directory where the GPG
-     *                                       keyring files are stored. If not
-     *                                       specified, Crypt_GPG uses the
-     *                                       default of <kbd>~/.gnupg</kbd>.
-     * - <kbd>string  publicKeyring</kbd>  - the file path of the public
-     *                                       keyring. Use this if the public
-     *                                       keyring is not in the homedir, or
-     *                                       if the keyring is in a directory
-     *                                       not writable by the process
-     *                                       invoking GPG (like Apache). Then
-     *                                       you can specify the path to the
-     *                                       keyring with this option
-     *                                       (/foo/bar/pubring.gpg), and specify
-     *                                       a writable directory (like /tmp)
-     *                                       using the <i>homedir</i> option.
-     * - <kbd>string  privateKeyring</kbd> - the file path of the private
-     *                                       keyring. Use this if the private
-     *                                       keyring is not in the homedir, or
-     *                                       if the keyring is in a directory
-     *                                       not writable by the process
-     *                                       invoking GPG (like Apache). Then
-     *                                       you can specify the path to the
-     *                                       keyring with this option
-     *                                       (/foo/bar/secring.gpg), and specify
-     *                                       a writable directory (like /tmp)
-     *                                       using the <i>homedir</i> option.
-     * - <kbd>string  trustDb</kbd>        - the file path of the web-of-trust
-     *                                       database. Use this if the trust
-     *                                       database is not in the homedir, or
-     *                                       if the database is in a directory
-     *                                       not writable by the process
-     *                                       invoking GPG (like Apache). Then
-     *                                       you can specify the path to the
-     *                                       trust database with this option
-     *                                       (/foo/bar/trustdb.gpg), and specify
-     *                                       a writable directory (like /tmp)
-     *                                       using the <i>homedir</i> option.
-     * - <kbd>string  binary</kbd>         - the location of the GPG binary. If
-     *                                       not specified, the driver attempts
-     *                                       to auto-detect the GPG binary
-     *                                       location using a list of known
-     *                                       default locations for the current
-     *                                       operating system. The option
-     *                                       <kbd>gpgBinary</kbd> is a
-     *                                       deprecated alias for this option.
-     * - <kbd>string  agent</kbd>          - the location of the GnuPG agent
-     *                                       binary. The gpg-agent is only
-     *                                       used for GnuPG 2.x. If not
-     *                                       specified, the engine attempts
-     *                                       to auto-detect the gpg-agent
-     *                                       binary location using a list of
-     *                                       know default locations for the
-     *                                       current operating system.
-     * - <kbd>boolean debug</kbd>          - whether or not to use debug mode.
-     *                                       When debug mode is on, all
-     *                                       communication to and from the GPG
-     *                                       subprocess is logged. This can be
-     *
-     * @param array $options optional. An array of options used to create the
-     *                       GPG object. All options are optional and are
-     *                       represented as key-value pairs.
-     *
-     * @throws Crypt_GPG_FileException if the <kbd>homedir</kbd> does not exist
-     *         and cannot be created. This can happen if <kbd>homedir</kbd> is
-     *         not specified, Crypt_GPG is run as the web user, and the web
-     *         user has no home directory. This exception is also thrown if any
-     *         of the options <kbd>publicKeyring</kbd>,
-     *         <kbd>privateKeyring</kbd> or <kbd>trustDb</kbd> options are
-     *         specified but the files do not exist or are are not readable.
-     *         This can happen if the user running the Crypt_GPG process (for
-     *         example, the Apache user) does not have permission to read the
-     *         files.
-     *
-     * @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
-     *         if no <kbd>binary</kbd> is provided and no suitable binary could
-     *         be found.
-     *
-     * @throws PEAR_Exception if the provided <kbd>agent</kbd> is invalid, or
-     *         if no <kbd>agent</kbd> is provided and no suitable gpg-agent
-     *         cound be found.
-     */
-    public function __construct(array $options = array())
-    {
-        $this->setEngine(new Crypt_GPG_Engine($options));
-    }
-
-    // }}}
-    // {{{ setEngine()
-
-    /**
-     * Sets the I/O engine to use for GnuPG operations
-     *
-     * Normally this method does not need to be used. It provides a means for
-     * dependency injection.
-     *
-     * @param Crypt_GPG_Engine $engine the engine to use.
-     *
-     * @return Crypt_GPGAbstract the current object, for fluent interface.
-     */
-    public function setEngine(Crypt_GPG_Engine $engine)
-    {
-        $this->engine = $engine;
-        return $this;
-    }
-
-    // }}}
-    // {{{ _getKeys()
-
-    /**
-     * Gets the available keys in the keyring
-     *
-     * Calls GPG with the <kbd>--list-keys</kbd> command and grabs keys. See
-     * the first section of <b>doc/DETAILS</b> in the
-     * {@link http://www.gnupg.org/download/ GPG package} for a detailed
-     * description of how the GPG command output is parsed.
-     *
-     * @param string $keyId optional. Only keys with that match the specified
-     *                      pattern are returned. The pattern may be part of
-     *                      a user id, a key id or a key fingerprint. If not
-     *                      specified, all keys are returned.
-     *
-     * @return array an array of {@link Crypt_GPG_Key} objects. If no keys
-     *               match the specified <kbd>$keyId</kbd> an empty array is
-     *               returned.
-     *
-     * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
-     *         Use the <kbd>debug</kbd> option and file a bug report if these
-     *         exceptions occur.
-     *
-     * @see Crypt_GPG_Key
-     */
-    protected function _getKeys($keyId = '')
-    {
-        // get private key fingerprints
-        if ($keyId == '') {
-            $operation = '--list-secret-keys';
-        } else {
-            $operation = '--list-secret-keys ' . escapeshellarg($keyId);
-        }
-
-        // According to The file 'doc/DETAILS' in the GnuPG distribution, using
-        // double '--with-fingerprint' also prints the fingerprint for subkeys.
-        $arguments = array(
-            '--with-colons',
-            '--with-fingerprint',
-            '--with-fingerprint',
-            '--fixed-list-mode'
-        );
-
-        $output = '';
-
-        $this->engine->reset();
-        $this->engine->setOutput($output);
-        $this->engine->setOperation($operation, $arguments);
-        $this->engine->run();
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-        case self::ERROR_KEY_NOT_FOUND:
-            // ignore not found key errors
-            break;
-        case self::ERROR_FILE_PERMISSIONS:
-            $filename = $this->engine->getErrorFilename();
-            if ($filename) {
-                throw new Crypt_GPG_FileException(
-                    sprintf(
-                        'Error reading GnuPG data file \'%s\'. Check to make ' .
-                        'sure it is readable by the current user.',
-                        $filename
-                    ),
-                    $code,
-                    $filename
-                );
-            }
-            throw new Crypt_GPG_FileException(
-                'Error reading GnuPG data file. Check to make GnuPG data ' .
-                'files are readable by the current user.',
-                $code
-            );
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error getting keys. Please use the \'debug\' option ' .
-                'when creating the Crypt_GPG object, and file a bug report ' .
-                'at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        $privateKeyFingerprints = array();
-
-        $lines = explode(PHP_EOL, $output);
-        foreach ($lines as $line) {
-            $lineExp = explode(':', $line);
-            if ($lineExp[0] == 'fpr') {
-                $privateKeyFingerprints[] = $lineExp[9];
-            }
-        }
-
-        // get public keys
-        if ($keyId == '') {
-            $operation = '--list-public-keys';
-        } else {
-            $operation = '--list-public-keys ' . escapeshellarg($keyId);
-        }
-
-        $output = '';
-
-        $this->engine->reset();
-        $this->engine->setOutput($output);
-        $this->engine->setOperation($operation, $arguments);
-        $this->engine->run();
-
-        $code = $this->engine->getErrorCode();
-
-        switch ($code) {
-        case self::ERROR_NONE:
-        case self::ERROR_KEY_NOT_FOUND:
-            // ignore not found key errors
-            break;
-        case self::ERROR_FILE_PERMISSIONS:
-            $filename = $this->engine->getErrorFilename();
-            if ($filename) {
-                throw new Crypt_GPG_FileException(
-                    sprintf(
-                        'Error reading GnuPG data file \'%s\'. Check to make ' .
-                        'sure it is readable by the current user.',
-                        $filename
-                    ),
-                    $code,
-                    $filename
-                );
-            }
-            throw new Crypt_GPG_FileException(
-                'Error reading GnuPG data file. Check to make GnuPG data ' .
-                'files are readable by the current user.',
-                $code
-            );
-        default:
-            throw new Crypt_GPG_Exception(
-                'Unknown error getting keys. Please use the \'debug\' option ' .
-                'when creating the Crypt_GPG object, and file a bug report ' .
-                'at ' . self::BUG_URI,
-                $code
-            );
-        }
-
-        $keys = array();
-
-        $key    = null; // current key
-        $subKey = null; // current sub-key
-
-        $lines = explode(PHP_EOL, $output);
-        foreach ($lines as $line) {
-            $lineExp = explode(':', $line);
-
-            if ($lineExp[0] == 'pub') {
-
-                // new primary key means last key should be added to the array
-                if ($key !== null) {
-                    $keys[] = $key;
-                }
-
-                $key = new Crypt_GPG_Key();
-
-                $subKey = Crypt_GPG_SubKey::parse($line);
-                $key->addSubKey($subKey);
-
-            } elseif ($lineExp[0] == 'sub') {
-
-                $subKey = Crypt_GPG_SubKey::parse($line);
-                $key->addSubKey($subKey);
-
-            } elseif ($lineExp[0] == 'fpr') {
-
-                $fingerprint = $lineExp[9];
-
-                // set current sub-key fingerprint
-                $subKey->setFingerprint($fingerprint);
-
-                // if private key exists, set has private to true
-                if (in_array($fingerprint, $privateKeyFingerprints)) {
-                    $subKey->setHasPrivate(true);
-                }
-
-            } elseif ($lineExp[0] == 'uid') {
-
-                $string = stripcslashes($lineExp[9]); // as per documentation
-                $userId = new Crypt_GPG_UserId($string);
-
-                if ($lineExp[1] == 'r') {
-                    $userId->setRevoked(true);
-                }
-
-                $key->addUserId($userId);
-
-            }
-        }
-
-        // add last key
-        if ($key !== null) {
-            $keys[] = $key;
-        }
-
-        return $keys;
-    }
-
-    // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php
deleted file mode 100644
index db0fd1f..0000000
--- a/program/lib/Mail/mime.php
+++ /dev/null
@@ -1,1499 +0,0 @@
-<?php
-/**
- * The Mail_Mime class is used to create MIME E-mail messages
- *
- * The Mail_Mime class provides an OO interface to create MIME
- * enabled email messages. This way you can create emails that
- * contain plain-text bodies, HTML bodies, attachments, inline
- * images and specific headers.
- *
- * Compatible with PHP versions 4 and 5
- *
- * LICENSE: This LICENSE is in the BSD license style.
- * Copyright (c) 2002-2003, Richard Heyes <richard@phpguru.org>
- * Copyright (c) 2003-2006, PEAR <pear-group@php.net>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - Neither the name of the authors, nor the names of its contributors 
- *   may be used to endorse or promote products derived from this 
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- * @category  Mail
- * @package   Mail_Mime
- * @author    Richard Heyes  <richard@phpguru.org>
- * @author    Tomas V.V. Cox <cox@idecnet.com>
- * @author    Cipriano Groenendal <cipri@php.net>
- * @author    Sean Coates <sean@php.net>
- * @author    Aleksander Machniak <alec@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license   http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Mail_mime
- *
- *            This class is based on HTML Mime Mail class from
- *            Richard Heyes <richard@phpguru.org> which was based also
- *            in the mime_mail.class by Tobias Ratschiller <tobias@dnet.it>
- *            and Sascha Schumann <sascha@schumann.cx>
- */
-
-
-/**
- * require PEAR
- *
- * This package depends on PEAR to raise errors.
- */
-require_once 'PEAR.php';
-
-/**
- * require Mail_mimePart
- *
- * Mail_mimePart contains the code required to
- * create all the different parts a mail can
- * consist of.
- */
-require_once 'Mail/mimePart.php';
-
-
-/**
- * The Mail_Mime class provides an OO interface to create MIME
- * enabled email messages. This way you can create emails that
- * contain plain-text bodies, HTML bodies, attachments, inline
- * images and specific headers.
- *
- * @category  Mail
- * @package   Mail_Mime
- * @author    Richard Heyes  <richard@phpguru.org>
- * @author    Tomas V.V. Cox <cox@idecnet.com>
- * @author    Cipriano Groenendal <cipri@php.net>
- * @author    Sean Coates <sean@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license   http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version   Release: @package_version@
- * @link      http://pear.php.net/package/Mail_mime
- */
-class Mail_mime
-{
-    /**
-     * Contains the plain text part of the email
-     *
-     * @var string
-     * @access private
-     */
-    var $_txtbody;
-
-    /**
-     * Contains the html part of the email
-     *
-     * @var string
-     * @access private
-     */
-    var $_htmlbody;
-
-    /**
-     * list of the attached images
-     *
-     * @var array
-     * @access private
-     */
-    var $_html_images = array();
-
-    /**
-     * list of the attachements
-     *
-     * @var array
-     * @access private
-     */
-    var $_parts = array();
-
-    /**
-     * Headers for the mail
-     *
-     * @var array
-     * @access private
-     */
-    var $_headers = array();
-
-    /**
-     * Build parameters
-     *
-     * @var array
-     * @access private
-     */
-    var $_build_params = array(
-        // What encoding to use for the headers
-        // Options: quoted-printable or base64
-        'head_encoding' => 'quoted-printable',
-        // What encoding to use for plain text
-        // Options: 7bit, 8bit, base64, or quoted-printable
-        'text_encoding' => 'quoted-printable',
-        // What encoding to use for html
-        // Options: 7bit, 8bit, base64, or quoted-printable
-        'html_encoding' => 'quoted-printable',
-        // The character set to use for html
-        'html_charset'  => 'ISO-8859-1',
-        // The character set to use for text
-        'text_charset'  => 'ISO-8859-1',
-        // The character set to use for headers
-        'head_charset'  => 'ISO-8859-1',
-        // End-of-line sequence
-        'eol'           => "\r\n",
-        // Delay attachment files IO until building the message
-        'delay_file_io' => false
-    );
-
-    /**
-     * Constructor function
-     *
-     * @param mixed $params Build parameters that change the way the email
-     *                      is built. Should be an associative array.
-     *                      See $_build_params.
-     *
-     * @return void
-     * @access public
-     */
-    function Mail_mime($params = array())
-    {
-        // Backward-compatible EOL setting
-        if (is_string($params)) {
-            $this->_build_params['eol'] = $params;
-        } else if (defined('MAIL_MIME_CRLF') && !isset($params['eol'])) {
-            $this->_build_params['eol'] = MAIL_MIME_CRLF;
-        }
-
-        // Update build parameters
-        if (!empty($params) && is_array($params)) {
-            while (list($key, $value) = each($params)) {
-                $this->_build_params[$key] = $value;
-            }
-        }
-    }
-
-    /**
-     * Set build parameter value
-     *
-     * @param string $name  Parameter name
-     * @param string $value Parameter value
-     *
-     * @return void
-     * @access public
-     * @since 1.6.0
-     */
-    function setParam($name, $value)
-    {
-        $this->_build_params[$name] = $value;
-    }
-
-    /**
-     * Get build parameter value
-     *
-     * @param string $name Parameter name
-     *
-     * @return mixed Parameter value
-     * @access public
-     * @since 1.6.0
-     */
-    function getParam($name)
-    {
-        return isset($this->_build_params[$name]) ? $this->_build_params[$name] : null;
-    }
-
-    /**
-     * Accessor function to set the body text. Body text is used if
-     * it's not an html mail being sent or else is used to fill the
-     * text/plain part that emails clients who don't support
-     * html should show.
-     *
-     * @param string $data   Either a string or
-     *                       the file name with the contents
-     * @param bool   $isfile If true the first param should be treated
-     *                       as a file name, else as a string (default)
-     * @param bool   $append If true the text or file is appended to
-     *                       the existing body, else the old body is
-     *                       overwritten
-     *
-     * @return mixed         True on success or PEAR_Error object
-     * @access public
-     */
-    function setTXTBody($data, $isfile = false, $append = false)
-    {
-        if (!$isfile) {
-            if (!$append) {
-                $this->_txtbody = $data;
-            } else {
-                $this->_txtbody .= $data;
-            }
-        } else {
-            $cont = $this->_file2str($data);
-            if ($this->_isError($cont)) {
-                return $cont;
-            }
-            if (!$append) {
-                $this->_txtbody = $cont;
-            } else {
-                $this->_txtbody .= $cont;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Get message text body
-     *
-     * @return string Text body
-     * @access public
-     * @since 1.6.0
-     */
-    function getTXTBody()
-    {
-        return $this->_txtbody;
-    }
-
-    /**
-     * Adds a html part to the mail.
-     *
-     * @param string $data   Either a string or the file name with the
-     *                       contents
-     * @param bool   $isfile A flag that determines whether $data is a
-     *                       filename, or a string(false, default)
-     *
-     * @return bool          True on success
-     * @access public
-     */
-    function setHTMLBody($data, $isfile = false)
-    {
-        if (!$isfile) {
-            $this->_htmlbody = $data;
-        } else {
-            $cont = $this->_file2str($data);
-            if ($this->_isError($cont)) {
-                return $cont;
-            }
-            $this->_htmlbody = $cont;
-        }
-
-        return true;
-    }
-
-    /**
-     * Get message HTML body
-     *
-     * @return string HTML body
-     * @access public
-     * @since 1.6.0
-     */
-    function getHTMLBody()
-    {
-        return $this->_htmlbody;
-    }
-
-    /**
-     * Adds an image to the list of embedded images.
-     *
-     * @param string $file       The image file name OR image data itself
-     * @param string $c_type     The content type
-     * @param string $name       The filename of the image.
-     *                           Only used if $file is the image data.
-     * @param bool   $isfile     Whether $file is a filename or not.
-     *                           Defaults to true
-     * @param string $content_id Desired Content-ID of MIME part
-     *                           Defaults to generated unique ID
-     *
-     * @return bool          True on success
-     * @access public
-     */
-    function addHTMLImage($file,
-        $c_type='application/octet-stream',
-        $name = '',
-        $isfile = true,
-        $content_id = null
-    ) {
-        $bodyfile = null;
-
-        if ($isfile) {
-            // Don't load file into memory
-            if ($this->_build_params['delay_file_io']) {
-                $filedata = null;
-                $bodyfile = $file;
-            } else {
-                if ($this->_isError($filedata = $this->_file2str($file))) {
-                    return $filedata;
-                }
-            }
-            $filename = ($name ? $name : $file);
-        } else {
-            $filedata = $file;
-            $filename = $name;
-        }
-
-        if (!$content_id) {
-            $content_id = preg_replace('/[^0-9a-zA-Z]/', '', uniqid(time(), true));
-        }
-
-        $this->_html_images[] = array(
-            'body'      => $filedata,
-            'body_file' => $bodyfile,
-            'name'      => $filename,
-            'c_type'    => $c_type,
-            'cid'       => $content_id
-        );
-
-        return true;
-    }
-
-    /**
-     * Adds a file to the list of attachments.
-     *
-     * @param string $file        The file name of the file to attach
-     *                            or the file contents itself
-     * @param string $c_type      The content type
-     * @param string $name        The filename of the attachment
-     *                            Only use if $file is the contents
-     * @param bool   $isfile      Whether $file is a filename or not. Defaults to true
-     * @param string $encoding    The type of encoding to use. Defaults to base64.
-     *                            Possible values: 7bit, 8bit, base64 or quoted-printable.
-     * @param string $disposition The content-disposition of this file
-     *                            Defaults to attachment.
-     *                            Possible values: attachment, inline.
-     * @param string $charset     The character set of attachment's content.
-     * @param string $language    The language of the attachment
-     * @param string $location    The RFC 2557.4 location of the attachment
-     * @param string $n_encoding  Encoding of the attachment's name in Content-Type
-     *                            By default filenames are encoded using RFC2231 method
-     *                            Here you can set RFC2047 encoding (quoted-printable
-     *                            or base64) instead
-     * @param string $f_encoding  Encoding of the attachment's filename
-     *                            in Content-Disposition header.
-     * @param string $description Content-Description header
-     * @param string $h_charset   The character set of the headers e.g. filename
-     *                            If not specified, $charset will be used
-     * @param array  $add_headers Additional part headers. Array keys can be in form
-     *                            of <header_name>:<parameter_name>
-     *
-     * @return mixed              True on success or PEAR_Error object
-     * @access public
-     */
-    function addAttachment($file,
-        $c_type      = 'application/octet-stream',
-        $name        = '',
-        $isfile      = true,
-        $encoding    = 'base64',
-        $disposition = 'attachment',
-        $charset     = '',
-        $language    = '',
-        $location    = '',
-        $n_encoding  = null,
-        $f_encoding  = null,
-        $description = '',
-        $h_charset   = null,
-        $add_headers = array()
-    ) {
-        $bodyfile = null;
-
-        if ($isfile) {
-            // Don't load file into memory
-            if ($this->_build_params['delay_file_io']) {
-                $filedata = null;
-                $bodyfile = $file;
-            } else {
-                if ($this->_isError($filedata = $this->_file2str($file))) {
-                    return $filedata;
-                }
-            }
-            // Force the name the user supplied, otherwise use $file
-            $filename = ($name ? $name : $this->_basename($file));
-        } else {
-            $filedata = $file;
-            $filename = $name;
-        }
-
-        if (!strlen($filename)) {
-            $msg = "The supplied filename for the attachment can't be empty";
-            return $this->_raiseError($msg);
-        }
-
-        $this->_parts[] = array(
-            'body'        => $filedata,
-            'body_file'   => $bodyfile,
-            'name'        => $filename,
-            'c_type'      => $c_type,
-            'charset'     => $charset,
-            'encoding'    => $encoding,
-            'language'    => $language,
-            'location'    => $location,
-            'disposition' => $disposition,
-            'description' => $description,
-            'add_headers' => $add_headers,
-            'name_encoding'     => $n_encoding,
-            'filename_encoding' => $f_encoding,
-            'headers_charset'   => $h_charset,
-        );
-
-        return true;
-    }
-
-    /**
-     * Get the contents of the given file name as string
-     *
-     * @param string $file_name Path of file to process
-     *
-     * @return string           Contents of $file_name
-     * @access private
-     */
-    function _file2str($file_name)
-    {
-        // Check state of file and raise an error properly
-        if (!file_exists($file_name)) {
-            return $this->_raiseError('File not found: ' . $file_name);
-        }
-        if (!is_file($file_name)) {
-            return $this->_raiseError('Not a regular file: ' . $file_name);
-        }
-        if (!is_readable($file_name)) {
-            return $this->_raiseError('File is not readable: ' . $file_name);
-        }
-
-        // Temporarily reset magic_quotes_runtime and read file contents
-        if ($magic_quote_setting = get_magic_quotes_runtime()) {
-            @ini_set('magic_quotes_runtime', 0);
-        }
-        $cont = file_get_contents($file_name);
-        if ($magic_quote_setting) {
-            @ini_set('magic_quotes_runtime', $magic_quote_setting);
-        }
-
-        return $cont;
-    }
-
-    /**
-     * Adds a text subpart to the mimePart object and
-     * returns it during the build process.
-     *
-     * @param mixed  &$obj The object to add the part to, or
-     *                     anything else if a new object is to be created.
-     * @param string $text The text to add.
-     *
-     * @return object      The text mimePart object
-     * @access private
-     */
-    function &_addTextPart(&$obj, $text = '')
-    {
-        $params['content_type'] = 'text/plain';
-        $params['encoding']     = $this->_build_params['text_encoding'];
-        $params['charset']      = $this->_build_params['text_charset'];
-        $params['eol']          = $this->_build_params['eol'];
-
-        if (is_object($obj)) {
-            $ret = $obj->addSubpart($text, $params);
-        } else {
-            $ret = new Mail_mimePart($text, $params);
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Adds a html subpart to the mimePart object and
-     * returns it during the build process.
-     *
-     * @param mixed &$obj The object to add the part to, or
-     *                    anything else if a new object is to be created.
-     *
-     * @return object     The html mimePart object
-     * @access private
-     */
-    function &_addHtmlPart(&$obj)
-    {
-        $params['content_type'] = 'text/html';
-        $params['encoding']     = $this->_build_params['html_encoding'];
-        $params['charset']      = $this->_build_params['html_charset'];
-        $params['eol']          = $this->_build_params['eol'];
-
-        if (is_object($obj)) {
-            $ret = $obj->addSubpart($this->_htmlbody, $params);
-        } else {
-            $ret = new Mail_mimePart($this->_htmlbody, $params);
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Creates a new mimePart object, using multipart/mixed as
-     * the initial content-type and returns it during the
-     * build process.
-     *
-     * @return object The multipart/mixed mimePart object
-     * @access private
-     */
-    function &_addMixedPart()
-    {
-        $params['content_type'] = 'multipart/mixed';
-        $params['eol']          = $this->_build_params['eol'];
-
-        // Create empty multipart/mixed Mail_mimePart object to return
-        $ret = new Mail_mimePart('', $params);
-        return $ret;
-    }
-
-    /**
-     * Adds a multipart/alternative part to a mimePart
-     * object (or creates one), and returns it during
-     * the build process.
-     *
-     * @param mixed &$obj The object to add the part to, or
-     *                    anything else if a new object is to be created.
-     *
-     * @return object     The multipart/mixed mimePart object
-     * @access private
-     */
-    function &_addAlternativePart(&$obj)
-    {
-        $params['content_type'] = 'multipart/alternative';
-        $params['eol']          = $this->_build_params['eol'];
-
-        if (is_object($obj)) {
-            $ret = $obj->addSubpart('', $params);
-        } else {
-            $ret = new Mail_mimePart('', $params);
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Adds a multipart/related part to a mimePart
-     * object (or creates one), and returns it during
-     * the build process.
-     *
-     * @param mixed &$obj The object to add the part to, or
-     *                    anything else if a new object is to be created
-     *
-     * @return object     The multipart/mixed mimePart object
-     * @access private
-     */
-    function &_addRelatedPart(&$obj)
-    {
-        $params['content_type'] = 'multipart/related';
-        $params['eol']          = $this->_build_params['eol'];
-
-        if (is_object($obj)) {
-            $ret = $obj->addSubpart('', $params);
-        } else {
-            $ret = new Mail_mimePart('', $params);
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Adds an html image subpart to a mimePart object
-     * and returns it during the build process.
-     *
-     * @param object &$obj  The mimePart to add the image to
-     * @param array  $value The image information
-     *
-     * @return object       The image mimePart object
-     * @access private
-     */
-    function &_addHtmlImagePart(&$obj, $value)
-    {
-        $params['content_type'] = $value['c_type'];
-        $params['encoding']     = 'base64';
-        $params['disposition']  = 'inline';
-        $params['filename']     = $value['name'];
-        $params['cid']          = $value['cid'];
-        $params['body_file']    = $value['body_file'];
-        $params['eol']          = $this->_build_params['eol'];
-
-        if (!empty($value['name_encoding'])) {
-            $params['name_encoding'] = $value['name_encoding'];
-        }
-        if (!empty($value['filename_encoding'])) {
-            $params['filename_encoding'] = $value['filename_encoding'];
-        }
-
-        $ret = $obj->addSubpart($value['body'], $params);
-        return $ret;
-    }
-
-    /**
-     * Adds an attachment subpart to a mimePart object
-     * and returns it during the build process.
-     *
-     * @param object &$obj  The mimePart to add the image to
-     * @param array  $value The attachment information
-     *
-     * @return object       The image mimePart object
-     * @access private
-     */
-    function &_addAttachmentPart(&$obj, $value)
-    {
-        $params['eol']          = $this->_build_params['eol'];
-        $params['filename']     = $value['name'];
-        $params['encoding']     = $value['encoding'];
-        $params['content_type'] = $value['c_type'];
-        $params['body_file']    = $value['body_file'];
-        $params['disposition']  = isset($value['disposition']) ? 
-                                  $value['disposition'] : 'attachment';
-
-        // content charset
-        if (!empty($value['charset'])) {
-            $params['charset'] = $value['charset'];
-        }
-        // headers charset (filename, description)
-        if (!empty($value['headers_charset'])) {
-            $params['headers_charset'] = $value['headers_charset'];
-        }
-        if (!empty($value['language'])) {
-            $params['language'] = $value['language'];
-        }
-        if (!empty($value['location'])) {
-            $params['location'] = $value['location'];
-        }
-        if (!empty($value['name_encoding'])) {
-            $params['name_encoding'] = $value['name_encoding'];
-        }
-        if (!empty($value['filename_encoding'])) {
-            $params['filename_encoding'] = $value['filename_encoding'];
-        }
-        if (!empty($value['description'])) {
-            $params['description'] = $value['description'];
-        }
-        if (is_array($value['add_headers'])) {
-            $params['headers'] = $value['add_headers'];
-        }
-
-        $ret = $obj->addSubpart($value['body'], $params);
-        return $ret;
-    }
-
-    /**
-     * Returns the complete e-mail, ready to send using an alternative
-     * mail delivery method. Note that only the mailpart that is made
-     * with Mail_Mime is created. This means that,
-     * YOU WILL HAVE NO TO: HEADERS UNLESS YOU SET IT YOURSELF 
-     * using the $headers parameter!
-     * 
-     * @param string $separation The separation between these two parts.
-     * @param array  $params     The Build parameters passed to the
-     *                           get() function. See get() for more info.
-     * @param array  $headers    The extra headers that should be passed
-     *                           to the headers() method.
-     *                           See that function for more info.
-     * @param bool   $overwrite  Overwrite the existing headers with new.
-     *
-     * @return mixed The complete e-mail or PEAR error object
-     * @access public
-     */
-    function getMessage($separation = null, $params = null, $headers = null,
-        $overwrite = false
-    ) {
-        if ($separation === null) {
-            $separation = $this->_build_params['eol'];
-        }
-
-        $body = $this->get($params);
-
-        if ($this->_isError($body)) {
-            return $body;
-        }
-
-        return $this->txtHeaders($headers, $overwrite) . $separation . $body;
-    }
-
-    /**
-     * Returns the complete e-mail body, ready to send using an alternative
-     * mail delivery method.
-     * 
-     * @param array $params The Build parameters passed to the
-     *                      get() method. See get() for more info.
-     *
-     * @return mixed The e-mail body or PEAR error object
-     * @access public
-     * @since 1.6.0
-     */
-    function getMessageBody($params = null)
-    {
-        return $this->get($params, null, true);
-    }
-
-    /**
-     * Writes (appends) the complete e-mail into file.
-     * 
-     * @param string $filename  Output file location
-     * @param array  $params    The Build parameters passed to the
-     *                          get() method. See get() for more info.
-     * @param array  $headers   The extra headers that should be passed
-     *                          to the headers() function.
-     *                          See that function for more info.
-     * @param bool   $overwrite Overwrite the existing headers with new.
-     *
-     * @return mixed True or PEAR error object
-     * @access public
-     * @since 1.6.0
-     */
-    function saveMessage($filename, $params = null, $headers = null, $overwrite = false)
-    {
-        // Check state of file and raise an error properly
-        if (file_exists($filename) && !is_writable($filename)) {
-            return $this->_raiseError('File is not writable: ' . $filename);
-        }
-
-        // Temporarily reset magic_quotes_runtime and read file contents
-        if ($magic_quote_setting = get_magic_quotes_runtime()) {
-            @ini_set('magic_quotes_runtime', 0);
-        }
-
-        if (!($fh = fopen($filename, 'ab'))) {
-            return $this->_raiseError('Unable to open file: ' . $filename);
-        }
-
-        // Write message headers into file (skipping Content-* headers)
-        $head = $this->txtHeaders($headers, $overwrite, true);
-        if (fwrite($fh, $head) === false) {
-            return $this->_raiseError('Error writing to file: ' . $filename);
-        }
-
-        fclose($fh);
-
-        if ($magic_quote_setting) {
-            @ini_set('magic_quotes_runtime', $magic_quote_setting);
-        }
-
-        // Write the rest of the message into file
-        $res = $this->get($params, $filename);
-
-        return $res ? $res : true;
-    }
-
-    /**
-     * Writes (appends) the complete e-mail body into file.
-     *
-     * @param string $filename Output file location
-     * @param array  $params   The Build parameters passed to the
-     *                         get() method. See get() for more info.
-     *
-     * @return mixed True or PEAR error object
-     * @access public
-     * @since 1.6.0
-     */
-    function saveMessageBody($filename, $params = null)
-    {
-        // Check state of file and raise an error properly
-        if (file_exists($filename) && !is_writable($filename)) {
-            return $this->_raiseError('File is not writable: ' . $filename);
-        }
-
-        // Temporarily reset magic_quotes_runtime and read file contents
-        if ($magic_quote_setting = get_magic_quotes_runtime()) {
-            @ini_set('magic_quotes_runtime', 0);
-        }
-
-        if (!($fh = fopen($filename, 'ab'))) {
-            return $this->_raiseError('Unable to open file: ' . $filename);
-        }
-
-        // Write the rest of the message into file
-        $res = $this->get($params, $filename, true);
-
-        return $res ? $res : true;
-    }
-
-    /**
-     * Builds the multipart message from the list ($this->_parts) and
-     * returns the mime content.
-     *
-     * @param array    $params    Build parameters that change the way the email
-     *                            is built. Should be associative. See $_build_params.
-     * @param resource $filename  Output file where to save the message instead of
-     *                            returning it
-     * @param boolean  $skip_head True if you want to return/save only the message
-     *                            without headers
-     *
-     * @return mixed The MIME message content string, null or PEAR error object
-     * @access public
-     */
-    function get($params = null, $filename = null, $skip_head = false)
-    {
-        if (isset($params)) {
-            while (list($key, $value) = each($params)) {
-                $this->_build_params[$key] = $value;
-            }
-        }
-
-        if (isset($this->_headers['From'])) {
-            // Bug #11381: Illegal characters in domain ID
-            if (preg_match('#(@[0-9a-zA-Z\-\.]+)#', $this->_headers['From'], $matches)) {
-                $domainID = $matches[1];
-            } else {
-                $domainID = '@localhost';
-            }
-            foreach ($this->_html_images as $i => $img) {
-                $cid = $this->_html_images[$i]['cid']; 
-                if (!preg_match('#'.preg_quote($domainID).'$#', $cid)) {
-                    $this->_html_images[$i]['cid'] = $cid . $domainID;
-                }
-            }
-        }
-
-        if (count($this->_html_images) && isset($this->_htmlbody)) {
-            foreach ($this->_html_images as $key => $value) {
-                $regex   = array();
-                $regex[] = '#(\s)((?i)src|background|href(?-i))\s*=\s*(["\']?)' .
-                            preg_quote($value['name'], '#') . '\3#';
-                $regex[] = '#(?i)url(?-i)\(\s*(["\']?)' .
-                            preg_quote($value['name'], '#') . '\1\s*\)#';
-
-                $rep   = array();
-                $rep[] = '\1\2=\3cid:' . $value['cid'] .'\3';
-                $rep[] = 'url(\1cid:' . $value['cid'] . '\1)';
-
-                $this->_htmlbody = preg_replace($regex, $rep, $this->_htmlbody);
-                $this->_html_images[$key]['name']
-                    = $this->_basename($this->_html_images[$key]['name']);
-            }
-        }
-
-        $this->_checkParams();
-
-        $null        = -1;
-        $attachments = count($this->_parts) > 0;
-        $html_images = count($this->_html_images) > 0;
-        $html        = strlen($this->_htmlbody) > 0;
-        $text        = !$html && strlen($this->_txtbody);
-
-        switch (true) {
-        case $text && !$attachments:
-            $message =& $this->_addTextPart($null, $this->_txtbody);
-            break;
-
-        case !$text && !$html && $attachments:
-            $message =& $this->_addMixedPart();
-            for ($i = 0; $i < count($this->_parts); $i++) {
-                $this->_addAttachmentPart($message, $this->_parts[$i]);
-            }
-            break;
-
-        case $text && $attachments:
-            $message =& $this->_addMixedPart();
-            $this->_addTextPart($message, $this->_txtbody);
-            for ($i = 0; $i < count($this->_parts); $i++) {
-                $this->_addAttachmentPart($message, $this->_parts[$i]);
-            }
-            break;
-
-        case $html && !$attachments && !$html_images:
-            if (isset($this->_txtbody)) {
-                $message =& $this->_addAlternativePart($null);
-                $this->_addTextPart($message, $this->_txtbody);
-                $this->_addHtmlPart($message);
-            } else {
-                $message =& $this->_addHtmlPart($null);
-            }
-            break;
-
-        case $html && !$attachments && $html_images:
-            // * Content-Type: multipart/alternative;
-            //    * text
-            //    * Content-Type: multipart/related;
-            //       * html
-            //       * image...
-            if (isset($this->_txtbody)) {
-                $message =& $this->_addAlternativePart($null);
-                $this->_addTextPart($message, $this->_txtbody);
-
-                $ht =& $this->_addRelatedPart($message);
-                $this->_addHtmlPart($ht);
-                for ($i = 0; $i < count($this->_html_images); $i++) {
-                    $this->_addHtmlImagePart($ht, $this->_html_images[$i]);
-                }
-            } else {
-                // * Content-Type: multipart/related;
-                //    * html
-                //    * image...
-                $message =& $this->_addRelatedPart($null);
-                $this->_addHtmlPart($message);
-                for ($i = 0; $i < count($this->_html_images); $i++) {
-                    $this->_addHtmlImagePart($message, $this->_html_images[$i]);
-                }
-            }
-            /*
-            // #13444, #9725: the code below was a non-RFC compliant hack
-            // * Content-Type: multipart/related;
-            //    * Content-Type: multipart/alternative;
-            //        * text
-            //        * html
-            //    * image...
-            $message =& $this->_addRelatedPart($null);
-            if (isset($this->_txtbody)) {
-                $alt =& $this->_addAlternativePart($message);
-                $this->_addTextPart($alt, $this->_txtbody);
-                $this->_addHtmlPart($alt);
-            } else {
-                $this->_addHtmlPart($message);
-            }
-            for ($i = 0; $i < count($this->_html_images); $i++) {
-                $this->_addHtmlImagePart($message, $this->_html_images[$i]);
-            }
-            */
-            break;
-
-        case $html && $attachments && !$html_images:
-            $message =& $this->_addMixedPart();
-            if (isset($this->_txtbody)) {
-                $alt =& $this->_addAlternativePart($message);
-                $this->_addTextPart($alt, $this->_txtbody);
-                $this->_addHtmlPart($alt);
-            } else {
-                $this->_addHtmlPart($message);
-            }
-            for ($i = 0; $i < count($this->_parts); $i++) {
-                $this->_addAttachmentPart($message, $this->_parts[$i]);
-            }
-            break;
-
-        case $html && $attachments && $html_images:
-            $message =& $this->_addMixedPart();
-            if (isset($this->_txtbody)) {
-                $alt =& $this->_addAlternativePart($message);
-                $this->_addTextPart($alt, $this->_txtbody);
-                $rel =& $this->_addRelatedPart($alt);
-            } else {
-                $rel =& $this->_addRelatedPart($message);
-            }
-            $this->_addHtmlPart($rel);
-            for ($i = 0; $i < count($this->_html_images); $i++) {
-                $this->_addHtmlImagePart($rel, $this->_html_images[$i]);
-            }
-            for ($i = 0; $i < count($this->_parts); $i++) {
-                $this->_addAttachmentPart($message, $this->_parts[$i]);
-            }
-            break;
-        }
-
-        if (!isset($message)) {
-            return null;
-        }
-
-        // Use saved boundary
-        if (!empty($this->_build_params['boundary'])) {
-            $boundary = $this->_build_params['boundary'];
-        } else {
-            $boundary = null;
-        }
-
-        // Write output to file
-        if ($filename) {
-            // Append mimePart message headers and body into file
-            $headers = $message->encodeToFile($filename, $boundary, $skip_head);
-            if ($this->_isError($headers)) {
-                return $headers;
-            }
-            $this->_headers = array_merge($this->_headers, $headers);
-            return null;
-        } else {
-            $output = $message->encode($boundary, $skip_head);
-            if ($this->_isError($output)) {
-                return $output;
-            }
-            $this->_headers = array_merge($this->_headers, $output['headers']);
-            return $output['body'];
-        }
-    }
-
-    /**
-     * Returns an array with the headers needed to prepend to the email
-     * (MIME-Version and Content-Type). Format of argument is:
-     * $array['header-name'] = 'header-value';
-     *
-     * @param array $xtra_headers Assoc array with any extra headers (optional)
-     *                            (Don't set Content-Type for multipart messages here!)
-     * @param bool  $overwrite    Overwrite already existing headers.
-     * @param bool  $skip_content Don't return content headers: Content-Type,
-     *                            Content-Disposition and Content-Transfer-Encoding
-     * 
-     * @return array              Assoc array with the mime headers
-     * @access public
-     */
-    function headers($xtra_headers = null, $overwrite = false, $skip_content = false)
-    {
-        // Add mime version header
-        $headers['MIME-Version'] = '1.0';
-
-        // Content-Type and Content-Transfer-Encoding headers should already
-        // be present if get() was called, but we'll re-set them to make sure
-        // we got them when called before get() or something in the message
-        // has been changed after get() [#14780]
-        if (!$skip_content) {
-            $headers += $this->_contentHeaders();
-        }
-
-        if (!empty($xtra_headers)) {
-            $headers = array_merge($headers, $xtra_headers);
-        }
-
-        if ($overwrite) {
-            $this->_headers = array_merge($this->_headers, $headers);
-        } else {
-            $this->_headers = array_merge($headers, $this->_headers);
-        }
-
-        $headers = $this->_headers;
-
-        if ($skip_content) {
-            unset($headers['Content-Type']);
-            unset($headers['Content-Transfer-Encoding']);
-            unset($headers['Content-Disposition']);
-        } else if (!empty($this->_build_params['ctype'])) {
-            $headers['Content-Type'] = $this->_build_params['ctype'];
-        }
-
-        $encodedHeaders = $this->_encodeHeaders($headers);
-        return $encodedHeaders;
-    }
-
-    /**
-     * Get the text version of the headers
-     * (usefull if you want to use the PHP mail() function)
-     *
-     * @param array $xtra_headers Assoc array with any extra headers (optional)
-     *                            (Don't set Content-Type for multipart messages here!)
-     * @param bool  $overwrite    Overwrite the existing headers with new.
-     * @param bool  $skip_content Don't return content headers: Content-Type,
-     *                            Content-Disposition and Content-Transfer-Encoding
-     *
-     * @return string             Plain text headers
-     * @access public
-     */
-    function txtHeaders($xtra_headers = null, $overwrite = false, $skip_content = false)
-    {
-        $headers = $this->headers($xtra_headers, $overwrite, $skip_content);
-
-        // Place Received: headers at the beginning of the message
-        // Spam detectors often flag messages with it after the Subject: as spam
-        if (isset($headers['Received'])) {
-            $received = $headers['Received'];
-            unset($headers['Received']);
-            $headers = array('Received' => $received) + $headers;
-        }
-
-        $ret = '';
-        $eol = $this->_build_params['eol'];
-
-        foreach ($headers as $key => $val) {
-            if (is_array($val)) {
-                foreach ($val as $value) {
-                    $ret .= "$key: $value" . $eol;
-                }
-            } else {
-                $ret .= "$key: $val" . $eol;
-            }
-        }
-
-        return $ret;
-    }
-
-    /**
-     * Sets message Content-Type header.
-     * Use it to build messages with various content-types e.g. miltipart/raport
-     * not supported by _contentHeaders() function.
-     *
-     * @param string $type   Type name
-     * @param array  $params Hash array of header parameters
-     *
-     * @return void
-     * @access public
-     * @since 1.7.0
-     */
-    function setContentType($type, $params = array())
-    {
-        $header = $type;
-
-        $eol = !empty($this->_build_params['eol'])
-            ? $this->_build_params['eol'] : "\r\n";
-
-        // add parameters
-        $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D'
-            . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#';
-        if (is_array($params)) {
-            foreach ($params as $name => $value) {
-                if ($name == 'boundary') {
-                    $this->_build_params['boundary'] = $value;
-                }
-                if (!preg_match($token_regexp, $value)) {
-                    $header .= ";$eol $name=$value";
-                } else {
-                    $value = addcslashes($value, '\\"');
-                    $header .= ";$eol $name=\"$value\"";
-                }
-            }
-        }
-
-        // add required boundary parameter if not defined
-        if (preg_match('/^multipart\//i', $type)) {
-            if (empty($this->_build_params['boundary'])) {
-                $this->_build_params['boundary'] = '=_' . md5(rand() . microtime());
-            }
-
-            $header .= ";$eol boundary=\"".$this->_build_params['boundary']."\"";
-        }
-
-        $this->_build_params['ctype'] = $header;
-    }
-
-    /**
-     * Sets the Subject header
-     *
-     * @param string $subject String to set the subject to.
-     *
-     * @return void
-     * @access public
-     */
-    function setSubject($subject)
-    {
-        $this->_headers['Subject'] = $subject;
-    }
-
-    /**
-     * Set an email to the From (the sender) header
-     *
-     * @param string $email The email address to use
-     *
-     * @return void
-     * @access public
-     */
-    function setFrom($email)
-    {
-        $this->_headers['From'] = $email;
-    }
-
-    /**
-     * Add an email to the To header
-     * (multiple calls to this method are allowed)
-     *
-     * @param string $email The email direction to add
-     *
-     * @return void
-     * @access public
-     */
-    function addTo($email)
-    {
-        if (isset($this->_headers['To'])) {
-            $this->_headers['To'] .= ", $email";
-        } else {
-            $this->_headers['To'] = $email;
-        }
-    }
-
-    /**
-     * Add an email to the Cc (carbon copy) header
-     * (multiple calls to this method are allowed)
-     *
-     * @param string $email The email direction to add
-     *
-     * @return void
-     * @access public
-     */
-    function addCc($email)
-    {
-        if (isset($this->_headers['Cc'])) {
-            $this->_headers['Cc'] .= ", $email";
-        } else {
-            $this->_headers['Cc'] = $email;
-        }
-    }
-
-    /**
-     * Add an email to the Bcc (blank carbon copy) header
-     * (multiple calls to this method are allowed)
-     *
-     * @param string $email The email direction to add
-     *
-     * @return void
-     * @access public
-     */
-    function addBcc($email)
-    {
-        if (isset($this->_headers['Bcc'])) {
-            $this->_headers['Bcc'] .= ", $email";
-        } else {
-            $this->_headers['Bcc'] = $email;
-        }
-    }
-
-    /**
-     * Since the PHP send function requires you to specify
-     * recipients (To: header) separately from the other
-     * headers, the To: header is not properly encoded.
-     * To fix this, you can use this public method to 
-     * encode your recipients before sending to the send
-     * function
-     *
-     * @param string $recipients A comma-delimited list of recipients
-     *
-     * @return string            Encoded data
-     * @access public
-     */
-    function encodeRecipients($recipients)
-    {
-        $input = array("To" => $recipients);
-        $retval = $this->_encodeHeaders($input);
-        return $retval["To"] ;
-    }
-
-    /**
-     * Encodes headers as per RFC2047
-     *
-     * @param array $input  The header data to encode
-     * @param array $params Extra build parameters
-     *
-     * @return array        Encoded data
-     * @access private
-     */
-    function _encodeHeaders($input, $params = array())
-    {
-        $build_params = $this->_build_params;
-        while (list($key, $value) = each($params)) {
-            $build_params[$key] = $value;
-        }
-
-        foreach ($input as $hdr_name => $hdr_value) {
-            if (is_array($hdr_value)) {
-                foreach ($hdr_value as $idx => $value) {
-                    $input[$hdr_name][$idx] = $this->encodeHeader(
-                        $hdr_name, $value,
-                        $build_params['head_charset'], $build_params['head_encoding']
-                    );
-                }
-            } else {
-                $input[$hdr_name] = $this->encodeHeader(
-                    $hdr_name, $hdr_value,
-                    $build_params['head_charset'], $build_params['head_encoding']
-                );
-            }
-        }
-
-        return $input;
-    }
-
-    /**
-     * Encodes a header as per RFC2047
-     *
-     * @param string $name     The header name
-     * @param string $value    The header data to encode
-     * @param string $charset  Character set name
-     * @param string $encoding Encoding name (base64 or quoted-printable)
-     *
-     * @return string          Encoded header data (without a name)
-     * @access public
-     * @since 1.5.3
-     */
-    function encodeHeader($name, $value, $charset, $encoding)
-    {
-        $mime_part = new Mail_mimePart;
-        return $mime_part->encodeHeader(
-            $name, $value, $charset, $encoding, $this->_build_params['eol']
-        );
-    }
-
-    /**
-     * Get file's basename (locale independent) 
-     *
-     * @param string $filename Filename
-     *
-     * @return string          Basename
-     * @access private
-     */
-    function _basename($filename)
-    {
-        // basename() is not unicode safe and locale dependent
-        if (stristr(PHP_OS, 'win') || stristr(PHP_OS, 'netware')) {
-            return preg_replace('/^.*[\\\\\\/]/', '', $filename);
-        } else {
-            return preg_replace('/^.*[\/]/', '', $filename);
-        }
-    }
-
-    /**
-     * Get Content-Type and Content-Transfer-Encoding headers of the message
-     *
-     * @return array Headers array
-     * @access private
-     */
-    function _contentHeaders()
-    {
-        $attachments = count($this->_parts)                 ? true : false;
-        $html_images = count($this->_html_images)           ? true : false;
-        $html        = strlen($this->_htmlbody)             ? true : false;
-        $text        = (!$html && strlen($this->_txtbody))  ? true : false;
-        $headers     = array();
-
-        // See get()
-        switch (true) {
-        case $text && !$attachments:
-            $headers['Content-Type'] = 'text/plain';
-            break;
-
-        case !$text && !$html && $attachments:
-        case $text && $attachments:
-        case $html && $attachments && !$html_images:
-        case $html && $attachments && $html_images:
-            $headers['Content-Type'] = 'multipart/mixed';
-            break;
-
-        case $html && !$attachments && !$html_images && isset($this->_txtbody):
-        case $html && !$attachments && $html_images && isset($this->_txtbody):
-            $headers['Content-Type'] = 'multipart/alternative';
-            break;
-
-        case $html && !$attachments && !$html_images && !isset($this->_txtbody):
-            $headers['Content-Type'] = 'text/html';
-            break;
-
-        case $html && !$attachments && $html_images && !isset($this->_txtbody):
-            $headers['Content-Type'] = 'multipart/related';
-            break;
-
-        default:
-            return $headers;
-        }
-
-        $this->_checkParams();
-
-        $eol = !empty($this->_build_params['eol'])
-            ? $this->_build_params['eol'] : "\r\n";
-
-        if ($headers['Content-Type'] == 'text/plain') {
-            // single-part message: add charset and encoding
-            if ($this->_build_params['text_charset']) {
-                $charset = 'charset=' . $this->_build_params['text_charset'];
-                // place charset parameter in the same line, if possible
-                // 26 = strlen("Content-Type: text/plain; ")
-                $headers['Content-Type']
-                    .= (strlen($charset) + 26 <= 76) ? "; $charset" : ";$eol $charset";
-            }
-
-            $headers['Content-Transfer-Encoding']
-                = $this->_build_params['text_encoding'];
-        } else if ($headers['Content-Type'] == 'text/html') {
-            // single-part message: add charset and encoding
-            if ($this->_build_params['html_charset']) {
-                $charset = 'charset=' . $this->_build_params['html_charset'];
-                // place charset parameter in the same line, if possible
-                $headers['Content-Type']
-                    .= (strlen($charset) + 25 <= 76) ? "; $charset" : ";$eol $charset";
-            }
-            $headers['Content-Transfer-Encoding']
-                = $this->_build_params['html_encoding'];
-        } else {
-            // multipart message: and boundary
-            if (!empty($this->_build_params['boundary'])) {
-                $boundary = $this->_build_params['boundary'];
-            } else if (!empty($this->_headers['Content-Type'])
-                && preg_match('/boundary="([^"]+)"/', $this->_headers['Content-Type'], $m)
-            ) {
-                $boundary = $m[1];
-            } else {
-                $boundary = '=_' . md5(rand() . microtime());
-            }
-
-            $this->_build_params['boundary'] = $boundary;
-            $headers['Content-Type'] .= ";$eol boundary=\"$boundary\"";
-        }
-
-        return $headers;
-    }
-
-    /**
-     * Validate and set build parameters
-     *
-     * @return void
-     * @access private
-     */
-    function _checkParams()
-    {
-        $encodings = array('7bit', '8bit', 'base64', 'quoted-printable');
-
-        $this->_build_params['text_encoding']
-            = strtolower($this->_build_params['text_encoding']);
-        $this->_build_params['html_encoding']
-            = strtolower($this->_build_params['html_encoding']);
-
-        if (!in_array($this->_build_params['text_encoding'], $encodings)) {
-            $this->_build_params['text_encoding'] = '7bit';
-        }
-        if (!in_array($this->_build_params['html_encoding'], $encodings)) {
-            $this->_build_params['html_encoding'] = '7bit';
-        }
-
-        // text body
-        if ($this->_build_params['text_encoding'] == '7bit'
-            && !preg_match('/ascii/i', $this->_build_params['text_charset'])
-            && preg_match('/[^\x00-\x7F]/', $this->_txtbody)
-        ) {
-            $this->_build_params['text_encoding'] = 'quoted-printable';
-        }
-        // html body
-        if ($this->_build_params['html_encoding'] == '7bit'
-            && !preg_match('/ascii/i', $this->_build_params['html_charset'])
-            && preg_match('/[^\x00-\x7F]/', $this->_htmlbody)
-        ) {
-            $this->_build_params['html_encoding'] = 'quoted-printable';
-        }
-    }
-
-    /**
-     * PEAR::isError implementation
-     *
-     * @param mixed $data Object
-     *
-     * @return bool True if object is an instance of PEAR_Error
-     * @access private
-     */
-    function _isError($data)
-    {
-        // PEAR::isError() is not PHP 5.4 compatible (see Bug #19473)
-        if (is_object($data) && is_a($data, 'PEAR_Error')) {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * PEAR::raiseError implementation
-     *
-     * @param $message A text error message
-     *
-     * @return PEAR_Error Instance of PEAR_Error
-     * @access private
-     */
-    function _raiseError($message)
-    {
-        // PEAR::raiseError() is not PHP 5.4 compatible
-        return new PEAR_Error($message);
-    }
-
-} // End of class
diff --git a/program/lib/Mail/mimeDecode.php b/program/lib/Mail/mimeDecode.php
deleted file mode 100644
index 9f45894..0000000
--- a/program/lib/Mail/mimeDecode.php
+++ /dev/null
@@ -1,1003 +0,0 @@
-<?php
-/**
- * The Mail_mimeDecode class is used to decode mail/mime messages
- *
- * This class will parse a raw mime email and return
- * the structure. Returned structure is similar to
- * that returned by imap_fetchstructure().
- *
- *  +----------------------------- IMPORTANT ------------------------------+
- *  | Usage of this class compared to native php extensions such as        |
- *  | mailparse or imap, is slow and may be feature deficient. If available|
- *  | you are STRONGLY recommended to use the php extensions.              |
- *  +----------------------------------------------------------------------+
- *
- * Compatible with PHP versions 4 and 5
- *
- * LICENSE: This LICENSE is in the BSD license style.
- * Copyright (c) 2002-2003, Richard Heyes <richard@phpguru.org>
- * Copyright (c) 2003-2006, PEAR <pear-group@php.net>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - Neither the name of the authors, nor the names of its contributors 
- *   may be used to endorse or promote products derived from this 
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- * @category   Mail
- * @package    Mail_Mime
- * @author     Richard Heyes  <richard@phpguru.org>
- * @author     George Schlossnagle <george@omniti.com>
- * @author     Cipriano Groenendal <cipri@php.net>
- * @author     Sean Coates <sean@php.net>
- * @copyright  2003-2006 PEAR <pear-group@php.net>
- * @license    http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version    CVS: $Id: mimeDecode.php 305875 2010-12-01 07:17:10Z alan_k $
- * @link       http://pear.php.net/package/Mail_mime
- */
-
-
-/**
- * require PEAR
- *
- * This package depends on PEAR to raise errors.
- */
-require_once 'PEAR.php';
-
-
-/**
- * The Mail_mimeDecode class is used to decode mail/mime messages
- *
- * This class will parse a raw mime email and return the structure.
- * Returned structure is similar to that returned by imap_fetchstructure().
- *
- *  +----------------------------- IMPORTANT ------------------------------+
- *  | Usage of this class compared to native php extensions such as        |
- *  | mailparse or imap, is slow and may be feature deficient. If available|
- *  | you are STRONGLY recommended to use the php extensions.              |
- *  +----------------------------------------------------------------------+
- *
- * @category   Mail
- * @package    Mail_Mime
- * @author     Richard Heyes  <richard@phpguru.org>
- * @author     George Schlossnagle <george@omniti.com>
- * @author     Cipriano Groenendal <cipri@php.net>
- * @author     Sean Coates <sean@php.net>
- * @copyright  2003-2006 PEAR <pear-group@php.net>
- * @license    http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version    Release: 1.5.5
- * @link       http://pear.php.net/package/Mail_mime
- */
-class Mail_mimeDecode extends PEAR
-{
-    /**
-     * The raw email to decode
-     *
-     * @var    string
-     * @access private
-     */
-    var $_input;
-
-    /**
-     * The header part of the input
-     *
-     * @var    string
-     * @access private
-     */
-    var $_header;
-
-    /**
-     * The body part of the input
-     *
-     * @var    string
-     * @access private
-     */
-    var $_body;
-
-    /**
-     * If an error occurs, this is used to store the message
-     *
-     * @var    string
-     * @access private
-     */
-    var $_error;
-
-    /**
-     * Flag to determine whether to include bodies in the
-     * returned object.
-     *
-     * @var    boolean
-     * @access private
-     */
-    var $_include_bodies;
-
-    /**
-     * Flag to determine whether to decode bodies
-     *
-     * @var    boolean
-     * @access private
-     */
-    var $_decode_bodies;
-
-    /**
-     * Flag to determine whether to decode headers
-     *
-     * @var    boolean
-     * @access private
-     */
-    var $_decode_headers;
-
-    /**
-     * Flag to determine whether to include attached messages
-     * as body in the returned object. Depends on $_include_bodies
-     *
-     * @var    boolean
-     * @access private
-     */
-    var $_rfc822_bodies;
-
-    /**
-     * Constructor.
-     *
-     * Sets up the object, initialise the variables, and splits and
-     * stores the header and body of the input.
-     *
-     * @param string The input to decode
-     * @access public
-     */
-    function Mail_mimeDecode($input)
-    {
-        list($header, $body)   = $this->_splitBodyHeader($input);
-
-        $this->_input          = $input;
-        $this->_header         = $header;
-        $this->_body           = $body;
-        $this->_decode_bodies  = false;
-        $this->_include_bodies = true;
-        $this->_rfc822_bodies  = false;
-    }
-
-    /**
-     * Begins the decoding process. If called statically
-     * it will create an object and call the decode() method
-     * of it.
-     *
-     * @param array An array of various parameters that determine
-     *              various things:
-     *              include_bodies - Whether to include the body in the returned
-     *                               object.
-     *              decode_bodies  - Whether to decode the bodies
-     *                               of the parts. (Transfer encoding)
-     *              decode_headers - Whether to decode headers
-     *              input          - If called statically, this will be treated
-     *                               as the input
-     * @return object Decoded results
-     * @access public
-     */
-    function decode($params = null)
-    {
-        // determine if this method has been called statically
-        $isStatic = empty($this) || !is_a($this, __CLASS__);
-
-        // Have we been called statically?
-	// If so, create an object and pass details to that.
-        if ($isStatic AND isset($params['input'])) {
-
-            $obj = new Mail_mimeDecode($params['input']);
-            $structure = $obj->decode($params);
-
-        // Called statically but no input
-        } elseif ($isStatic) {
-            return PEAR::raiseError('Called statically and no input given');
-
-        // Called via an object
-        } else {
-            $this->_include_bodies = isset($params['include_bodies']) ?
-	                             $params['include_bodies'] : false;
-            $this->_decode_bodies  = isset($params['decode_bodies']) ?
-	                             $params['decode_bodies']  : false;
-            $this->_decode_headers = isset($params['decode_headers']) ?
-	                             $params['decode_headers'] : false;
-            $this->_rfc822_bodies  = isset($params['rfc_822bodies']) ?
-	                             $params['rfc_822bodies']  : false;
-
-            $structure = $this->_decode($this->_header, $this->_body);
-            if ($structure === false) {
-                $structure = $this->raiseError($this->_error);
-            }
-        }
-
-        return $structure;
-    }
-
-    /**
-     * Performs the decoding. Decodes the body string passed to it
-     * If it finds certain content-types it will call itself in a
-     * recursive fashion
-     *
-     * @param string Header section
-     * @param string Body section
-     * @return object Results of decoding process
-     * @access private
-     */
-    function _decode($headers, $body, $default_ctype = 'text/plain')
-    {
-        $return = new stdClass;
-        $return->headers = array();
-        $headers = $this->_parseHeaders($headers);
-
-        foreach ($headers as $value) {
-            $value['value'] = $this->_decode_headers ? $this->_decodeHeader($value['value']) : $value['value'];
-            if (isset($return->headers[strtolower($value['name'])]) AND !is_array($return->headers[strtolower($value['name'])])) {
-                $return->headers[strtolower($value['name'])]   = array($return->headers[strtolower($value['name'])]);
-                $return->headers[strtolower($value['name'])][] = $value['value'];
-
-            } elseif (isset($return->headers[strtolower($value['name'])])) {
-                $return->headers[strtolower($value['name'])][] = $value['value'];
-
-            } else {
-                $return->headers[strtolower($value['name'])] = $value['value'];
-            }
-        }
-
-
-        foreach ($headers as $key => $value) {
-            $headers[$key]['name'] = strtolower($headers[$key]['name']);
-            switch ($headers[$key]['name']) {
-
-                case 'content-type':
-                    $content_type = $this->_parseHeaderValue($headers[$key]['value']);
-
-                    if (preg_match('/([0-9a-z+.-]+)\/([0-9a-z+.-]+)/i', $content_type['value'], $regs)) {
-                        $return->ctype_primary   = $regs[1];
-                        $return->ctype_secondary = $regs[2];
-                    }
-
-                    if (isset($content_type['other'])) {
-                        foreach($content_type['other'] as $p_name => $p_value) {
-                            $return->ctype_parameters[$p_name] = $p_value;
-                        }
-                    }
-                    break;
-
-                case 'content-disposition':
-                    $content_disposition = $this->_parseHeaderValue($headers[$key]['value']);
-                    $return->disposition   = $content_disposition['value'];
-                    if (isset($content_disposition['other'])) {
-                        foreach($content_disposition['other'] as $p_name => $p_value) {
-                            $return->d_parameters[$p_name] = $p_value;
-                        }
-                    }
-                    break;
-
-                case 'content-transfer-encoding':
-                    $content_transfer_encoding = $this->_parseHeaderValue($headers[$key]['value']);
-                    break;
-            }
-        }
-
-        if (isset($content_type)) {
-            switch (strtolower($content_type['value'])) {
-                case 'text/plain':
-                    $encoding = isset($content_transfer_encoding) ? $content_transfer_encoding['value'] : '7bit';
-                    $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $encoding) : $body) : null;
-                    break;
-
-                case 'text/html':
-                    $encoding = isset($content_transfer_encoding) ? $content_transfer_encoding['value'] : '7bit';
-                    $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $encoding) : $body) : null;
-                    break;
-
-                case 'multipart/parallel':
-                case 'multipart/appledouble': // Appledouble mail
-                case 'multipart/report': // RFC1892
-                case 'multipart/signed': // PGP
-                case 'multipart/digest':
-                case 'multipart/alternative':
-                case 'multipart/related':
-                case 'multipart/mixed':
-                case 'application/vnd.wap.multipart.related':
-                    if(!isset($content_type['other']['boundary'])){
-                        $this->_error = 'No boundary found for ' . $content_type['value'] . ' part';
-                        return false;
-                    }
-
-                    $default_ctype = (strtolower($content_type['value']) === 'multipart/digest') ? 'message/rfc822' : 'text/plain';
-
-                    $parts = $this->_boundarySplit($body, $content_type['other']['boundary']);
-                    for ($i = 0; $i < count($parts); $i++) {
-                        list($part_header, $part_body) = $this->_splitBodyHeader($parts[$i]);
-                        $part = $this->_decode($part_header, $part_body, $default_ctype);
-                        if($part === false)
-                            $part = $this->raiseError($this->_error);
-                        $return->parts[] = $part;
-                    }
-                    break;
-
-                case 'message/rfc822':
-					if ($this->_rfc822_bodies) {
-						$encoding = isset($content_transfer_encoding) ? $content_transfer_encoding['value'] : '7bit';
-						$return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $encoding) : $body);
-					}
-                    $obj = new Mail_mimeDecode($body);
-                    $return->parts[] = $obj->decode(array('include_bodies' => $this->_include_bodies,
-					                                      'decode_bodies'  => $this->_decode_bodies,
-														  'decode_headers' => $this->_decode_headers));
-                    unset($obj);
-                    break;
-
-                default:
-                    if(!isset($content_transfer_encoding['value']))
-                        $content_transfer_encoding['value'] = '7bit';
-                    $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $content_transfer_encoding['value']) : $body) : null;
-                    break;
-            }
-
-        } else {
-            $ctype = explode('/', $default_ctype);
-            $return->ctype_primary   = $ctype[0];
-            $return->ctype_secondary = $ctype[1];
-            $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body) : $body) : null;
-        }
-
-        return $return;
-    }
-
-    /**
-     * Given the output of the above function, this will return an
-     * array of references to the parts, indexed by mime number.
-     *
-     * @param  object $structure   The structure to go through
-     * @param  string $mime_number Internal use only.
-     * @return array               Mime numbers
-     */
-    function &getMimeNumbers(&$structure, $no_refs = false, $mime_number = '', $prepend = '')
-    {
-        $return = array();
-        if (!empty($structure->parts)) {
-            if ($mime_number != '') {
-                $structure->mime_id = $prepend . $mime_number;
-                $return[$prepend . $mime_number] = &$structure;
-            }
-            for ($i = 0; $i < count($structure->parts); $i++) {
-
-            
-                if (!empty($structure->headers['content-type']) AND substr(strtolower($structure->headers['content-type']), 0, 8) == 'message/') {
-                    $prepend      = $prepend . $mime_number . '.';
-                    $_mime_number = '';
-                } else {
-                    $_mime_number = ($mime_number == '' ? $i + 1 : sprintf('%s.%s', $mime_number, $i + 1));
-                }
-
-                $arr = &Mail_mimeDecode::getMimeNumbers($structure->parts[$i], $no_refs, $_mime_number, $prepend);
-                foreach ($arr as $key => $val) {
-                    $no_refs ? $return[$key] = '' : $return[$key] = &$arr[$key];
-                }
-            }
-        } else {
-            if ($mime_number == '') {
-                $mime_number = '1';
-            }
-            $structure->mime_id = $prepend . $mime_number;
-            $no_refs ? $return[$prepend . $mime_number] = '' : $return[$prepend . $mime_number] = &$structure;
-        }
-        
-        return $return;
-    }
-
-    /**
-     * Given a string containing a header and body
-     * section, this function will split them (at the first
-     * blank line) and return them.
-     *
-     * @param string Input to split apart
-     * @return array Contains header and body section
-     * @access private
-     */
-    function _splitBodyHeader($input)
-    {
-        if (preg_match("/^(.*?)\r?\n\r?\n(.*)/s", $input, $match)) {
-            return array($match[1], $match[2]);
-        }
-        // bug #17325 - empty bodies are allowed. - we just check that at least one line 
-        // of headers exist..
-        if (count(explode("\n",$input))) {
-            return array($input, '');
-        }
-        $this->_error = 'Could not split header and body';
-        return false;
-    }
-
-    /**
-     * Parse headers given in $input and return
-     * as assoc array.
-     *
-     * @param string Headers to parse
-     * @return array Contains parsed headers
-     * @access private
-     */
-    function _parseHeaders($input)
-    {
-
-        if ($input !== '') {
-            // Unfold the input
-            $input   = preg_replace("/\r?\n/", "\r\n", $input);
-            //#7065 - wrapping.. with encoded stuff.. - probably not needed,
-            // wrapping space should only get removed if the trailing item on previous line is a 
-            // encoded character
-            $input   = preg_replace("/=\r\n(\t| )+/", '=', $input);
-            $input   = preg_replace("/\r\n(\t| )+/", ' ', $input);
-            
-            $headers = explode("\r\n", trim($input));
-
-            foreach ($headers as $value) {
-                $hdr_name = substr($value, 0, $pos = strpos($value, ':'));
-                $hdr_value = substr($value, $pos+1);
-                if($hdr_value[0] == ' ')
-                    $hdr_value = substr($hdr_value, 1);
-
-                $return[] = array(
-                                  'name'  => $hdr_name,
-                                  'value' =>  $hdr_value
-                                 );
-            }
-        } else {
-            $return = array();
-        }
-
-        return $return;
-    }
-
-    /**
-     * Function to parse a header value,
-     * extract first part, and any secondary
-     * parts (after ;) This function is not as
-     * robust as it could be. Eg. header comments
-     * in the wrong place will probably break it.
-     *
-     * @param string Header value to parse
-     * @return array Contains parsed result
-     * @access private
-     */
-    function _parseHeaderValue($input)
-    {
-
-        if (($pos = strpos($input, ';')) === false) {
-            $input = $this->_decode_headers ? $this->_decodeHeader($input) : $input;
-            $return['value'] = trim($input);
-            return $return;
-        }
-
-
-
-        $value = substr($input, 0, $pos);
-        $value = $this->_decode_headers ? $this->_decodeHeader($value) : $value;
-        $return['value'] = trim($value);
-        $input = trim(substr($input, $pos+1));
-
-        if (!strlen($input) > 0) {
-            return $return;
-        }
-        // at this point input contains xxxx=".....";zzzz="...."
-        // since we are dealing with quoted strings, we need to handle this properly..
-        $i = 0;
-        $l = strlen($input);
-        $key = '';
-        $val = false; // our string - including quotes..
-        $q = false; // in quote..
-        $lq = ''; // last quote..
-
-        while ($i < $l) {
-            
-            $c = $input[$i];
-            //var_dump(array('i'=>$i,'c'=>$c,'q'=>$q, 'lq'=>$lq, 'key'=>$key, 'val' =>$val));
-
-            $escaped = false;
-            if ($c == '\\') {
-                $i++;
-                if ($i == $l-1) { // end of string.
-                    break;
-                }
-                $escaped = true;
-                $c = $input[$i];
-            }            
-
-
-            // state - in key..
-            if ($val === false) {
-                if (!$escaped && $c == '=') {
-                    $val = '';
-                    $key = trim($key);
-                    $i++;
-                    continue;
-                }
-                if (!$escaped && $c == ';') {
-                    if ($key) { // a key without a value..
-                        $key= trim($key);
-                        $return['other'][$key] = '';
-                        $return['other'][strtolower($key)] = '';
-                    }
-                    $key = '';
-                }
-                $key .= $c;
-                $i++;
-                continue;
-            }
-                     
-            // state - in value.. (as $val is set..)
-
-            if ($q === false) {
-                // not in quote yet.
-                if ((!strlen($val) || $lq !== false) && $c == ' ' ||  $c == "\t") {
-                    $i++;
-                    continue; // skip leading spaces after '=' or after '"'
-                }
-                if (!$escaped && ($c == '"' || $c == "'")) {
-                    // start quoted area..
-                    $q = $c;
-                    // in theory should not happen raw text in value part..
-                    // but we will handle it as a merged part of the string..
-                    $val = !strlen(trim($val)) ? '' : trim($val);
-                    $i++;
-                    continue;
-                }
-                // got end....
-                if (!$escaped && $c == ';') {
-
-                    $val = trim($val);
-                    $added = false;
-                    if (preg_match('/\*[0-9]+$/', $key)) {
-                        // this is the extended aaa*0=...;aaa*1=.... code
-                        // it assumes the pieces arrive in order, and are valid...
-                        $key = preg_replace('/\*[0-9]+$/', '', $key);
-                        if (isset($return['other'][$key])) {
-                            $return['other'][$key] .= $val;
-                            if (strtolower($key) != $key) {
-                                $return['other'][strtolower($key)] .= $val;
-                            }
-                            $added = true;
-                        }
-                        // continue and use standard setters..
-                    }
-                    if (!$added) {
-                        $return['other'][$key] = $val;
-                        $return['other'][strtolower($key)] = $val;
-                    }
-                    $val = false;
-                    $key = '';
-                    $lq = false;
-                    $i++;
-                    continue;
-                }
-
-                $val .= $c;
-                $i++;
-                continue;
-            }
-            
-            // state - in quote..
-            if (!$escaped && $c == $q) {  // potential exit state..
-
-                // end of quoted string..
-                $lq = $q;
-                $q = false;
-                $i++;
-                continue;
-            }
-                
-            // normal char inside of quoted string..
-            $val.= $c;
-            $i++;
-        }
-        
-        // do we have anything left..
-        if (strlen(trim($key)) || $val !== false) {
-           
-            $val = trim($val);
-            $added = false;
-            if ($val !== false && preg_match('/\*[0-9]+$/', $key)) {
-                // no dupes due to our crazy regexp.
-                $key = preg_replace('/\*[0-9]+$/', '', $key);
-                if (isset($return['other'][$key])) {
-                    $return['other'][$key] .= $val;
-                    if (strtolower($key) != $key) {
-                        $return['other'][strtolower($key)] .= $val;
-                    }
-                    $added = true;
-                }
-                // continue and use standard setters..
-            }
-            if (!$added) {
-                $return['other'][$key] = $val;
-                $return['other'][strtolower($key)] = $val;
-            }
-        }
-        // decode values.
-        foreach($return['other'] as $key =>$val) {
-            $return['other'][$key] = $this->_decode_headers ? $this->_decodeHeader($val) : $val;
-        }
-       //print_r($return);
-        return $return;
-    }
-
-    /**
-     * This function splits the input based
-     * on the given boundary
-     *
-     * @param string Input to parse
-     * @return array Contains array of resulting mime parts
-     * @access private
-     */
-    function _boundarySplit($input, $boundary)
-    {
-        $parts = array();
-
-        $bs_possible = substr($boundary, 2, -2);
-        $bs_check = '\"' . $bs_possible . '\"';
-
-        if ($boundary == $bs_check) {
-            $boundary = $bs_possible;
-        }
-        $tmp = preg_split("/--".preg_quote($boundary, '/')."((?=\s)|--)/", $input);
-
-        $len = count($tmp) -1;
-        for ($i = 1; $i < $len; $i++) {
-            if (strlen(trim($tmp[$i]))) {
-                $parts[] = $tmp[$i];
-            }
-        }
-        
-        // add the last part on if it does not end with the 'closing indicator'
-        if (!empty($tmp[$len]) && strlen(trim($tmp[$len])) && $tmp[$len][0] != '-') {
-            $parts[] = $tmp[$len];
-        }
-        return $parts;
-    }
-
-    /**
-     * Given a header, this function will decode it
-     * according to RFC2047. Probably not *exactly*
-     * conformant, but it does pass all the given
-     * examples (in RFC2047).
-     *
-     * @param string Input header value to decode
-     * @return string Decoded header value
-     * @access private
-     */
-    function _decodeHeader($input)
-    {
-        // Remove white space between encoded-words
-        $input = preg_replace('/(=\?[^?]+\?(q|b)\?[^?]*\?=)(\s)+=\?/i', '\1=?', $input);
-
-        // For each encoded-word...
-        while (preg_match('/(=\?([^?]+)\?(q|b)\?([^?]*)\?=)/i', $input, $matches)) {
-
-            $encoded  = $matches[1];
-            $charset  = $matches[2];
-            $encoding = $matches[3];
-            $text     = $matches[4];
-
-            switch (strtolower($encoding)) {
-                case 'b':
-                    $text = base64_decode($text);
-                    break;
-
-                case 'q':
-                    $text = str_replace('_', ' ', $text);
-                    preg_match_all('/=([a-f0-9]{2})/i', $text, $matches);
-                    foreach($matches[1] as $value)
-                        $text = str_replace('='.$value, chr(hexdec($value)), $text);
-                    break;
-            }
-
-            $input = str_replace($encoded, $text, $input);
-        }
-
-        return $input;
-    }
-
-    /**
-     * Given a body string and an encoding type,
-     * this function will decode and return it.
-     *
-     * @param  string Input body to decode
-     * @param  string Encoding type to use.
-     * @return string Decoded body
-     * @access private
-     */
-    function _decodeBody($input, $encoding = '7bit')
-    {
-        switch (strtolower($encoding)) {
-            case '7bit':
-                return $input;
-                break;
-
-            case 'quoted-printable':
-                return $this->_quotedPrintableDecode($input);
-                break;
-
-            case 'base64':
-                return base64_decode($input);
-                break;
-
-            default:
-                return $input;
-        }
-    }
-
-    /**
-     * Given a quoted-printable string, this
-     * function will decode and return it.
-     *
-     * @param  string Input body to decode
-     * @return string Decoded body
-     * @access private
-     */
-    function _quotedPrintableDecode($input)
-    {
-        // Remove soft line breaks
-        $input = preg_replace("/=\r?\n/", '', $input);
-
-        // Replace encoded characters
-		$input = preg_replace('/=([a-f0-9]{2})/ie', "chr(hexdec('\\1'))", $input);
-
-        return $input;
-    }
-
-    /**
-     * Checks the input for uuencoded files and returns
-     * an array of them. Can be called statically, eg:
-     *
-     * $files =& Mail_mimeDecode::uudecode($some_text);
-     *
-     * It will check for the begin 666 ... end syntax
-     * however and won't just blindly decode whatever you
-     * pass it.
-     *
-     * @param  string Input body to look for attahcments in
-     * @return array  Decoded bodies, filenames and permissions
-     * @access public
-     * @author Unknown
-     */
-    function &uudecode($input)
-    {
-        // Find all uuencoded sections
-        preg_match_all("/begin ([0-7]{3}) (.+)\r?\n(.+)\r?\nend/Us", $input, $matches);
-
-        for ($j = 0; $j < count($matches[3]); $j++) {
-
-            $str      = $matches[3][$j];
-            $filename = $matches[2][$j];
-            $fileperm = $matches[1][$j];
-
-            $file = '';
-            $str = preg_split("/\r?\n/", trim($str));
-            $strlen = count($str);
-
-            for ($i = 0; $i < $strlen; $i++) {
-                $pos = 1;
-                $d = 0;
-                $len=(int)(((ord(substr($str[$i],0,1)) -32) - ' ') & 077);
-
-                while (($d + 3 <= $len) AND ($pos + 4 <= strlen($str[$i]))) {
-                    $c0 = (ord(substr($str[$i],$pos,1)) ^ 0x20);
-                    $c1 = (ord(substr($str[$i],$pos+1,1)) ^ 0x20);
-                    $c2 = (ord(substr($str[$i],$pos+2,1)) ^ 0x20);
-                    $c3 = (ord(substr($str[$i],$pos+3,1)) ^ 0x20);
-                    $file .= chr(((($c0 - ' ') & 077) << 2) | ((($c1 - ' ') & 077) >> 4));
-
-                    $file .= chr(((($c1 - ' ') & 077) << 4) | ((($c2 - ' ') & 077) >> 2));
-
-                    $file .= chr(((($c2 - ' ') & 077) << 6) |  (($c3 - ' ') & 077));
-
-                    $pos += 4;
-                    $d += 3;
-                }
-
-                if (($d + 2 <= $len) && ($pos + 3 <= strlen($str[$i]))) {
-                    $c0 = (ord(substr($str[$i],$pos,1)) ^ 0x20);
-                    $c1 = (ord(substr($str[$i],$pos+1,1)) ^ 0x20);
-                    $c2 = (ord(substr($str[$i],$pos+2,1)) ^ 0x20);
-                    $file .= chr(((($c0 - ' ') & 077) << 2) | ((($c1 - ' ') & 077) >> 4));
-
-                    $file .= chr(((($c1 - ' ') & 077) << 4) | ((($c2 - ' ') & 077) >> 2));
-
-                    $pos += 3;
-                    $d += 2;
-                }
-
-                if (($d + 1 <= $len) && ($pos + 2 <= strlen($str[$i]))) {
-                    $c0 = (ord(substr($str[$i],$pos,1)) ^ 0x20);
-                    $c1 = (ord(substr($str[$i],$pos+1,1)) ^ 0x20);
-                    $file .= chr(((($c0 - ' ') & 077) << 2) | ((($c1 - ' ') & 077) >> 4));
-
-                }
-            }
-            $files[] = array('filename' => $filename, 'fileperm' => $fileperm, 'filedata' => $file);
-        }
-
-        return $files;
-    }
-
-    /**
-     * getSendArray() returns the arguments required for Mail::send()
-     * used to build the arguments for a mail::send() call 
-     *
-     * Usage:
-     * $mailtext = Full email (for example generated by a template)
-     * $decoder = new Mail_mimeDecode($mailtext);
-     * $parts =  $decoder->getSendArray();
-     * if (!PEAR::isError($parts) {
-     *     list($recipents,$headers,$body) = $parts;
-     *     $mail = Mail::factory('smtp');
-     *     $mail->send($recipents,$headers,$body);
-     * } else {
-     *     echo $parts->message;
-     * }
-     * @return mixed   array of recipeint, headers,body or Pear_Error
-     * @access public
-     * @author Alan Knowles <alan@akbkhome.com>
-     */
-    function getSendArray()
-    {
-        // prevent warning if this is not set
-        $this->_decode_headers = FALSE;
-        $headerlist =$this->_parseHeaders($this->_header);
-        $to = "";
-        if (!$headerlist) {
-            return $this->raiseError("Message did not contain headers");
-        }
-        foreach($headerlist as $item) {
-            $header[$item['name']] = $item['value'];
-            switch (strtolower($item['name'])) {
-                case "to":
-                case "cc":
-                case "bcc":
-                    $to .= ",".$item['value'];
-                default:
-                   break;
-            }
-        }
-        if ($to == "") {
-            return $this->raiseError("Message did not contain any recipents");
-        }
-        $to = substr($to,1);
-        return array($to,$header,$this->_body);
-    } 
-
-    /**
-     * Returns a xml copy of the output of
-     * Mail_mimeDecode::decode. Pass the output in as the
-     * argument. This function can be called statically. Eg:
-     *
-     * $output = $obj->decode();
-     * $xml    = Mail_mimeDecode::getXML($output);
-     *
-     * The DTD used for this should have been in the package. Or
-     * alternatively you can get it from cvs, or here:
-     * http://www.phpguru.org/xmail/xmail.dtd.
-     *
-     * @param  object Input to convert to xml. This should be the
-     *                output of the Mail_mimeDecode::decode function
-     * @return string XML version of input
-     * @access public
-     */
-    function getXML($input)
-    {
-        $crlf    =  "\r\n";
-        $output  = '<?xml version=\'1.0\'?>' . $crlf .
-                   '<!DOCTYPE email SYSTEM "http://www.phpguru.org/xmail/xmail.dtd">' . $crlf .
-                   '<email>' . $crlf .
-                   Mail_mimeDecode::_getXML($input) .
-                   '</email>';
-
-        return $output;
-    }
-
-    /**
-     * Function that does the actual conversion to xml. Does a single
-     * mimepart at a time.
-     *
-     * @param  object  Input to convert to xml. This is a mimepart object.
-     *                 It may or may not contain subparts.
-     * @param  integer Number of tabs to indent
-     * @return string  XML version of input
-     * @access private
-     */
-    function _getXML($input, $indent = 1)
-    {
-        $htab    =  "\t";
-        $crlf    =  "\r\n";
-        $output  =  '';
-        $headers = @(array)$input->headers;
-
-        foreach ($headers as $hdr_name => $hdr_value) {
-
-            // Multiple headers with this name
-            if (is_array($headers[$hdr_name])) {
-                for ($i = 0; $i < count($hdr_value); $i++) {
-                    $output .= Mail_mimeDecode::_getXML_helper($hdr_name, $hdr_value[$i], $indent);
-                }
-
-            // Only one header of this sort
-            } else {
-                $output .= Mail_mimeDecode::_getXML_helper($hdr_name, $hdr_value, $indent);
-            }
-        }
-
-        if (!empty($input->parts)) {
-            for ($i = 0; $i < count($input->parts); $i++) {
-                $output .= $crlf . str_repeat($htab, $indent) . '<mimepart>' . $crlf .
-                           Mail_mimeDecode::_getXML($input->parts[$i], $indent+1) .
-                           str_repeat($htab, $indent) . '</mimepart>' . $crlf;
-            }
-        } elseif (isset($input->body)) {
-            $output .= $crlf . str_repeat($htab, $indent) . '<body><![CDATA[' .
-                       $input->body . ']]></body>' . $crlf;
-        }
-
-        return $output;
-    }
-
-    /**
-     * Helper function to _getXML(). Returns xml of a header.
-     *
-     * @param  string  Name of header
-     * @param  string  Value of header
-     * @param  integer Number of tabs to indent
-     * @return string  XML version of input
-     * @access private
-     */
-    function _getXML_helper($hdr_name, $hdr_value, $indent)
-    {
-        $htab   = "\t";
-        $crlf   = "\r\n";
-        $return = '';
-
-        $new_hdr_value = ($hdr_name != 'received') ? Mail_mimeDecode::_parseHeaderValue($hdr_value) : array('value' => $hdr_value);
-        $new_hdr_name  = str_replace(' ', '-', ucwords(str_replace('-', ' ', $hdr_name)));
-
-        // Sort out any parameters
-        if (!empty($new_hdr_value['other'])) {
-            foreach ($new_hdr_value['other'] as $paramname => $paramvalue) {
-                $params[] = str_repeat($htab, $indent) . $htab . '<parameter>' . $crlf .
-                            str_repeat($htab, $indent) . $htab . $htab . '<paramname>' . htmlspecialchars($paramname) . '</paramname>' . $crlf .
-                            str_repeat($htab, $indent) . $htab . $htab . '<paramvalue>' . htmlspecialchars($paramvalue) . '</paramvalue>' . $crlf .
-                            str_repeat($htab, $indent) . $htab . '</parameter>' . $crlf;
-            }
-
-            $params = implode('', $params);
-        } else {
-            $params = '';
-        }
-
-        $return = str_repeat($htab, $indent) . '<header>' . $crlf .
-                  str_repeat($htab, $indent) . $htab . '<headername>' . htmlspecialchars($new_hdr_name) . '</headername>' . $crlf .
-                  str_repeat($htab, $indent) . $htab . '<headervalue>' . htmlspecialchars($new_hdr_value['value']) . '</headervalue>' . $crlf .
-                  $params .
-                  str_repeat($htab, $indent) . '</header>' . $crlf;
-
-        return $return;
-    }
-
-} // End of class
diff --git a/program/lib/Mail/mimePart.php b/program/lib/Mail/mimePart.php
deleted file mode 100644
index 93e891b..0000000
--- a/program/lib/Mail/mimePart.php
+++ /dev/null
@@ -1,1260 +0,0 @@
-<?php
-/**
- * The Mail_mimePart class is used to create MIME E-mail messages
- *
- * This class enables you to manipulate and build a mime email
- * from the ground up. The Mail_Mime class is a userfriendly api
- * to this class for people who aren't interested in the internals
- * of mime mail.
- * This class however allows full control over the email.
- *
- * Compatible with PHP versions 4 and 5
- *
- * LICENSE: This LICENSE is in the BSD license style.
- * Copyright (c) 2002-2003, Richard Heyes <richard@phpguru.org>
- * Copyright (c) 2003-2006, PEAR <pear-group@php.net>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - Neither the name of the authors, nor the names of its contributors 
- *   may be used to endorse or promote products derived from this 
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- * @category  Mail
- * @package   Mail_Mime
- * @author    Richard Heyes  <richard@phpguru.org>
- * @author    Cipriano Groenendal <cipri@php.net>
- * @author    Sean Coates <sean@php.net>
- * @author    Aleksander Machniak <alec@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license   http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version   CVS: $Id$
- * @link      http://pear.php.net/package/Mail_mime
- */
-
-
-/**
- * The Mail_mimePart class is used to create MIME E-mail messages
- *
- * This class enables you to manipulate and build a mime email
- * from the ground up. The Mail_Mime class is a userfriendly api
- * to this class for people who aren't interested in the internals
- * of mime mail.
- * This class however allows full control over the email.
- *
- * @category  Mail
- * @package   Mail_Mime
- * @author    Richard Heyes  <richard@phpguru.org>
- * @author    Cipriano Groenendal <cipri@php.net>
- * @author    Sean Coates <sean@php.net>
- * @author    Aleksander Machniak <alec@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license   http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version   Release: @package_version@
- * @link      http://pear.php.net/package/Mail_mime
- */
-class Mail_mimePart
-{
-    /**
-    * The encoding type of this part
-    *
-    * @var string
-    * @access private
-    */
-    var $_encoding;
-
-    /**
-    * An array of subparts
-    *
-    * @var array
-    * @access private
-    */
-    var $_subparts;
-
-    /**
-    * The output of this part after being built
-    *
-    * @var string
-    * @access private
-    */
-    var $_encoded;
-
-    /**
-    * Headers for this part
-    *
-    * @var array
-    * @access private
-    */
-    var $_headers;
-
-    /**
-    * The body of this part (not encoded)
-    *
-    * @var string
-    * @access private
-    */
-    var $_body;
-
-    /**
-    * The location of file with body of this part (not encoded)
-    *
-    * @var string
-    * @access private
-    */
-    var $_body_file;
-
-    /**
-    * The end-of-line sequence
-    *
-    * @var string
-    * @access private
-    */
-    var $_eol = "\r\n";
-
-
-    /**
-    * Constructor.
-    *
-    * Sets up the object.
-    *
-    * @param string $body   The body of the mime part if any.
-    * @param array  $params An associative array of optional parameters:
-    *     content_type      - The content type for this part eg multipart/mixed
-    *     encoding          - The encoding to use, 7bit, 8bit,
-    *                         base64, or quoted-printable
-    *     charset           - Content character set
-    *     cid               - Content ID to apply
-    *     disposition       - Content disposition, inline or attachment
-    *     filename          - Filename parameter for content disposition
-    *     description       - Content description
-    *     name_encoding     - Encoding of the attachment name (Content-Type)
-    *                         By default filenames are encoded using RFC2231
-    *                         Here you can set RFC2047 encoding (quoted-printable
-    *                         or base64) instead
-    *     filename_encoding - Encoding of the attachment filename (Content-Disposition)
-    *                         See 'name_encoding'
-    *     headers_charset   - Charset of the headers e.g. filename, description.
-    *                         If not set, 'charset' will be used
-    *     eol               - End of line sequence. Default: "\r\n"
-    *     headers           - Hash array with additional part headers. Array keys can be
-    *                         in form of <header_name>:<parameter_name>
-    *     body_file         - Location of file with part's body (instead of $body)
-    *
-    * @access public
-    */
-    function Mail_mimePart($body = '', $params = array())
-    {
-        if (!empty($params['eol'])) {
-            $this->_eol = $params['eol'];
-        } else if (defined('MAIL_MIMEPART_CRLF')) { // backward-copat.
-            $this->_eol = MAIL_MIMEPART_CRLF;
-        }
-
-        // Additional part headers
-        if (!empty($params['headers']) && is_array($params['headers'])) {
-            $headers = $params['headers'];
-        }
-
-        foreach ($params as $key => $value) {
-            switch ($key) {
-            case 'encoding':
-                $this->_encoding = $value;
-                $headers['Content-Transfer-Encoding'] = $value;
-                break;
-
-            case 'cid':
-                $headers['Content-ID'] = '<' . $value . '>';
-                break;
-
-            case 'location':
-                $headers['Content-Location'] = $value;
-                break;
-
-            case 'body_file':
-                $this->_body_file = $value;
-                break;
-
-            // for backward compatibility
-            case 'dfilename':
-                $params['filename'] = $value;
-                break;
-            }
-        }
-
-        // Default content-type
-        if (empty($params['content_type'])) {
-            $params['content_type'] = 'text/plain';
-        }
-
-        // Content-Type
-        $headers['Content-Type'] = $params['content_type'];
-        if (!empty($params['charset'])) {
-            $charset = "charset={$params['charset']}";
-            // place charset parameter in the same line, if possible
-            if ((strlen($headers['Content-Type']) + strlen($charset) + 16) <= 76) {
-                $headers['Content-Type'] .= '; ';
-            } else {
-                $headers['Content-Type'] .= ';' . $this->_eol . ' ';
-            }
-            $headers['Content-Type'] .= $charset;
-
-            // Default headers charset
-            if (!isset($params['headers_charset'])) {
-                $params['headers_charset'] = $params['charset'];
-            }
-        }
-
-        // header values encoding parameters
-        $h_charset  = !empty($params['headers_charset']) ? $params['headers_charset'] : 'US-ASCII';
-        $h_language = !empty($params['language']) ? $params['language'] : null;
-        $h_encoding = !empty($params['name_encoding']) ? $params['name_encoding'] : null;
-
-
-        if (!empty($params['filename'])) {
-            $headers['Content-Type'] .= ';' . $this->_eol;
-            $headers['Content-Type'] .= $this->_buildHeaderParam(
-                'name', $params['filename'], $h_charset, $h_language, $h_encoding
-            );
-        }
-
-        // Content-Disposition
-        if (!empty($params['disposition'])) {
-            $headers['Content-Disposition'] = $params['disposition'];
-            if (!empty($params['filename'])) {
-                $headers['Content-Disposition'] .= ';' . $this->_eol;
-                $headers['Content-Disposition'] .= $this->_buildHeaderParam(
-                    'filename', $params['filename'], $h_charset, $h_language,
-                    !empty($params['filename_encoding']) ? $params['filename_encoding'] : null
-                );
-            }
-
-            // add attachment size
-            $size = $this->_body_file ? filesize($this->_body_file) : strlen($body);
-            if ($size) {
-                $headers['Content-Disposition'] .= ';' . $this->_eol . ' size=' . $size;
-            }
-        }
-
-        if (!empty($params['description'])) {
-            $headers['Content-Description'] = $this->encodeHeader(
-                'Content-Description', $params['description'], $h_charset, $h_encoding,
-                $this->_eol
-            );
-        }
-
-        // Search and add existing headers' parameters
-        foreach ($headers as $key => $value) {
-            $items = explode(':', $key);
-            if (count($items) == 2) {
-                $header = $items[0];
-                $param  = $items[1];
-                if (isset($headers[$header])) {
-                    $headers[$header] .= ';' . $this->_eol;
-                }
-                $headers[$header] .= $this->_buildHeaderParam(
-                    $param, $value, $h_charset, $h_language, $h_encoding
-                );
-                unset($headers[$key]);
-            }
-        }
-
-        // Default encoding
-        if (!isset($this->_encoding)) {
-            $this->_encoding = '7bit';
-        }
-
-        // Assign stuff to member variables
-        $this->_encoded  = array();
-        $this->_headers  = $headers;
-        $this->_body     = $body;
-    }
-
-    /**
-     * Encodes and returns the email. Also stores
-     * it in the encoded member variable
-     *
-     * @param string $boundary Pre-defined boundary string
-     *
-     * @return An associative array containing two elements,
-     *         body and headers. The headers element is itself
-     *         an indexed array. On error returns PEAR error object.
-     * @access public
-     */
-    function encode($boundary=null)
-    {
-        $encoded =& $this->_encoded;
-
-        if (count($this->_subparts)) {
-            $boundary = $boundary ? $boundary : '=_' . md5(rand() . microtime());
-            $eol = $this->_eol;
-
-            $this->_headers['Content-Type'] .= ";$eol boundary=\"$boundary\"";
-
-            $encoded['body'] = ''; 
-
-            for ($i = 0; $i < count($this->_subparts); $i++) {
-                $encoded['body'] .= '--' . $boundary . $eol;
-                $tmp = $this->_subparts[$i]->encode();
-                if ($this->_isError($tmp)) {
-                    return $tmp;
-                }
-                foreach ($tmp['headers'] as $key => $value) {
-                    $encoded['body'] .= $key . ': ' . $value . $eol;
-                }
-                $encoded['body'] .= $eol . $tmp['body'] . $eol;
-            }
-
-            $encoded['body'] .= '--' . $boundary . '--' . $eol;
-
-        } else if ($this->_body) {
-            $encoded['body'] = $this->_getEncodedData($this->_body, $this->_encoding);
-        } else if ($this->_body_file) {
-            // Temporarily reset magic_quotes_runtime for file reads and writes
-            if ($magic_quote_setting = get_magic_quotes_runtime()) {
-                @ini_set('magic_quotes_runtime', 0);
-            }
-            $body = $this->_getEncodedDataFromFile($this->_body_file, $this->_encoding);
-            if ($magic_quote_setting) {
-                @ini_set('magic_quotes_runtime', $magic_quote_setting);
-            }
-
-            if ($this->_isError($body)) {
-                return $body;
-            }
-            $encoded['body'] = $body;
-        } else {
-            $encoded['body'] = '';
-        }
-
-        // Add headers to $encoded
-        $encoded['headers'] =& $this->_headers;
-
-        return $encoded;
-    }
-
-    /**
-     * Encodes and saves the email into file. File must exist.
-     * Data will be appended to the file.
-     *
-     * @param string  $filename  Output file location
-     * @param string  $boundary  Pre-defined boundary string
-     * @param boolean $skip_head True if you don't want to save headers
-     *
-     * @return array An associative array containing message headers
-     *               or PEAR error object
-     * @access public
-     * @since 1.6.0
-     */
-    function encodeToFile($filename, $boundary=null, $skip_head=false)
-    {
-        if (file_exists($filename) && !is_writable($filename)) {
-            $err = $this->_raiseError('File is not writeable: ' . $filename);
-            return $err;
-        }
-
-        if (!($fh = fopen($filename, 'ab'))) {
-            $err = $this->_raiseError('Unable to open file: ' . $filename);
-            return $err;
-        }
-
-        // Temporarily reset magic_quotes_runtime for file reads and writes
-        if ($magic_quote_setting = get_magic_quotes_runtime()) {
-            @ini_set('magic_quotes_runtime', 0);
-        }
-
-        $res = $this->_encodePartToFile($fh, $boundary, $skip_head);
-
-        fclose($fh);
-
-        if ($magic_quote_setting) {
-            @ini_set('magic_quotes_runtime', $magic_quote_setting);
-        }
-
-        return $this->_isError($res) ? $res : $this->_headers;
-    }
-
-    /**
-     * Encodes given email part into file
-     *
-     * @param string  $fh        Output file handle
-     * @param string  $boundary  Pre-defined boundary string
-     * @param boolean $skip_head True if you don't want to save headers
-     *
-     * @return array True on sucess or PEAR error object
-     * @access private
-     */
-    function _encodePartToFile($fh, $boundary=null, $skip_head=false)
-    {
-        $eol = $this->_eol;
-
-        if (count($this->_subparts)) {
-            $boundary = $boundary ? $boundary : '=_' . md5(rand() . microtime());
-            $this->_headers['Content-Type'] .= ";$eol boundary=\"$boundary\"";
-        }
-
-        if (!$skip_head) {
-            foreach ($this->_headers as $key => $value) {
-                fwrite($fh, $key . ': ' . $value . $eol);
-            }
-            $f_eol = $eol;
-        } else {
-            $f_eol = '';
-        }
-
-        if (count($this->_subparts)) {
-            for ($i = 0; $i < count($this->_subparts); $i++) {
-                fwrite($fh, $f_eol . '--' . $boundary . $eol);
-                $res = $this->_subparts[$i]->_encodePartToFile($fh);
-                if ($this->_isError($res)) {
-                    return $res;
-                }
-                $f_eol = $eol;
-            }
-
-            fwrite($fh, $eol . '--' . $boundary . '--' . $eol);
-
-        } else if ($this->_body) {
-            fwrite($fh, $f_eol . $this->_getEncodedData($this->_body, $this->_encoding));
-        } else if ($this->_body_file) {
-            fwrite($fh, $f_eol);
-            $res = $this->_getEncodedDataFromFile(
-                $this->_body_file, $this->_encoding, $fh
-            );
-            if ($this->_isError($res)) {
-                return $res;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Adds a subpart to current mime part and returns
-     * a reference to it
-     *
-     * @param string $body   The body of the subpart, if any.
-     * @param array  $params The parameters for the subpart, same
-     *                       as the $params argument for constructor.
-     *
-     * @return Mail_mimePart A reference to the part you just added. In PHP4, it is
-     *                       crucial if using multipart/* in your subparts that
-     *                       you use =& in your script when calling this function,
-     *                       otherwise you will not be able to add further subparts.
-     * @access public
-     */
-    function &addSubpart($body, $params)
-    {
-        $this->_subparts[] = $part = new Mail_mimePart($body, $params);
-        return $part;
-    }
-
-    /**
-     * Returns encoded data based upon encoding passed to it
-     *
-     * @param string $data     The data to encode.
-     * @param string $encoding The encoding type to use, 7bit, base64,
-     *                         or quoted-printable.
-     *
-     * @return string
-     * @access private
-     */
-    function _getEncodedData($data, $encoding)
-    {
-        switch ($encoding) {
-        case 'quoted-printable':
-            return $this->_quotedPrintableEncode($data);
-            break;
-
-        case 'base64':
-            return rtrim(chunk_split(base64_encode($data), 76, $this->_eol));
-            break;
-
-        case '8bit':
-        case '7bit':
-        default:
-            return $data;
-        }
-    }
-
-    /**
-     * Returns encoded data based upon encoding passed to it
-     *
-     * @param string   $filename Data file location
-     * @param string   $encoding The encoding type to use, 7bit, base64,
-     *                           or quoted-printable.
-     * @param resource $fh       Output file handle. If set, data will be
-     *                           stored into it instead of returning it
-     *
-     * @return string Encoded data or PEAR error object
-     * @access private
-     */
-    function _getEncodedDataFromFile($filename, $encoding, $fh=null)
-    {
-        if (!is_readable($filename)) {
-            $err = $this->_raiseError('Unable to read file: ' . $filename);
-            return $err;
-        }
-
-        if (!($fd = fopen($filename, 'rb'))) {
-            $err = $this->_raiseError('Could not open file: ' . $filename);
-            return $err;
-        }
-
-        $data = '';
-
-        switch ($encoding) {
-        case 'quoted-printable':
-            while (!feof($fd)) {
-                $buffer = $this->_quotedPrintableEncode(fgets($fd));
-                if ($fh) {
-                    fwrite($fh, $buffer);
-                } else {
-                    $data .= $buffer;
-                }
-            }
-            break;
-
-        case 'base64':
-            while (!feof($fd)) {
-                // Should read in a multiple of 57 bytes so that
-                // the output is 76 bytes per line. Don't use big chunks
-                // because base64 encoding is memory expensive
-                $buffer = fread($fd, 57 * 9198); // ca. 0.5 MB
-                $buffer = base64_encode($buffer);
-                $buffer = chunk_split($buffer, 76, $this->_eol);
-                if (feof($fd)) {
-                    $buffer = rtrim($buffer);
-                }
-
-                if ($fh) {
-                    fwrite($fh, $buffer);
-                } else {
-                    $data .= $buffer;
-                }
-            }
-            break;
-
-        case '8bit':
-        case '7bit':
-        default:
-            while (!feof($fd)) {
-                $buffer = fread($fd, 1048576); // 1 MB
-                if ($fh) {
-                    fwrite($fh, $buffer);
-                } else {
-                    $data .= $buffer;
-                }
-            }
-        }
-
-        fclose($fd);
-
-        if (!$fh) {
-            return $data;
-        }
-    }
-
-    /**
-     * Encodes data to quoted-printable standard.
-     *
-     * @param string $input    The data to encode
-     * @param int    $line_max Optional max line length. Should
-     *                         not be more than 76 chars
-     *
-     * @return string Encoded data
-     *
-     * @access private
-     */
-    function _quotedPrintableEncode($input , $line_max = 76)
-    {
-        $eol = $this->_eol;
-        /*
-        // imap_8bit() is extremely fast, but doesn't handle properly some characters
-        if (function_exists('imap_8bit') && $line_max == 76) {
-            $input = preg_replace('/\r?\n/', "\r\n", $input);
-            $input = imap_8bit($input);
-            if ($eol != "\r\n") {
-                $input = str_replace("\r\n", $eol, $input);
-            }
-            return $input;
-        }
-        */
-        $lines  = preg_split("/\r?\n/", $input);
-        $escape = '=';
-        $output = '';
-
-        while (list($idx, $line) = each($lines)) {
-            $newline = '';
-            $i = 0;
-
-            while (isset($line[$i])) {
-                $char = $line[$i];
-                $dec  = ord($char);
-                $i++;
-
-                if (($dec == 32) && (!isset($line[$i]))) {
-                    // convert space at eol only
-                    $char = '=20';
-                } elseif ($dec == 9 && isset($line[$i])) {
-                    ; // Do nothing if a TAB is not on eol
-                } elseif (($dec == 61) || ($dec < 32) || ($dec > 126)) {
-                    $char = $escape . sprintf('%02X', $dec);
-                } elseif (($dec == 46) && (($newline == '')
-                    || ((strlen($newline) + strlen("=2E")) >= $line_max))
-                ) {
-                    // Bug #9722: convert full-stop at bol,
-                    // some Windows servers need this, won't break anything (cipri)
-                    // Bug #11731: full-stop at bol also needs to be encoded
-                    // if this line would push us over the line_max limit.
-                    $char = '=2E';
-                }
-
-                // Note, when changing this line, also change the ($dec == 46)
-                // check line, as it mimics this line due to Bug #11731
-                // EOL is not counted
-                if ((strlen($newline) + strlen($char)) >= $line_max) {
-                    // soft line break; " =\r\n" is okay
-                    $output  .= $newline . $escape . $eol;
-                    $newline  = '';
-                }
-                $newline .= $char;
-            } // end of for
-            $output .= $newline . $eol;
-            unset($lines[$idx]);
-        }
-        // Don't want last crlf
-        $output = substr($output, 0, -1 * strlen($eol));
-        return $output;
-    }
-
-    /**
-     * Encodes the parameter of a header.
-     *
-     * @param string $name      The name of the header-parameter
-     * @param string $value     The value of the paramter
-     * @param string $charset   The characterset of $value
-     * @param string $language  The language used in $value
-     * @param string $encoding  Parameter encoding. If not set, parameter value
-     *                          is encoded according to RFC2231
-     * @param int    $maxLength The maximum length of a line. Defauls to 75
-     *
-     * @return string
-     *
-     * @access private
-     */
-    function _buildHeaderParam($name, $value, $charset=null, $language=null,
-        $encoding=null, $maxLength=75
-    ) {
-        // RFC 2045:
-        // value needs encoding if contains non-ASCII chars or is longer than 78 chars
-        if (!preg_match('#[^\x20-\x7E]#', $value)) {
-            $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D'
-                . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#';
-            if (!preg_match($token_regexp, $value)) {
-                // token
-                if (strlen($name) + strlen($value) + 3 <= $maxLength) {
-                    return " {$name}={$value}";
-                }
-            } else {
-                // quoted-string
-                $quoted = addcslashes($value, '\\"');
-                if (strlen($name) + strlen($quoted) + 5 <= $maxLength) {
-                    return " {$name}=\"{$quoted}\"";
-                }
-            }
-        }
-
-        // RFC2047: use quoted-printable/base64 encoding
-        if ($encoding == 'quoted-printable' || $encoding == 'base64') {
-            return $this->_buildRFC2047Param($name, $value, $charset, $encoding);
-        }
-
-        // RFC2231:
-        $encValue = preg_replace_callback(
-            '/([^\x21\x23\x24\x26\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E])/',
-            array($this, '_encodeReplaceCallback'), $value
-        );
-        $value = "$charset'$language'$encValue";
-
-        $header = " {$name}*={$value}";
-        if (strlen($header) <= $maxLength) {
-            return $header;
-        }
-
-        $preLength = strlen(" {$name}*0*=");
-        $maxLength = max(16, $maxLength - $preLength - 3);
-        $maxLengthReg = "|(.{0,$maxLength}[^\%][^\%])|";
-
-        $headers = array();
-        $headCount = 0;
-        while ($value) {
-            $matches = array();
-            $found = preg_match($maxLengthReg, $value, $matches);
-            if ($found) {
-                $headers[] = " {$name}*{$headCount}*={$matches[0]}";
-                $value = substr($value, strlen($matches[0]));
-            } else {
-                $headers[] = " {$name}*{$headCount}*={$value}";
-                $value = '';
-            }
-            $headCount++;
-        }
-
-        $headers = implode(';' . $this->_eol, $headers);
-        return $headers;
-    }
-
-    /**
-     * Encodes header parameter as per RFC2047 if needed
-     *
-     * @param string $name      The parameter name
-     * @param string $value     The parameter value
-     * @param string $charset   The parameter charset
-     * @param string $encoding  Encoding type (quoted-printable or base64)
-     * @param int    $maxLength Encoded parameter max length. Default: 76
-     *
-     * @return string Parameter line
-     * @access private
-     */
-    function _buildRFC2047Param($name, $value, $charset,
-        $encoding='quoted-printable', $maxLength=76
-    ) {
-        // WARNING: RFC 2047 says: "An 'encoded-word' MUST NOT be used in
-        // parameter of a MIME Content-Type or Content-Disposition field",
-        // but... it's supported by many clients/servers
-        $quoted = '';
-
-        if ($encoding == 'base64') {
-            $value = base64_encode($value);
-            $prefix = '=?' . $charset . '?B?';
-            $suffix = '?=';
-
-            // 2 x SPACE, 2 x '"', '=', ';'
-            $add_len = strlen($prefix . $suffix) + strlen($name) + 6;
-            $len = $add_len + strlen($value);
-
-            while ($len > $maxLength) { 
-                // We can cut base64-encoded string every 4 characters
-                $real_len = floor(($maxLength - $add_len) / 4) * 4;
-                $_quote = substr($value, 0, $real_len);
-                $value = substr($value, $real_len);
-
-                $quoted .= $prefix . $_quote . $suffix . $this->_eol . ' ';
-                $add_len = strlen($prefix . $suffix) + 4; // 2 x SPACE, '"', ';'
-                $len = strlen($value) + $add_len;
-            }
-            $quoted .= $prefix . $value . $suffix;
-
-        } else {
-            // quoted-printable
-            $value = $this->encodeQP($value);
-            $prefix = '=?' . $charset . '?Q?';
-            $suffix = '?=';
-
-            // 2 x SPACE, 2 x '"', '=', ';'
-            $add_len = strlen($prefix . $suffix) + strlen($name) + 6;
-            $len = $add_len + strlen($value);
-
-            while ($len > $maxLength) {
-                $length = $maxLength - $add_len;
-                // don't break any encoded letters
-                if (preg_match("/^(.{0,$length}[^\=][^\=])/", $value, $matches)) {
-                    $_quote = $matches[1];
-                }
-
-                $quoted .= $prefix . $_quote . $suffix . $this->_eol . ' ';
-                $value = substr($value, strlen($_quote));
-                $add_len = strlen($prefix . $suffix) + 4; // 2 x SPACE, '"', ';'
-                $len = strlen($value) + $add_len;
-            }
-
-            $quoted .= $prefix . $value . $suffix;
-        }
-
-        return " {$name}=\"{$quoted}\"";
-    }
-
-    /**
-     * Encodes a header as per RFC2047
-     *
-     * @param string $name     The header name
-     * @param string $value    The header data to encode
-     * @param string $charset  Character set name
-     * @param string $encoding Encoding name (base64 or quoted-printable)
-     * @param string $eol      End-of-line sequence. Default: "\r\n"
-     *
-     * @return string          Encoded header data (without a name)
-     * @access public
-     * @since 1.6.1
-     */
-    function encodeHeader($name, $value, $charset='ISO-8859-1',
-        $encoding='quoted-printable', $eol="\r\n"
-    ) {
-        // Structured headers
-        $comma_headers = array(
-            'from', 'to', 'cc', 'bcc', 'sender', 'reply-to',
-            'resent-from', 'resent-to', 'resent-cc', 'resent-bcc',
-            'resent-sender', 'resent-reply-to',
-            'mail-reply-to', 'mail-followup-to',
-            'return-receipt-to', 'disposition-notification-to',
-        );
-        $other_headers = array(
-            'references', 'in-reply-to', 'message-id', 'resent-message-id',
-        );
-
-        $name = strtolower($name);
-
-        if (in_array($name, $comma_headers)) {
-            $separator = ',';
-        } else if (in_array($name, $other_headers)) {
-            $separator = ' ';
-        }
-
-        if (!$charset) {
-            $charset = 'ISO-8859-1';
-        }
-
-        // Structured header (make sure addr-spec inside is not encoded)
-        if (!empty($separator)) {
-            // Simple e-mail address regexp
-            $email_regexp = '([^\s<]+|("[^\r\n"]+"))@\S+';
-
-            $parts = Mail_mimePart::_explodeQuotedString("[\t$separator]", $value);
-            $value = '';
-
-            foreach ($parts as $part) {
-                $part = preg_replace('/\r?\n[\s\t]*/', $eol . ' ', $part);
-                $part = trim($part);
-
-                if (!$part) {
-                    continue;
-                }
-                if ($value) {
-                    $value .= $separator == ',' ? $separator . ' ' : ' ';
-                } else {
-                    $value = $name . ': ';
-                }
-
-                // let's find phrase (name) and/or addr-spec
-                if (preg_match('/^<' . $email_regexp . '>$/', $part)) {
-                    $value .= $part;
-                } else if (preg_match('/^' . $email_regexp . '$/', $part)) {
-                    // address without brackets and without name
-                    $value .= $part;
-                } else if (preg_match('/<*' . $email_regexp . '>*$/', $part, $matches)) {
-                    // address with name (handle name)
-                    $address = $matches[0];
-                    $word = str_replace($address, '', $part);
-                    $word = trim($word);
-                    // check if phrase requires quoting
-                    if ($word) {
-                        // non-ASCII: require encoding
-                        if (preg_match('#([^\s\x21-\x7E]){1}#', $word)) {
-                            if ($word[0] == '"' && $word[strlen($word)-1] == '"') {
-                                // de-quote quoted-string, encoding changes
-                                // string to atom
-                                $search = array("\\\"", "\\\\");
-                                $replace = array("\"", "\\");
-                                $word = str_replace($search, $replace, $word);
-                                $word = substr($word, 1, -1);
-                            }
-                            // find length of last line
-                            if (($pos = strrpos($value, $eol)) !== false) {
-                                $last_len = strlen($value) - $pos;
-                            } else {
-                                $last_len = strlen($value);
-                            }
-                            $word = Mail_mimePart::encodeHeaderValue(
-                                $word, $charset, $encoding, $last_len, $eol
-                            );
-                        } else if (($word[0] != '"' || $word[strlen($word)-1] != '"')
-                            && preg_match('/[\(\)\<\>\\\.\[\]@,;:"]/', $word)
-                        ) {
-                            // ASCII: quote string if needed
-                            $word = '"'.addcslashes($word, '\\"').'"';
-                        }
-                    }
-                    $value .= $word.' '.$address;
-                } else {
-                    // addr-spec not found, don't encode (?)
-                    $value .= $part;
-                }
-
-                // RFC2822 recommends 78 characters limit, use 76 from RFC2047
-                $value = wordwrap($value, 76, $eol . ' ');
-            }
-
-            // remove header name prefix (there could be EOL too)
-            $value = preg_replace(
-                '/^'.$name.':('.preg_quote($eol, '/').')* /', '', $value
-            );
-        } else {
-            // Unstructured header
-            // non-ASCII: require encoding
-            if (preg_match('#([^\s\x21-\x7E]){1}#', $value)) {
-                if ($value[0] == '"' && $value[strlen($value)-1] == '"') {
-                    // de-quote quoted-string, encoding changes
-                    // string to atom
-                    $search = array("\\\"", "\\\\");
-                    $replace = array("\"", "\\");
-                    $value = str_replace($search, $replace, $value);
-                    $value = substr($value, 1, -1);
-                }
-                $value = Mail_mimePart::encodeHeaderValue(
-                    $value, $charset, $encoding, strlen($name) + 2, $eol
-                );
-            } else if (strlen($name.': '.$value) > 78) {
-                // ASCII: check if header line isn't too long and use folding
-                $value = preg_replace('/\r?\n[\s\t]*/', $eol . ' ', $value);
-                $tmp = wordwrap($name.': '.$value, 78, $eol . ' ');
-                $value = preg_replace('/^'.$name.':\s*/', '', $tmp);
-                // hard limit 998 (RFC2822)
-                $value = wordwrap($value, 998, $eol . ' ', true);
-            }
-        }
-
-        return $value;
-    }
-
-    /**
-     * Explode quoted string
-     *
-     * @param string $delimiter Delimiter expression string for preg_match()
-     * @param string $string    Input string
-     *
-     * @return array            String tokens array
-     * @access private
-     */
-    function _explodeQuotedString($delimiter, $string)
-    {
-        $result = array();
-        $strlen = strlen($string);
-
-        for ($q=$p=$i=0; $i < $strlen; $i++) {
-            if ($string[$i] == "\""
-                && (empty($string[$i-1]) || $string[$i-1] != "\\")
-            ) {
-                $q = $q ? false : true;
-            } else if (!$q && preg_match("/$delimiter/", $string[$i])) {
-                $result[] = substr($string, $p, $i - $p);
-                $p = $i + 1;
-            }
-        }
-
-        $result[] = substr($string, $p);
-        return $result;
-    }
-
-    /**
-     * Encodes a header value as per RFC2047
-     *
-     * @param string $value      The header data to encode
-     * @param string $charset    Character set name
-     * @param string $encoding   Encoding name (base64 or quoted-printable)
-     * @param int    $prefix_len Prefix length. Default: 0
-     * @param string $eol        End-of-line sequence. Default: "\r\n"
-     *
-     * @return string            Encoded header data
-     * @access public
-     * @since 1.6.1
-     */
-    function encodeHeaderValue($value, $charset, $encoding, $prefix_len=0, $eol="\r\n")
-    {
-        // #17311: Use multibyte aware method (requires mbstring extension)
-        if ($result = Mail_mimePart::encodeMB($value, $charset, $encoding, $prefix_len, $eol)) {
-            return $result;
-        }
-
-        // Generate the header using the specified params and dynamicly
-        // determine the maximum length of such strings.
-        // 75 is the value specified in the RFC.
-        $encoding = $encoding == 'base64' ? 'B' : 'Q';
-        $prefix = '=?' . $charset . '?' . $encoding .'?';
-        $suffix = '?=';
-        $maxLength = 75 - strlen($prefix . $suffix);
-        $maxLength1stLine = $maxLength - $prefix_len;
-
-        if ($encoding == 'B') {
-            // Base64 encode the entire string
-            $value = base64_encode($value);
-
-            // We can cut base64 every 4 characters, so the real max
-            // we can get must be rounded down.
-            $maxLength = $maxLength - ($maxLength % 4);
-            $maxLength1stLine = $maxLength1stLine - ($maxLength1stLine % 4);
-
-            $cutpoint = $maxLength1stLine;
-            $output = '';
-
-            while ($value) {
-                // Split translated string at every $maxLength
-                $part = substr($value, 0, $cutpoint);
-                $value = substr($value, $cutpoint);
-                $cutpoint = $maxLength;
-                // RFC 2047 specifies that any split header should
-                // be separated by a CRLF SPACE.
-                if ($output) {
-                    $output .= $eol . ' ';
-                }
-                $output .= $prefix . $part . $suffix;
-            }
-            $value = $output;
-        } else {
-            // quoted-printable encoding has been selected
-            $value = Mail_mimePart::encodeQP($value);
-
-            // This regexp will break QP-encoded text at every $maxLength
-            // but will not break any encoded letters.
-            $reg1st = "|(.{0,$maxLength1stLine}[^\=][^\=])|";
-            $reg2nd = "|(.{0,$maxLength}[^\=][^\=])|";
-
-            if (strlen($value) > $maxLength1stLine) {
-                // Begin with the regexp for the first line.
-                $reg = $reg1st;
-                $output = '';
-                while ($value) {
-                    // Split translated string at every $maxLength
-                    // But make sure not to break any translated chars.
-                    $found = preg_match($reg, $value, $matches);
-
-                    // After this first line, we need to use a different
-                    // regexp for the first line.
-                    $reg = $reg2nd;
-
-                    // Save the found part and encapsulate it in the
-                    // prefix & suffix. Then remove the part from the
-                    // $value_out variable.
-                    if ($found) {
-                        $part = $matches[0];
-                        $len = strlen($matches[0]);
-                        $value = substr($value, $len);
-                    } else {
-                        $part = $value;
-                        $value = '';
-                    }
-
-                    // RFC 2047 specifies that any split header should
-                    // be separated by a CRLF SPACE
-                    if ($output) {
-                        $output .= $eol . ' ';
-                    }
-                    $output .= $prefix . $part . $suffix;
-                }
-                $value = $output;
-            } else {
-                $value = $prefix . $value . $suffix;
-            }
-        }
-
-        return $value;
-    }
-
-    /**
-     * Encodes the given string using quoted-printable
-     *
-     * @param string $str String to encode
-     *
-     * @return string     Encoded string
-     * @access public
-     * @since 1.6.0
-     */
-    function encodeQP($str)
-    {
-        // Bug #17226 RFC 2047 restricts some characters
-        // if the word is inside a phrase, permitted chars are only:
-        // ASCII letters, decimal digits, "!", "*", "+", "-", "/", "=", and "_"
-
-        // "=",  "_",  "?" must be encoded
-        $regexp = '/([\x22-\x29\x2C\x2E\x3A-\x40\x5B-\x60\x7B-\x7E\x80-\xFF])/';
-        $str = preg_replace_callback(
-            $regexp, array('Mail_mimePart', '_qpReplaceCallback'), $str
-        );
-
-        return str_replace(' ', '_', $str);
-    }
-
-    /**
-     * Encodes the given string using base64 or quoted-printable.
-     * This method makes sure that encoded-word represents an integral
-     * number of characters as per RFC2047.
-     *
-     * @param string $str        String to encode
-     * @param string $charset    Character set name
-     * @param string $encoding   Encoding name (base64 or quoted-printable)
-     * @param int    $prefix_len Prefix length. Default: 0
-     * @param string $eol        End-of-line sequence. Default: "\r\n"
-     *
-     * @return string     Encoded string
-     * @access public
-     * @since 1.8.0
-     */
-    function encodeMB($str, $charset, $encoding, $prefix_len=0, $eol="\r\n")
-    {
-        if (!function_exists('mb_substr') || !function_exists('mb_strlen')) {
-            return;
-        }
-
-        $encoding = $encoding == 'base64' ? 'B' : 'Q';
-        // 75 is the value specified in the RFC
-        $prefix = '=?' . $charset . '?'.$encoding.'?';
-        $suffix = '?=';
-        $maxLength = 75 - strlen($prefix . $suffix);
-
-        // A multi-octet character may not be split across adjacent encoded-words
-        // So, we'll loop over each character
-        // mb_stlen() with wrong charset will generate a warning here and return null
-        $length      = mb_strlen($str, $charset);
-        $result      = '';
-        $line_length = $prefix_len;
-
-        if ($encoding == 'B') {
-            // base64
-            $start = 0;
-            $prev  = '';
-
-            for ($i=1; $i<=$length; $i++) {
-                // See #17311
-                $chunk = mb_substr($str, $start, $i-$start, $charset);
-                $chunk = base64_encode($chunk);
-                $chunk_len = strlen($chunk);
-
-                if ($line_length + $chunk_len == $maxLength || $i == $length) {
-                    if ($result) {
-                        $result .= "\n";
-                    }
-                    $result .= $chunk;
-                    $line_length = 0;
-                    $start = $i;
-                } else if ($line_length + $chunk_len > $maxLength) {
-                    if ($result) {
-                        $result .= "\n";
-                    }
-                    if ($prev) {
-                        $result .= $prev;
-                    }
-                    $line_length = 0;
-                    $start = $i - 1;
-                } else {
-                    $prev = $chunk;
-                }
-            }
-        } else {
-            // quoted-printable
-            // see encodeQP()
-            $regexp = '/([\x22-\x29\x2C\x2E\x3A-\x40\x5B-\x60\x7B-\x7E\x80-\xFF])/';
-
-            for ($i=0; $i<=$length; $i++) {
-                $char = mb_substr($str, $i, 1, $charset);
-                // RFC recommends underline (instead of =20) in place of the space
-                // that's one of the reasons why we're not using iconv_mime_encode()
-                if ($char == ' ') {
-                    $char = '_';
-                    $char_len = 1;
-                } else {
-                    $char = preg_replace_callback(
-                        $regexp, array('Mail_mimePart', '_qpReplaceCallback'), $char
-                    );
-                    $char_len = strlen($char);
-                }
-
-                if ($line_length + $char_len > $maxLength) {
-                    if ($result) {
-                        $result .= "\n";
-                    }
-                    $line_length = 0;
-                }
-
-                $result      .= $char;
-                $line_length += $char_len;
-            }
-        }
-
-        if ($result) {
-            $result = $prefix
-                .str_replace("\n", $suffix.$eol.' '.$prefix, $result).$suffix;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Callback function to replace extended characters (\x80-xFF) with their
-     * ASCII values (RFC2047: quoted-printable)
-     *
-     * @param array $matches Preg_replace's matches array
-     *
-     * @return string        Encoded character string
-     * @access private
-     */
-    function _qpReplaceCallback($matches)
-    {
-        return sprintf('=%02X', ord($matches[1]));
-    }
-
-    /**
-     * Callback function to replace extended characters (\x80-xFF) with their
-     * ASCII values (RFC2231)
-     *
-     * @param array $matches Preg_replace's matches array
-     *
-     * @return string        Encoded character string
-     * @access private
-     */
-    function _encodeReplaceCallback($matches)
-    {
-        return sprintf('%%%02X', ord($matches[1]));
-    }
-
-    /**
-     * PEAR::isError implementation
-     *
-     * @param mixed $data Object
-     *
-     * @return bool True if object is an instance of PEAR_Error
-     * @access private
-     */
-    function _isError($data)
-    {
-        // PEAR::isError() is not PHP 5.4 compatible (see Bug #19473)
-        if (is_object($data) && is_a($data, 'PEAR_Error')) {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * PEAR::raiseError implementation
-     *
-     * @param $message A text error message
-     *
-     * @return PEAR_Error Instance of PEAR_Error
-     * @access private
-     */
-    function _raiseError($message)
-    {
-        // PEAR::raiseError() is not PHP 5.4 compatible
-        return new PEAR_Error($message);
-    }
-
-} // End of class
diff --git a/program/lib/Net/IDNA2.php b/program/lib/Net/IDNA2.php
deleted file mode 100644
index 8c366fb..0000000
--- a/program/lib/Net/IDNA2.php
+++ /dev/null
@@ -1,3402 +0,0 @@
-<?php
-
-// {{{ license
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
-//
-// +----------------------------------------------------------------------+
-// | This library is free software; you can redistribute it and/or modify |
-// | it under the terms of the GNU Lesser General Public License as       |
-// | published by the Free Software Foundation; either version 2.1 of the |
-// | License, or (at your option) any later version.                      |
-// |                                                                      |
-// | This library 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    |
-// | Lesser General Public License for more details.                      |
-// |                                                                      |
-// | You should have received a copy of the GNU Lesser General Public     |
-// | License along with this library; if not, write to the Free Software  |
-// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 |
-// | USA.                                                                 |
-// +----------------------------------------------------------------------+
-//
-
-// }}}
-require_once 'Net/IDNA2/Exception.php';
-require_once 'Net/IDNA2/Exception/Nameprep.php';
-
-/**
- * Encode/decode Internationalized Domain Names.
- *
- * The class allows to convert internationalized domain names
- * (see RFC 3490 for details) as they can be used with various registries worldwide
- * to be translated between their original (localized) form and their encoded form
- * as it will be used in the DNS (Domain Name System).
- *
- * The class provides two public methods, encode() and decode(), which do exactly
- * what you would expect them to do. You are allowed to use complete domain names,
- * simple strings and complete email addresses as well. That means, that you might
- * use any of the following notations:
- *
- * - www.n�rgler.com
- * - xn--nrgler-wxa
- * - xn--brse-5qa.xn--knrz-1ra.info
- *
- * Unicode input might be given as either UTF-8 string, UCS-4 string or UCS-4
- * array. Unicode output is available in the same formats.
- * You can select your preferred format via {@link set_paramter()}.
- *
- * ACE input and output is always expected to be ASCII.
- *
- * @package Net
- * @author  Markus Nix <mnix@docuverse.de>
- * @author  Matthias Sommerfeld <mso@phlylabs.de>
- * @author  Stefan Neufeind <pear.neufeind@speedpartner.de>
- * @version $Id: IDNA2.php 305344 2010-11-14 23:52:42Z neufeind $
- */
-class Net_IDNA2
-{
-    // {{{ npdata
-    /**
-     * These Unicode codepoints are
-     * mapped to nothing, See RFC3454 for details
-     *
-     * @static
-     * @var array
-     * @access private
-     */
-    private static $_np_map_nothing = array(
-        0xAD,
-        0x34F,
-        0x1806,
-        0x180B,
-        0x180C,
-        0x180D,
-        0x200B,
-        0x200C,
-        0x200D,
-        0x2060,
-        0xFE00,
-        0xFE01,
-        0xFE02,
-        0xFE03,
-        0xFE04,
-        0xFE05,
-        0xFE06,
-        0xFE07,
-        0xFE08,
-        0xFE09,
-        0xFE0A,
-        0xFE0B,
-        0xFE0C,
-        0xFE0D,
-        0xFE0E,
-        0xFE0F,
-        0xFEFF
-    );
-
-    /**
-     * Prohibited codepints
-     *
-     * @static
-     * @var array
-     * @access private
-     */
-    private static $_general_prohibited = array(
-        0,
-        1,
-        2,
-        3,
-        4,
-        5,
-        6,
-        7,
-        8,
-        9,
-        0xA,
-        0xB,
-        0xC,
-        0xD,
-        0xE,
-        0xF,
-        0x10,
-        0x11,
-        0x12,
-        0x13,
-        0x14,
-        0x15,
-        0x16,
-        0x17,
-        0x18,
-        0x19,
-        0x1A,
-        0x1B,
-        0x1C,
-        0x1D,
-        0x1E,
-        0x1F,
-        0x20,
-        0x21,
-        0x22,
-        0x23,
-        0x24,
-        0x25,
-        0x26,
-        0x27,
-        0x28,
-        0x29,
-        0x2A,
-        0x2B,
-        0x2C,
-        0x2F,
-        0x3B,
-        0x3C,
-        0x3D,
-        0x3E,
-        0x3F,
-        0x40,
-        0x5B,
-        0x5C,
-        0x5D,
-        0x5E,
-        0x5F,
-        0x60,
-        0x7B,
-        0x7C,
-        0x7D,
-        0x7E,
-        0x7F,
-        0x3002
-    );
-
-    /**
-     * Codepints prohibited by Nameprep
-     * @static
-     * @var array
-     * @access private
-     */
-    private static $_np_prohibit = array(
-        0xA0,
-        0x1680,
-        0x2000,
-        0x2001,
-        0x2002,
-        0x2003,
-        0x2004,
-        0x2005,
-        0x2006,
-        0x2007,
-        0x2008,
-        0x2009,
-        0x200A,
-        0x200B,
-        0x202F,
-        0x205F,
-        0x3000,
-        0x6DD,
-        0x70F,
-        0x180E,
-        0x200C,
-        0x200D,
-        0x2028,
-        0x2029,
-        0xFEFF,
-        0xFFF9,
-        0xFFFA,
-        0xFFFB,
-        0xFFFC,
-        0xFFFE,
-        0xFFFF,
-        0x1FFFE,
-        0x1FFFF,
-        0x2FFFE,
-        0x2FFFF,
-        0x3FFFE,
-        0x3FFFF,
-        0x4FFFE,
-        0x4FFFF,
-        0x5FFFE,
-        0x5FFFF,
-        0x6FFFE,
-        0x6FFFF,
-        0x7FFFE,
-        0x7FFFF,
-        0x8FFFE,
-        0x8FFFF,
-        0x9FFFE,
-        0x9FFFF,
-        0xAFFFE,
-        0xAFFFF,
-        0xBFFFE,
-        0xBFFFF,
-        0xCFFFE,
-        0xCFFFF,
-        0xDFFFE,
-        0xDFFFF,
-        0xEFFFE,
-        0xEFFFF,
-        0xFFFFE,
-        0xFFFFF,
-        0x10FFFE,
-        0x10FFFF,
-        0xFFF9,
-        0xFFFA,
-        0xFFFB,
-        0xFFFC,
-        0xFFFD,
-        0x340,
-        0x341,
-        0x200E,
-        0x200F,
-        0x202A,
-        0x202B,
-        0x202C,
-        0x202D,
-        0x202E,
-        0x206A,
-        0x206B,
-        0x206C,
-        0x206D,
-        0x206E,
-        0x206F,
-        0xE0001
-    );
-
-    /**
-     * Codepoint ranges prohibited by nameprep
-     *
-     * @static
-     * @var array
-     * @access private
-     */
-    private static $_np_prohibit_ranges = array(
-        array(0x80,     0x9F    ),
-        array(0x2060,   0x206F  ),
-        array(0x1D173,  0x1D17A ),
-        array(0xE000,   0xF8FF  ),
-        array(0xF0000,  0xFFFFD ),
-        array(0x100000, 0x10FFFD),
-        array(0xFDD0,   0xFDEF  ),
-        array(0xD800,   0xDFFF  ),
-        array(0x2FF0,   0x2FFB  ),
-        array(0xE0020,  0xE007F )
-    );
-
-    /**
-     * Replacement mappings (casemapping, replacement sequences, ...)
-     *
-     * @static
-     * @var array
-     * @access private
-     */
-    private static $_np_replacemaps = array(
-        0x41    => array(0x61),
-        0x42    => array(0x62),
-        0x43    => array(0x63),
-        0x44    => array(0x64),
-        0x45    => array(0x65),
-        0x46    => array(0x66),
-        0x47    => array(0x67),
-        0x48    => array(0x68),
-        0x49    => array(0x69),
-        0x4A    => array(0x6A),
-        0x4B    => array(0x6B),
-        0x4C    => array(0x6C),
-        0x4D    => array(0x6D),
-        0x4E    => array(0x6E),
-        0x4F    => array(0x6F),
-        0x50    => array(0x70),
-        0x51    => array(0x71),
-        0x52    => array(0x72),
-        0x53    => array(0x73),
-        0x54    => array(0x74),
-        0x55    => array(0x75),
-        0x56    => array(0x76),
-        0x57    => array(0x77),
-        0x58    => array(0x78),
-        0x59    => array(0x79),
-        0x5A    => array(0x7A),
-        0xB5    => array(0x3BC),
-        0xC0    => array(0xE0),
-        0xC1    => array(0xE1),
-        0xC2    => array(0xE2),
-        0xC3    => array(0xE3),
-        0xC4    => array(0xE4),
-        0xC5    => array(0xE5),
-        0xC6    => array(0xE6),
-        0xC7    => array(0xE7),
-        0xC8    => array(0xE8),
-        0xC9    => array(0xE9),
-        0xCA    => array(0xEA),
-        0xCB    => array(0xEB),
-        0xCC    => array(0xEC),
-        0xCD    => array(0xED),
-        0xCE    => array(0xEE),
-        0xCF    => array(0xEF),
-        0xD0    => array(0xF0),
-        0xD1    => array(0xF1),
-        0xD2    => array(0xF2),
-        0xD3    => array(0xF3),
-        0xD4    => array(0xF4),
-        0xD5    => array(0xF5),
-        0xD6    => array(0xF6),
-        0xD8    => array(0xF8),
-        0xD9    => array(0xF9),
-        0xDA    => array(0xFA),
-        0xDB    => array(0xFB),
-        0xDC    => array(0xFC),
-        0xDD    => array(0xFD),
-        0xDE    => array(0xFE),
-        0xDF    => array(0x73, 0x73),
-        0x100   => array(0x101),
-        0x102   => array(0x103),
-        0x104   => array(0x105),
-        0x106   => array(0x107),
-        0x108   => array(0x109),
-        0x10A   => array(0x10B),
-        0x10C   => array(0x10D),
-        0x10E   => array(0x10F),
-        0x110   => array(0x111),
-        0x112   => array(0x113),
-        0x114   => array(0x115),
-        0x116   => array(0x117),
-        0x118   => array(0x119),
-        0x11A   => array(0x11B),
-        0x11C   => array(0x11D),
-        0x11E   => array(0x11F),
-        0x120   => array(0x121),
-        0x122   => array(0x123),
-        0x124   => array(0x125),
-        0x126   => array(0x127),
-        0x128   => array(0x129),
-        0x12A   => array(0x12B),
-        0x12C   => array(0x12D),
-        0x12E   => array(0x12F),
-        0x130   => array(0x69, 0x307),
-        0x132   => array(0x133),
-        0x134   => array(0x135),
-        0x136   => array(0x137),
-        0x139   => array(0x13A),
-        0x13B   => array(0x13C),
-        0x13D   => array(0x13E),
-        0x13F   => array(0x140),
-        0x141   => array(0x142),
-        0x143   => array(0x144),
-        0x145   => array(0x146),
-        0x147   => array(0x148),
-        0x149   => array(0x2BC, 0x6E),
-        0x14A   => array(0x14B),
-        0x14C   => array(0x14D),
-        0x14E   => array(0x14F),
-        0x150   => array(0x151),
-        0x152   => array(0x153),
-        0x154   => array(0x155),
-        0x156   => array(0x157),
-        0x158   => array(0x159),
-        0x15A   => array(0x15B),
-        0x15C   => array(0x15D),
-        0x15E   => array(0x15F),
-        0x160   => array(0x161),
-        0x162   => array(0x163),
-        0x164   => array(0x165),
-        0x166   => array(0x167),
-        0x168   => array(0x169),
-        0x16A   => array(0x16B),
-        0x16C   => array(0x16D),
-        0x16E   => array(0x16F),
-        0x170   => array(0x171),
-        0x172   => array(0x173),
-        0x174   => array(0x175),
-        0x176   => array(0x177),
-        0x178   => array(0xFF),
-        0x179   => array(0x17A),
-        0x17B   => array(0x17C),
-        0x17D   => array(0x17E),
-        0x17F   => array(0x73),
-        0x181   => array(0x253),
-        0x182   => array(0x183),
-        0x184   => array(0x185),
-        0x186   => array(0x254),
-        0x187   => array(0x188),
-        0x189   => array(0x256),
-        0x18A   => array(0x257),
-        0x18B   => array(0x18C),
-        0x18E   => array(0x1DD),
-        0x18F   => array(0x259),
-        0x190   => array(0x25B),
-        0x191   => array(0x192),
-        0x193   => array(0x260),
-        0x194   => array(0x263),
-        0x196   => array(0x269),
-        0x197   => array(0x268),
-        0x198   => array(0x199),
-        0x19C   => array(0x26F),
-        0x19D   => array(0x272),
-        0x19F   => array(0x275),
-        0x1A0   => array(0x1A1),
-        0x1A2   => array(0x1A3),
-        0x1A4   => array(0x1A5),
-        0x1A6   => array(0x280),
-        0x1A7   => array(0x1A8),
-        0x1A9   => array(0x283),
-        0x1AC   => array(0x1AD),
-        0x1AE   => array(0x288),
-        0x1AF   => array(0x1B0),
-        0x1B1   => array(0x28A),
-        0x1B2   => array(0x28B),
-        0x1B3   => array(0x1B4),
-        0x1B5   => array(0x1B6),
-        0x1B7   => array(0x292),
-        0x1B8   => array(0x1B9),
-        0x1BC   => array(0x1BD),
-        0x1C4   => array(0x1C6),
-        0x1C5   => array(0x1C6),
-        0x1C7   => array(0x1C9),
-        0x1C8   => array(0x1C9),
-        0x1CA   => array(0x1CC),
-        0x1CB   => array(0x1CC),
-        0x1CD   => array(0x1CE),
-        0x1CF   => array(0x1D0),
-        0x1D1   => array(0x1D2),
-        0x1D3   => array(0x1D4),
-        0x1D5   => array(0x1D6),
-        0x1D7   => array(0x1D8),
-        0x1D9   => array(0x1DA),
-        0x1DB   => array(0x1DC),
-        0x1DE   => array(0x1DF),
-        0x1E0   => array(0x1E1),
-        0x1E2   => array(0x1E3),
-        0x1E4   => array(0x1E5),
-        0x1E6   => array(0x1E7),
-        0x1E8   => array(0x1E9),
-        0x1EA   => array(0x1EB),
-        0x1EC   => array(0x1ED),
-        0x1EE   => array(0x1EF),
-        0x1F0   => array(0x6A, 0x30C),
-        0x1F1   => array(0x1F3),
-        0x1F2   => array(0x1F3),
-        0x1F4   => array(0x1F5),
-        0x1F6   => array(0x195),
-        0x1F7   => array(0x1BF),
-        0x1F8   => array(0x1F9),
-        0x1FA   => array(0x1FB),
-        0x1FC   => array(0x1FD),
-        0x1FE   => array(0x1FF),
-        0x200   => array(0x201),
-        0x202   => array(0x203),
-        0x204   => array(0x205),
-        0x206   => array(0x207),
-        0x208   => array(0x209),
-        0x20A   => array(0x20B),
-        0x20C   => array(0x20D),
-        0x20E   => array(0x20F),
-        0x210   => array(0x211),
-        0x212   => array(0x213),
-        0x214   => array(0x215),
-        0x216   => array(0x217),
-        0x218   => array(0x219),
-        0x21A   => array(0x21B),
-        0x21C   => array(0x21D),
-        0x21E   => array(0x21F),
-        0x220   => array(0x19E),
-        0x222   => array(0x223),
-        0x224   => array(0x225),
-        0x226   => array(0x227),
-        0x228   => array(0x229),
-        0x22A   => array(0x22B),
-        0x22C   => array(0x22D),
-        0x22E   => array(0x22F),
-        0x230   => array(0x231),
-        0x232   => array(0x233),
-        0x345   => array(0x3B9),
-        0x37A   => array(0x20, 0x3B9),
-        0x386   => array(0x3AC),
-        0x388   => array(0x3AD),
-        0x389   => array(0x3AE),
-        0x38A   => array(0x3AF),
-        0x38C   => array(0x3CC),
-        0x38E   => array(0x3CD),
-        0x38F   => array(0x3CE),
-        0x390   => array(0x3B9, 0x308, 0x301),
-        0x391   => array(0x3B1),
-        0x392   => array(0x3B2),
-        0x393   => array(0x3B3),
-        0x394   => array(0x3B4),
-        0x395   => array(0x3B5),
-        0x396   => array(0x3B6),
-        0x397   => array(0x3B7),
-        0x398   => array(0x3B8),
-        0x399   => array(0x3B9),
-        0x39A   => array(0x3BA),
-        0x39B   => array(0x3BB),
-        0x39C   => array(0x3BC),
-        0x39D   => array(0x3BD),
-        0x39E   => array(0x3BE),
-        0x39F   => array(0x3BF),
-        0x3A0   => array(0x3C0),
-        0x3A1   => array(0x3C1),
-        0x3A3   => array(0x3C3),
-        0x3A4   => array(0x3C4),
-        0x3A5   => array(0x3C5),
-        0x3A6   => array(0x3C6),
-        0x3A7   => array(0x3C7),
-        0x3A8   => array(0x3C8),
-        0x3A9   => array(0x3C9),
-        0x3AA   => array(0x3CA),
-        0x3AB   => array(0x3CB),
-        0x3B0   => array(0x3C5, 0x308, 0x301),
-        0x3C2   => array(0x3C3),
-        0x3D0   => array(0x3B2),
-        0x3D1   => array(0x3B8),
-        0x3D2   => array(0x3C5),
-        0x3D3   => array(0x3CD),
-        0x3D4   => array(0x3CB),
-        0x3D5   => array(0x3C6),
-        0x3D6   => array(0x3C0),
-        0x3D8   => array(0x3D9),
-        0x3DA   => array(0x3DB),
-        0x3DC   => array(0x3DD),
-        0x3DE   => array(0x3DF),
-        0x3E0   => array(0x3E1),
-        0x3E2   => array(0x3E3),
-        0x3E4   => array(0x3E5),
-        0x3E6   => array(0x3E7),
-        0x3E8   => array(0x3E9),
-        0x3EA   => array(0x3EB),
-        0x3EC   => array(0x3ED),
-        0x3EE   => array(0x3EF),
-        0x3F0   => array(0x3BA),
-        0x3F1   => array(0x3C1),
-        0x3F2   => array(0x3C3),
-        0x3F4   => array(0x3B8),
-        0x3F5   => array(0x3B5),
-        0x400   => array(0x450),
-        0x401   => array(0x451),
-        0x402   => array(0x452),
-        0x403   => array(0x453),
-        0x404   => array(0x454),
-        0x405   => array(0x455),
-        0x406   => array(0x456),
-        0x407   => array(0x457),
-        0x408   => array(0x458),
-        0x409   => array(0x459),
-        0x40A   => array(0x45A),
-        0x40B   => array(0x45B),
-        0x40C   => array(0x45C),
-        0x40D   => array(0x45D),
-        0x40E   => array(0x45E),
-        0x40F   => array(0x45F),
-        0x410   => array(0x430),
-        0x411   => array(0x431),
-        0x412   => array(0x432),
-        0x413   => array(0x433),
-        0x414   => array(0x434),
-        0x415   => array(0x435),
-        0x416   => array(0x436),
-        0x417   => array(0x437),
-        0x418   => array(0x438),
-        0x419   => array(0x439),
-        0x41A   => array(0x43A),
-        0x41B   => array(0x43B),
-        0x41C   => array(0x43C),
-        0x41D   => array(0x43D),
-        0x41E   => array(0x43E),
-        0x41F   => array(0x43F),
-        0x420   => array(0x440),
-        0x421   => array(0x441),
-        0x422   => array(0x442),
-        0x423   => array(0x443),
-        0x424   => array(0x444),
-        0x425   => array(0x445),
-        0x426   => array(0x446),
-        0x427   => array(0x447),
-        0x428   => array(0x448),
-        0x429   => array(0x449),
-        0x42A   => array(0x44A),
-        0x42B   => array(0x44B),
-        0x42C   => array(0x44C),
-        0x42D   => array(0x44D),
-        0x42E   => array(0x44E),
-        0x42F   => array(0x44F),
-        0x460   => array(0x461),
-        0x462   => array(0x463),
-        0x464   => array(0x465),
-        0x466   => array(0x467),
-        0x468   => array(0x469),
-        0x46A   => array(0x46B),
-        0x46C   => array(0x46D),
-        0x46E   => array(0x46F),
-        0x470   => array(0x471),
-        0x472   => array(0x473),
-        0x474   => array(0x475),
-        0x476   => array(0x477),
-        0x478   => array(0x479),
-        0x47A   => array(0x47B),
-        0x47C   => array(0x47D),
-        0x47E   => array(0x47F),
-        0x480   => array(0x481),
-        0x48A   => array(0x48B),
-        0x48C   => array(0x48D),
-        0x48E   => array(0x48F),
-        0x490   => array(0x491),
-        0x492   => array(0x493),
-        0x494   => array(0x495),
-        0x496   => array(0x497),
-        0x498   => array(0x499),
-        0x49A   => array(0x49B),
-        0x49C   => array(0x49D),
-        0x49E   => array(0x49F),
-        0x4A0   => array(0x4A1),
-        0x4A2   => array(0x4A3),
-        0x4A4   => array(0x4A5),
-        0x4A6   => array(0x4A7),
-        0x4A8   => array(0x4A9),
-        0x4AA   => array(0x4AB),
-        0x4AC   => array(0x4AD),
-        0x4AE   => array(0x4AF),
-        0x4B0   => array(0x4B1),
-        0x4B2   => array(0x4B3),
-        0x4B4   => array(0x4B5),
-        0x4B6   => array(0x4B7),
-        0x4B8   => array(0x4B9),
-        0x4BA   => array(0x4BB),
-        0x4BC   => array(0x4BD),
-        0x4BE   => array(0x4BF),
-        0x4C1   => array(0x4C2),
-        0x4C3   => array(0x4C4),
-        0x4C5   => array(0x4C6),
-        0x4C7   => array(0x4C8),
-        0x4C9   => array(0x4CA),
-        0x4CB   => array(0x4CC),
-        0x4CD   => array(0x4CE),
-        0x4D0   => array(0x4D1),
-        0x4D2   => array(0x4D3),
-        0x4D4   => array(0x4D5),
-        0x4D6   => array(0x4D7),
-        0x4D8   => array(0x4D9),
-        0x4DA   => array(0x4DB),
-        0x4DC   => array(0x4DD),
-        0x4DE   => array(0x4DF),
-        0x4E0   => array(0x4E1),
-        0x4E2   => array(0x4E3),
-        0x4E4   => array(0x4E5),
-        0x4E6   => array(0x4E7),
-        0x4E8   => array(0x4E9),
-        0x4EA   => array(0x4EB),
-        0x4EC   => array(0x4ED),
-        0x4EE   => array(0x4EF),
-        0x4F0   => array(0x4F1),
-        0x4F2   => array(0x4F3),
-        0x4F4   => array(0x4F5),
-        0x4F8   => array(0x4F9),
-        0x500   => array(0x501),
-        0x502   => array(0x503),
-        0x504   => array(0x505),
-        0x506   => array(0x507),
-        0x508   => array(0x509),
-        0x50A   => array(0x50B),
-        0x50C   => array(0x50D),
-        0x50E   => array(0x50F),
-        0x531   => array(0x561),
-        0x532   => array(0x562),
-        0x533   => array(0x563),
-        0x534   => array(0x564),
-        0x535   => array(0x565),
-        0x536   => array(0x566),
-        0x537   => array(0x567),
-        0x538   => array(0x568),
-        0x539   => array(0x569),
-        0x53A   => array(0x56A),
-        0x53B   => array(0x56B),
-        0x53C   => array(0x56C),
-        0x53D   => array(0x56D),
-        0x53E   => array(0x56E),
-        0x53F   => array(0x56F),
-        0x540   => array(0x570),
-        0x541   => array(0x571),
-        0x542   => array(0x572),
-        0x543   => array(0x573),
-        0x544   => array(0x574),
-        0x545   => array(0x575),
-        0x546   => array(0x576),
-        0x547   => array(0x577),
-        0x548   => array(0x578),
-        0x549   => array(0x579),
-        0x54A   => array(0x57A),
-        0x54B   => array(0x57B),
-        0x54C   => array(0x57C),
-        0x54D   => array(0x57D),
-        0x54E   => array(0x57E),
-        0x54F   => array(0x57F),
-        0x550   => array(0x580),
-        0x551   => array(0x581),
-        0x552   => array(0x582),
-        0x553   => array(0x583),
-        0x554   => array(0x584),
-        0x555   => array(0x585),
-        0x556   => array(0x586),
-        0x587   => array(0x565, 0x582),
-        0x1E00  => array(0x1E01),
-        0x1E02  => array(0x1E03),
-        0x1E04  => array(0x1E05),
-        0x1E06  => array(0x1E07),
-        0x1E08  => array(0x1E09),
-        0x1E0A  => array(0x1E0B),
-        0x1E0C  => array(0x1E0D),
-        0x1E0E  => array(0x1E0F),
-        0x1E10  => array(0x1E11),
-        0x1E12  => array(0x1E13),
-        0x1E14  => array(0x1E15),
-        0x1E16  => array(0x1E17),
-        0x1E18  => array(0x1E19),
-        0x1E1A  => array(0x1E1B),
-        0x1E1C  => array(0x1E1D),
-        0x1E1E  => array(0x1E1F),
-        0x1E20  => array(0x1E21),
-        0x1E22  => array(0x1E23),
-        0x1E24  => array(0x1E25),
-        0x1E26  => array(0x1E27),
-        0x1E28  => array(0x1E29),
-        0x1E2A  => array(0x1E2B),
-        0x1E2C  => array(0x1E2D),
-        0x1E2E  => array(0x1E2F),
-        0x1E30  => array(0x1E31),
-        0x1E32  => array(0x1E33),
-        0x1E34  => array(0x1E35),
-        0x1E36  => array(0x1E37),
-        0x1E38  => array(0x1E39),
-        0x1E3A  => array(0x1E3B),
-        0x1E3C  => array(0x1E3D),
-        0x1E3E  => array(0x1E3F),
-        0x1E40  => array(0x1E41),
-        0x1E42  => array(0x1E43),
-        0x1E44  => array(0x1E45),
-        0x1E46  => array(0x1E47),
-        0x1E48  => array(0x1E49),
-        0x1E4A  => array(0x1E4B),
-        0x1E4C  => array(0x1E4D),
-        0x1E4E  => array(0x1E4F),
-        0x1E50  => array(0x1E51),
-        0x1E52  => array(0x1E53),
-        0x1E54  => array(0x1E55),
-        0x1E56  => array(0x1E57),
-        0x1E58  => array(0x1E59),
-        0x1E5A  => array(0x1E5B),
-        0x1E5C  => array(0x1E5D),
-        0x1E5E  => array(0x1E5F),
-        0x1E60  => array(0x1E61),
-        0x1E62  => array(0x1E63),
-        0x1E64  => array(0x1E65),
-        0x1E66  => array(0x1E67),
-        0x1E68  => array(0x1E69),
-        0x1E6A  => array(0x1E6B),
-        0x1E6C  => array(0x1E6D),
-        0x1E6E  => array(0x1E6F),
-        0x1E70  => array(0x1E71),
-        0x1E72  => array(0x1E73),
-        0x1E74  => array(0x1E75),
-        0x1E76  => array(0x1E77),
-        0x1E78  => array(0x1E79),
-        0x1E7A  => array(0x1E7B),
-        0x1E7C  => array(0x1E7D),
-        0x1E7E  => array(0x1E7F),
-        0x1E80  => array(0x1E81),
-        0x1E82  => array(0x1E83),
-        0x1E84  => array(0x1E85),
-        0x1E86  => array(0x1E87),
-        0x1E88  => array(0x1E89),
-        0x1E8A  => array(0x1E8B),
-        0x1E8C  => array(0x1E8D),
-        0x1E8E  => array(0x1E8F),
-        0x1E90  => array(0x1E91),
-        0x1E92  => array(0x1E93),
-        0x1E94  => array(0x1E95),
-        0x1E96  => array(0x68, 0x331),
-        0x1E97  => array(0x74, 0x308),
-        0x1E98  => array(0x77, 0x30A),
-        0x1E99  => array(0x79, 0x30A),
-        0x1E9A  => array(0x61, 0x2BE),
-        0x1E9B  => array(0x1E61),
-        0x1EA0  => array(0x1EA1),
-        0x1EA2  => array(0x1EA3),
-        0x1EA4  => array(0x1EA5),
-        0x1EA6  => array(0x1EA7),
-        0x1EA8  => array(0x1EA9),
-        0x1EAA  => array(0x1EAB),
-        0x1EAC  => array(0x1EAD),
-        0x1EAE  => array(0x1EAF),
-        0x1EB0  => array(0x1EB1),
-        0x1EB2  => array(0x1EB3),
-        0x1EB4  => array(0x1EB5),
-        0x1EB6  => array(0x1EB7),
-        0x1EB8  => array(0x1EB9),
-        0x1EBA  => array(0x1EBB),
-        0x1EBC  => array(0x1EBD),
-        0x1EBE  => array(0x1EBF),
-        0x1EC0  => array(0x1EC1),
-        0x1EC2  => array(0x1EC3),
-        0x1EC4  => array(0x1EC5),
-        0x1EC6  => array(0x1EC7),
-        0x1EC8  => array(0x1EC9),
-        0x1ECA  => array(0x1ECB),
-        0x1ECC  => array(0x1ECD),
-        0x1ECE  => array(0x1ECF),
-        0x1ED0  => array(0x1ED1),
-        0x1ED2  => array(0x1ED3),
-        0x1ED4  => array(0x1ED5),
-        0x1ED6  => array(0x1ED7),
-        0x1ED8  => array(0x1ED9),
-        0x1EDA  => array(0x1EDB),
-        0x1EDC  => array(0x1EDD),
-        0x1EDE  => array(0x1EDF),
-        0x1EE0  => array(0x1EE1),
-        0x1EE2  => array(0x1EE3),
-        0x1EE4  => array(0x1EE5),
-        0x1EE6  => array(0x1EE7),
-        0x1EE8  => array(0x1EE9),
-        0x1EEA  => array(0x1EEB),
-        0x1EEC  => array(0x1EED),
-        0x1EEE  => array(0x1EEF),
-        0x1EF0  => array(0x1EF1),
-        0x1EF2  => array(0x1EF3),
-        0x1EF4  => array(0x1EF5),
-        0x1EF6  => array(0x1EF7),
-        0x1EF8  => array(0x1EF9),
-        0x1F08  => array(0x1F00),
-        0x1F09  => array(0x1F01),
-        0x1F0A  => array(0x1F02),
-        0x1F0B  => array(0x1F03),
-        0x1F0C  => array(0x1F04),
-        0x1F0D  => array(0x1F05),
-        0x1F0E  => array(0x1F06),
-        0x1F0F  => array(0x1F07),
-        0x1F18  => array(0x1F10),
-        0x1F19  => array(0x1F11),
-        0x1F1A  => array(0x1F12),
-        0x1F1B  => array(0x1F13),
-        0x1F1C  => array(0x1F14),
-        0x1F1D  => array(0x1F15),
-        0x1F28  => array(0x1F20),
-        0x1F29  => array(0x1F21),
-        0x1F2A  => array(0x1F22),
-        0x1F2B  => array(0x1F23),
-        0x1F2C  => array(0x1F24),
-        0x1F2D  => array(0x1F25),
-        0x1F2E  => array(0x1F26),
-        0x1F2F  => array(0x1F27),
-        0x1F38  => array(0x1F30),
-        0x1F39  => array(0x1F31),
-        0x1F3A  => array(0x1F32),
-        0x1F3B  => array(0x1F33),
-        0x1F3C  => array(0x1F34),
-        0x1F3D  => array(0x1F35),
-        0x1F3E  => array(0x1F36),
-        0x1F3F  => array(0x1F37),
-        0x1F48  => array(0x1F40),
-        0x1F49  => array(0x1F41),
-        0x1F4A  => array(0x1F42),
-        0x1F4B  => array(0x1F43),
-        0x1F4C  => array(0x1F44),
-        0x1F4D  => array(0x1F45),
-        0x1F50  => array(0x3C5, 0x313),
-        0x1F52  => array(0x3C5, 0x313, 0x300),
-        0x1F54  => array(0x3C5, 0x313, 0x301),
-        0x1F56  => array(0x3C5, 0x313, 0x342),
-        0x1F59  => array(0x1F51),
-        0x1F5B  => array(0x1F53),
-        0x1F5D  => array(0x1F55),
-        0x1F5F  => array(0x1F57),
-        0x1F68  => array(0x1F60),
-        0x1F69  => array(0x1F61),
-        0x1F6A  => array(0x1F62),
-        0x1F6B  => array(0x1F63),
-        0x1F6C  => array(0x1F64),
-        0x1F6D  => array(0x1F65),
-        0x1F6E  => array(0x1F66),
-        0x1F6F  => array(0x1F67),
-        0x1F80  => array(0x1F00, 0x3B9),
-        0x1F81  => array(0x1F01, 0x3B9),
-        0x1F82  => array(0x1F02, 0x3B9),
-        0x1F83  => array(0x1F03, 0x3B9),
-        0x1F84  => array(0x1F04, 0x3B9),
-        0x1F85  => array(0x1F05, 0x3B9),
-        0x1F86  => array(0x1F06, 0x3B9),
-        0x1F87  => array(0x1F07, 0x3B9),
-        0x1F88  => array(0x1F00, 0x3B9),
-        0x1F89  => array(0x1F01, 0x3B9),
-        0x1F8A  => array(0x1F02, 0x3B9),
-        0x1F8B  => array(0x1F03, 0x3B9),
-        0x1F8C  => array(0x1F04, 0x3B9),
-        0x1F8D  => array(0x1F05, 0x3B9),
-        0x1F8E  => array(0x1F06, 0x3B9),
-        0x1F8F  => array(0x1F07, 0x3B9),
-        0x1F90  => array(0x1F20, 0x3B9),
-        0x1F91  => array(0x1F21, 0x3B9),
-        0x1F92  => array(0x1F22, 0x3B9),
-        0x1F93  => array(0x1F23, 0x3B9),
-        0x1F94  => array(0x1F24, 0x3B9),
-        0x1F95  => array(0x1F25, 0x3B9),
-        0x1F96  => array(0x1F26, 0x3B9),
-        0x1F97  => array(0x1F27, 0x3B9),
-        0x1F98  => array(0x1F20, 0x3B9),
-        0x1F99  => array(0x1F21, 0x3B9),
-        0x1F9A  => array(0x1F22, 0x3B9),
-        0x1F9B  => array(0x1F23, 0x3B9),
-        0x1F9C  => array(0x1F24, 0x3B9),
-        0x1F9D  => array(0x1F25, 0x3B9),
-        0x1F9E  => array(0x1F26, 0x3B9),
-        0x1F9F  => array(0x1F27, 0x3B9),
-        0x1FA0  => array(0x1F60, 0x3B9),
-        0x1FA1  => array(0x1F61, 0x3B9),
-        0x1FA2  => array(0x1F62, 0x3B9),
-        0x1FA3  => array(0x1F63, 0x3B9),
-        0x1FA4  => array(0x1F64, 0x3B9),
-        0x1FA5  => array(0x1F65, 0x3B9),
-        0x1FA6  => array(0x1F66, 0x3B9),
-        0x1FA7  => array(0x1F67, 0x3B9),
-        0x1FA8  => array(0x1F60, 0x3B9),
-        0x1FA9  => array(0x1F61, 0x3B9),
-        0x1FAA  => array(0x1F62, 0x3B9),
-        0x1FAB  => array(0x1F63, 0x3B9),
-        0x1FAC  => array(0x1F64, 0x3B9),
-        0x1FAD  => array(0x1F65, 0x3B9),
-        0x1FAE  => array(0x1F66, 0x3B9),
-        0x1FAF  => array(0x1F67, 0x3B9),
-        0x1FB2  => array(0x1F70, 0x3B9),
-        0x1FB3  => array(0x3B1, 0x3B9),
-        0x1FB4  => array(0x3AC, 0x3B9),
-        0x1FB6  => array(0x3B1, 0x342),
-        0x1FB7  => array(0x3B1, 0x342, 0x3B9),
-        0x1FB8  => array(0x1FB0),
-        0x1FB9  => array(0x1FB1),
-        0x1FBA  => array(0x1F70),
-        0x1FBB  => array(0x1F71),
-        0x1FBC  => array(0x3B1, 0x3B9),
-        0x1FBE  => array(0x3B9),
-        0x1FC2  => array(0x1F74, 0x3B9),
-        0x1FC3  => array(0x3B7, 0x3B9),
-        0x1FC4  => array(0x3AE, 0x3B9),
-        0x1FC6  => array(0x3B7, 0x342),
-        0x1FC7  => array(0x3B7, 0x342, 0x3B9),
-        0x1FC8  => array(0x1F72),
-        0x1FC9  => array(0x1F73),
-        0x1FCA  => array(0x1F74),
-        0x1FCB  => array(0x1F75),
-        0x1FCC  => array(0x3B7, 0x3B9),
-        0x1FD2  => array(0x3B9, 0x308, 0x300),
-        0x1FD3  => array(0x3B9, 0x308, 0x301),
-        0x1FD6  => array(0x3B9, 0x342),
-        0x1FD7  => array(0x3B9, 0x308, 0x342),
-        0x1FD8  => array(0x1FD0),
-        0x1FD9  => array(0x1FD1),
-        0x1FDA  => array(0x1F76),
-        0x1FDB  => array(0x1F77),
-        0x1FE2  => array(0x3C5, 0x308, 0x300),
-        0x1FE3  => array(0x3C5, 0x308, 0x301),
-        0x1FE4  => array(0x3C1, 0x313),
-        0x1FE6  => array(0x3C5, 0x342),
-        0x1FE7  => array(0x3C5, 0x308, 0x342),
-        0x1FE8  => array(0x1FE0),
-        0x1FE9  => array(0x1FE1),
-        0x1FEA  => array(0x1F7A),
-        0x1FEB  => array(0x1F7B),
-        0x1FEC  => array(0x1FE5),
-        0x1FF2  => array(0x1F7C, 0x3B9),
-        0x1FF3  => array(0x3C9, 0x3B9),
-        0x1FF4  => array(0x3CE, 0x3B9),
-        0x1FF6  => array(0x3C9, 0x342),
-        0x1FF7  => array(0x3C9, 0x342, 0x3B9),
-        0x1FF8  => array(0x1F78),
-        0x1FF9  => array(0x1F79),
-        0x1FFA  => array(0x1F7C),
-        0x1FFB  => array(0x1F7D),
-        0x1FFC  => array(0x3C9, 0x3B9),
-        0x20A8  => array(0x72, 0x73),
-        0x2102  => array(0x63),
-        0x2103  => array(0xB0, 0x63),
-        0x2107  => array(0x25B),
-        0x2109  => array(0xB0, 0x66),
-        0x210B  => array(0x68),
-        0x210C  => array(0x68),
-        0x210D  => array(0x68),
-        0x2110  => array(0x69),
-        0x2111  => array(0x69),
-        0x2112  => array(0x6C),
-        0x2115  => array(0x6E),
-        0x2116  => array(0x6E, 0x6F),
-        0x2119  => array(0x70),
-        0x211A  => array(0x71),
-        0x211B  => array(0x72),
-        0x211C  => array(0x72),
-        0x211D  => array(0x72),
-        0x2120  => array(0x73, 0x6D),
-        0x2121  => array(0x74, 0x65, 0x6C),
-        0x2122  => array(0x74, 0x6D),
-        0x2124  => array(0x7A),
-        0x2126  => array(0x3C9),
-        0x2128  => array(0x7A),
-        0x212A  => array(0x6B),
-        0x212B  => array(0xE5),
-        0x212C  => array(0x62),
-        0x212D  => array(0x63),
-        0x2130  => array(0x65),
-        0x2131  => array(0x66),
-        0x2133  => array(0x6D),
-        0x213E  => array(0x3B3),
-        0x213F  => array(0x3C0),
-        0x2145  => array(0x64),
-        0x2160  => array(0x2170),
-        0x2161  => array(0x2171),
-        0x2162  => array(0x2172),
-        0x2163  => array(0x2173),
-        0x2164  => array(0x2174),
-        0x2165  => array(0x2175),
-        0x2166  => array(0x2176),
-        0x2167  => array(0x2177),
-        0x2168  => array(0x2178),
-        0x2169  => array(0x2179),
-        0x216A  => array(0x217A),
-        0x216B  => array(0x217B),
-        0x216C  => array(0x217C),
-        0x216D  => array(0x217D),
-        0x216E  => array(0x217E),
-        0x216F  => array(0x217F),
-        0x24B6  => array(0x24D0),
-        0x24B7  => array(0x24D1),
-        0x24B8  => array(0x24D2),
-        0x24B9  => array(0x24D3),
-        0x24BA  => array(0x24D4),
-        0x24BB  => array(0x24D5),
-        0x24BC  => array(0x24D6),
-        0x24BD  => array(0x24D7),
-        0x24BE  => array(0x24D8),
-        0x24BF  => array(0x24D9),
-        0x24C0  => array(0x24DA),
-        0x24C1  => array(0x24DB),
-        0x24C2  => array(0x24DC),
-        0x24C3  => array(0x24DD),
-        0x24C4  => array(0x24DE),
-        0x24C5  => array(0x24DF),
-        0x24C6  => array(0x24E0),
-        0x24C7  => array(0x24E1),
-        0x24C8  => array(0x24E2),
-        0x24C9  => array(0x24E3),
-        0x24CA  => array(0x24E4),
-        0x24CB  => array(0x24E5),
-        0x24CC  => array(0x24E6),
-        0x24CD  => array(0x24E7),
-        0x24CE  => array(0x24E8),
-        0x24CF  => array(0x24E9),
-        0x3371  => array(0x68, 0x70, 0x61),
-        0x3373  => array(0x61, 0x75),
-        0x3375  => array(0x6F, 0x76),
-        0x3380  => array(0x70, 0x61),
-        0x3381  => array(0x6E, 0x61),
-        0x3382  => array(0x3BC, 0x61),
-        0x3383  => array(0x6D, 0x61),
-        0x3384  => array(0x6B, 0x61),
-        0x3385  => array(0x6B, 0x62),
-        0x3386  => array(0x6D, 0x62),
-        0x3387  => array(0x67, 0x62),
-        0x338A  => array(0x70, 0x66),
-        0x338B  => array(0x6E, 0x66),
-        0x338C  => array(0x3BC, 0x66),
-        0x3390  => array(0x68, 0x7A),
-        0x3391  => array(0x6B, 0x68, 0x7A),
-        0x3392  => array(0x6D, 0x68, 0x7A),
-        0x3393  => array(0x67, 0x68, 0x7A),
-        0x3394  => array(0x74, 0x68, 0x7A),
-        0x33A9  => array(0x70, 0x61),
-        0x33AA  => array(0x6B, 0x70, 0x61),
-        0x33AB  => array(0x6D, 0x70, 0x61),
-        0x33AC  => array(0x67, 0x70, 0x61),
-        0x33B4  => array(0x70, 0x76),
-        0x33B5  => array(0x6E, 0x76),
-        0x33B6  => array(0x3BC, 0x76),
-        0x33B7  => array(0x6D, 0x76),
-        0x33B8  => array(0x6B, 0x76),
-        0x33B9  => array(0x6D, 0x76),
-        0x33BA  => array(0x70, 0x77),
-        0x33BB  => array(0x6E, 0x77),
-        0x33BC  => array(0x3BC, 0x77),
-        0x33BD  => array(0x6D, 0x77),
-        0x33BE  => array(0x6B, 0x77),
-        0x33BF  => array(0x6D, 0x77),
-        0x33C0  => array(0x6B, 0x3C9),
-        0x33C1  => array(0x6D, 0x3C9),
-        /* 0x33C2  => array(0x61, 0x2E, 0x6D, 0x2E), */
-        0x33C3  => array(0x62, 0x71),
-        0x33C6  => array(0x63, 0x2215, 0x6B, 0x67),
-        0x33C7  => array(0x63, 0x6F, 0x2E),
-        0x33C8  => array(0x64, 0x62),
-        0x33C9  => array(0x67, 0x79),
-        0x33CB  => array(0x68, 0x70),
-        0x33CD  => array(0x6B, 0x6B),
-        0x33CE  => array(0x6B, 0x6D),
-        0x33D7  => array(0x70, 0x68),
-        0x33D9  => array(0x70, 0x70, 0x6D),
-        0x33DA  => array(0x70, 0x72),
-        0x33DC  => array(0x73, 0x76),
-        0x33DD  => array(0x77, 0x62),
-        0xFB00  => array(0x66, 0x66),
-        0xFB01  => array(0x66, 0x69),
-        0xFB02  => array(0x66, 0x6C),
-        0xFB03  => array(0x66, 0x66, 0x69),
-        0xFB04  => array(0x66, 0x66, 0x6C),
-        0xFB05  => array(0x73, 0x74),
-        0xFB06  => array(0x73, 0x74),
-        0xFB13  => array(0x574, 0x576),
-        0xFB14  => array(0x574, 0x565),
-        0xFB15  => array(0x574, 0x56B),
-        0xFB16  => array(0x57E, 0x576),
-        0xFB17  => array(0x574, 0x56D),
-        0xFF21  => array(0xFF41),
-        0xFF22  => array(0xFF42),
-        0xFF23  => array(0xFF43),
-        0xFF24  => array(0xFF44),
-        0xFF25  => array(0xFF45),
-        0xFF26  => array(0xFF46),
-        0xFF27  => array(0xFF47),
-        0xFF28  => array(0xFF48),
-        0xFF29  => array(0xFF49),
-        0xFF2A  => array(0xFF4A),
-        0xFF2B  => array(0xFF4B),
-        0xFF2C  => array(0xFF4C),
-        0xFF2D  => array(0xFF4D),
-        0xFF2E  => array(0xFF4E),
-        0xFF2F  => array(0xFF4F),
-        0xFF30  => array(0xFF50),
-        0xFF31  => array(0xFF51),
-        0xFF32  => array(0xFF52),
-        0xFF33  => array(0xFF53),
-        0xFF34  => array(0xFF54),
-        0xFF35  => array(0xFF55),
-        0xFF36  => array(0xFF56),
-        0xFF37  => array(0xFF57),
-        0xFF38  => array(0xFF58),
-        0xFF39  => array(0xFF59),
-        0xFF3A  => array(0xFF5A),
-        0x10400 => array(0x10428),
-        0x10401 => array(0x10429),
-        0x10402 => array(0x1042A),
-        0x10403 => array(0x1042B),
-        0x10404 => array(0x1042C),
-        0x10405 => array(0x1042D),
-        0x10406 => array(0x1042E),
-        0x10407 => array(0x1042F),
-        0x10408 => array(0x10430),
-        0x10409 => array(0x10431),
-        0x1040A => array(0x10432),
-        0x1040B => array(0x10433),
-        0x1040C => array(0x10434),
-        0x1040D => array(0x10435),
-        0x1040E => array(0x10436),
-        0x1040F => array(0x10437),
-        0x10410 => array(0x10438),
-        0x10411 => array(0x10439),
-        0x10412 => array(0x1043A),
-        0x10413 => array(0x1043B),
-        0x10414 => array(0x1043C),
-        0x10415 => array(0x1043D),
-        0x10416 => array(0x1043E),
-        0x10417 => array(0x1043F),
-        0x10418 => array(0x10440),
-        0x10419 => array(0x10441),
-        0x1041A => array(0x10442),
-        0x1041B => array(0x10443),
-        0x1041C => array(0x10444),
-        0x1041D => array(0x10445),
-        0x1041E => array(0x10446),
-        0x1041F => array(0x10447),
-        0x10420 => array(0x10448),
-        0x10421 => array(0x10449),
-        0x10422 => array(0x1044A),
-        0x10423 => array(0x1044B),
-        0x10424 => array(0x1044C),
-        0x10425 => array(0x1044D),
-        0x1D400 => array(0x61),
-        0x1D401 => array(0x62),
-        0x1D402 => array(0x63),
-        0x1D403 => array(0x64),
-        0x1D404 => array(0x65),
-        0x1D405 => array(0x66),
-        0x1D406 => array(0x67),
-        0x1D407 => array(0x68),
-        0x1D408 => array(0x69),
-        0x1D409 => array(0x6A),
-        0x1D40A => array(0x6B),
-        0x1D40B => array(0x6C),
-        0x1D40C => array(0x6D),
-        0x1D40D => array(0x6E),
-        0x1D40E => array(0x6F),
-        0x1D40F => array(0x70),
-        0x1D410 => array(0x71),
-        0x1D411 => array(0x72),
-        0x1D412 => array(0x73),
-        0x1D413 => array(0x74),
-        0x1D414 => array(0x75),
-        0x1D415 => array(0x76),
-        0x1D416 => array(0x77),
-        0x1D417 => array(0x78),
-        0x1D418 => array(0x79),
-        0x1D419 => array(0x7A),
-        0x1D434 => array(0x61),
-        0x1D435 => array(0x62),
-        0x1D436 => array(0x63),
-        0x1D437 => array(0x64),
-        0x1D438 => array(0x65),
-        0x1D439 => array(0x66),
-        0x1D43A => array(0x67),
-        0x1D43B => array(0x68),
-        0x1D43C => array(0x69),
-        0x1D43D => array(0x6A),
-        0x1D43E => array(0x6B),
-        0x1D43F => array(0x6C),
-        0x1D440 => array(0x6D),
-        0x1D441 => array(0x6E),
-        0x1D442 => array(0x6F),
-        0x1D443 => array(0x70),
-        0x1D444 => array(0x71),
-        0x1D445 => array(0x72),
-        0x1D446 => array(0x73),
-        0x1D447 => array(0x74),
-        0x1D448 => array(0x75),
-        0x1D449 => array(0x76),
-        0x1D44A => array(0x77),
-        0x1D44B => array(0x78),
-        0x1D44C => array(0x79),
-        0x1D44D => array(0x7A),
-        0x1D468 => array(0x61),
-        0x1D469 => array(0x62),
-        0x1D46A => array(0x63),
-        0x1D46B => array(0x64),
-        0x1D46C => array(0x65),
-        0x1D46D => array(0x66),
-        0x1D46E => array(0x67),
-        0x1D46F => array(0x68),
-        0x1D470 => array(0x69),
-        0x1D471 => array(0x6A),
-        0x1D472 => array(0x6B),
-        0x1D473 => array(0x6C),
-        0x1D474 => array(0x6D),
-        0x1D475 => array(0x6E),
-        0x1D476 => array(0x6F),
-        0x1D477 => array(0x70),
-        0x1D478 => array(0x71),
-        0x1D479 => array(0x72),
-        0x1D47A => array(0x73),
-        0x1D47B => array(0x74),
-        0x1D47C => array(0x75),
-        0x1D47D => array(0x76),
-        0x1D47E => array(0x77),
-        0x1D47F => array(0x78),
-        0x1D480 => array(0x79),
-        0x1D481 => array(0x7A),
-        0x1D49C => array(0x61),
-        0x1D49E => array(0x63),
-        0x1D49F => array(0x64),
-        0x1D4A2 => array(0x67),
-        0x1D4A5 => array(0x6A),
-        0x1D4A6 => array(0x6B),
-        0x1D4A9 => array(0x6E),
-        0x1D4AA => array(0x6F),
-        0x1D4AB => array(0x70),
-        0x1D4AC => array(0x71),
-        0x1D4AE => array(0x73),
-        0x1D4AF => array(0x74),
-        0x1D4B0 => array(0x75),
-        0x1D4B1 => array(0x76),
-        0x1D4B2 => array(0x77),
-        0x1D4B3 => array(0x78),
-        0x1D4B4 => array(0x79),
-        0x1D4B5 => array(0x7A),
-        0x1D4D0 => array(0x61),
-        0x1D4D1 => array(0x62),
-        0x1D4D2 => array(0x63),
-        0x1D4D3 => array(0x64),
-        0x1D4D4 => array(0x65),
-        0x1D4D5 => array(0x66),
-        0x1D4D6 => array(0x67),
-        0x1D4D7 => array(0x68),
-        0x1D4D8 => array(0x69),
-        0x1D4D9 => array(0x6A),
-        0x1D4DA => array(0x6B),
-        0x1D4DB => array(0x6C),
-        0x1D4DC => array(0x6D),
-        0x1D4DD => array(0x6E),
-        0x1D4DE => array(0x6F),
-        0x1D4DF => array(0x70),
-        0x1D4E0 => array(0x71),
-        0x1D4E1 => array(0x72),
-        0x1D4E2 => array(0x73),
-        0x1D4E3 => array(0x74),
-        0x1D4E4 => array(0x75),
-        0x1D4E5 => array(0x76),
-        0x1D4E6 => array(0x77),
-        0x1D4E7 => array(0x78),
-        0x1D4E8 => array(0x79),
-        0x1D4E9 => array(0x7A),
-        0x1D504 => array(0x61),
-        0x1D505 => array(0x62),
-        0x1D507 => array(0x64),
-        0x1D508 => array(0x65),
-        0x1D509 => array(0x66),
-        0x1D50A => array(0x67),
-        0x1D50D => array(0x6A),
-        0x1D50E => array(0x6B),
-        0x1D50F => array(0x6C),
-        0x1D510 => array(0x6D),
-        0x1D511 => array(0x6E),
-        0x1D512 => array(0x6F),
-        0x1D513 => array(0x70),
-        0x1D514 => array(0x71),
-        0x1D516 => array(0x73),
-        0x1D517 => array(0x74),
-        0x1D518 => array(0x75),
-        0x1D519 => array(0x76),
-        0x1D51A => array(0x77),
-        0x1D51B => array(0x78),
-        0x1D51C => array(0x79),
-        0x1D538 => array(0x61),
-        0x1D539 => array(0x62),
-        0x1D53B => array(0x64),
-        0x1D53C => array(0x65),
-        0x1D53D => array(0x66),
-        0x1D53E => array(0x67),
-        0x1D540 => array(0x69),
-        0x1D541 => array(0x6A),
-        0x1D542 => array(0x6B),
-        0x1D543 => array(0x6C),
-        0x1D544 => array(0x6D),
-        0x1D546 => array(0x6F),
-        0x1D54A => array(0x73),
-        0x1D54B => array(0x74),
-        0x1D54C => array(0x75),
-        0x1D54D => array(0x76),
-        0x1D54E => array(0x77),
-        0x1D54F => array(0x78),
-        0x1D550 => array(0x79),
-        0x1D56C => array(0x61),
-        0x1D56D => array(0x62),
-        0x1D56E => array(0x63),
-        0x1D56F => array(0x64),
-        0x1D570 => array(0x65),
-        0x1D571 => array(0x66),
-        0x1D572 => array(0x67),
-        0x1D573 => array(0x68),
-        0x1D574 => array(0x69),
-        0x1D575 => array(0x6A),
-        0x1D576 => array(0x6B),
-        0x1D577 => array(0x6C),
-        0x1D578 => array(0x6D),
-        0x1D579 => array(0x6E),
-        0x1D57A => array(0x6F),
-        0x1D57B => array(0x70),
-        0x1D57C => array(0x71),
-        0x1D57D => array(0x72),
-        0x1D57E => array(0x73),
-        0x1D57F => array(0x74),
-        0x1D580 => array(0x75),
-        0x1D581 => array(0x76),
-        0x1D582 => array(0x77),
-        0x1D583 => array(0x78),
-        0x1D584 => array(0x79),
-        0x1D585 => array(0x7A),
-        0x1D5A0 => array(0x61),
-        0x1D5A1 => array(0x62),
-        0x1D5A2 => array(0x63),
-        0x1D5A3 => array(0x64),
-        0x1D5A4 => array(0x65),
-        0x1D5A5 => array(0x66),
-        0x1D5A6 => array(0x67),
-        0x1D5A7 => array(0x68),
-        0x1D5A8 => array(0x69),
-        0x1D5A9 => array(0x6A),
-        0x1D5AA => array(0x6B),
-        0x1D5AB => array(0x6C),
-        0x1D5AC => array(0x6D),
-        0x1D5AD => array(0x6E),
-        0x1D5AE => array(0x6F),
-        0x1D5AF => array(0x70),
-        0x1D5B0 => array(0x71),
-        0x1D5B1 => array(0x72),
-        0x1D5B2 => array(0x73),
-        0x1D5B3 => array(0x74),
-        0x1D5B4 => array(0x75),
-        0x1D5B5 => array(0x76),
-        0x1D5B6 => array(0x77),
-        0x1D5B7 => array(0x78),
-        0x1D5B8 => array(0x79),
-        0x1D5B9 => array(0x7A),
-        0x1D5D4 => array(0x61),
-        0x1D5D5 => array(0x62),
-        0x1D5D6 => array(0x63),
-        0x1D5D7 => array(0x64),
-        0x1D5D8 => array(0x65),
-        0x1D5D9 => array(0x66),
-        0x1D5DA => array(0x67),
-        0x1D5DB => array(0x68),
-        0x1D5DC => array(0x69),
-        0x1D5DD => array(0x6A),
-        0x1D5DE => array(0x6B),
-        0x1D5DF => array(0x6C),
-        0x1D5E0 => array(0x6D),
-        0x1D5E1 => array(0x6E),
-        0x1D5E2 => array(0x6F),
-        0x1D5E3 => array(0x70),
-        0x1D5E4 => array(0x71),
-        0x1D5E5 => array(0x72),
-        0x1D5E6 => array(0x73),
-        0x1D5E7 => array(0x74),
-        0x1D5E8 => array(0x75),
-        0x1D5E9 => array(0x76),
-        0x1D5EA => array(0x77),
-        0x1D5EB => array(0x78),
-        0x1D5EC => array(0x79),
-        0x1D5ED => array(0x7A),
-        0x1D608 => array(0x61),
-        0x1D609 => array(0x62),
-        0x1D60A => array(0x63),
-        0x1D60B => array(0x64),
-        0x1D60C => array(0x65),
-        0x1D60D => array(0x66),
-        0x1D60E => array(0x67),
-        0x1D60F => array(0x68),
-        0x1D610 => array(0x69),
-        0x1D611 => array(0x6A),
-        0x1D612 => array(0x6B),
-        0x1D613 => array(0x6C),
-        0x1D614 => array(0x6D),
-        0x1D615 => array(0x6E),
-        0x1D616 => array(0x6F),
-        0x1D617 => array(0x70),
-        0x1D618 => array(0x71),
-        0x1D619 => array(0x72),
-        0x1D61A => array(0x73),
-        0x1D61B => array(0x74),
-        0x1D61C => array(0x75),
-        0x1D61D => array(0x76),
-        0x1D61E => array(0x77),
-        0x1D61F => array(0x78),
-        0x1D620 => array(0x79),
-        0x1D621 => array(0x7A),
-        0x1D63C => array(0x61),
-        0x1D63D => array(0x62),
-        0x1D63E => array(0x63),
-        0x1D63F => array(0x64),
-        0x1D640 => array(0x65),
-        0x1D641 => array(0x66),
-        0x1D642 => array(0x67),
-        0x1D643 => array(0x68),
-        0x1D644 => array(0x69),
-        0x1D645 => array(0x6A),
-        0x1D646 => array(0x6B),
-        0x1D647 => array(0x6C),
-        0x1D648 => array(0x6D),
-        0x1D649 => array(0x6E),
-        0x1D64A => array(0x6F),
-        0x1D64B => array(0x70),
-        0x1D64C => array(0x71),
-        0x1D64D => array(0x72),
-        0x1D64E => array(0x73),
-        0x1D64F => array(0x74),
-        0x1D650 => array(0x75),
-        0x1D651 => array(0x76),
-        0x1D652 => array(0x77),
-        0x1D653 => array(0x78),
-        0x1D654 => array(0x79),
-        0x1D655 => array(0x7A),
-        0x1D670 => array(0x61),
-        0x1D671 => array(0x62),
-        0x1D672 => array(0x63),
-        0x1D673 => array(0x64),
-        0x1D674 => array(0x65),
-        0x1D675 => array(0x66),
-        0x1D676 => array(0x67),
-        0x1D677 => array(0x68),
-        0x1D678 => array(0x69),
-        0x1D679 => array(0x6A),
-        0x1D67A => array(0x6B),
-        0x1D67B => array(0x6C),
-        0x1D67C => array(0x6D),
-        0x1D67D => array(0x6E),
-        0x1D67E => array(0x6F),
-        0x1D67F => array(0x70),
-        0x1D680 => array(0x71),
-        0x1D681 => array(0x72),
-        0x1D682 => array(0x73),
-        0x1D683 => array(0x74),
-        0x1D684 => array(0x75),
-        0x1D685 => array(0x76),
-        0x1D686 => array(0x77),
-        0x1D687 => array(0x78),
-        0x1D688 => array(0x79),
-        0x1D689 => array(0x7A),
-        0x1D6A8 => array(0x3B1),
-        0x1D6A9 => array(0x3B2),
-        0x1D6AA => array(0x3B3),
-        0x1D6AB => array(0x3B4),
-        0x1D6AC => array(0x3B5),
-        0x1D6AD => array(0x3B6),
-        0x1D6AE => array(0x3B7),
-        0x1D6AF => array(0x3B8),
-        0x1D6B0 => array(0x3B9),
-        0x1D6B1 => array(0x3BA),
-        0x1D6B2 => array(0x3BB),
-        0x1D6B3 => array(0x3BC),
-        0x1D6B4 => array(0x3BD),
-        0x1D6B5 => array(0x3BE),
-        0x1D6B6 => array(0x3BF),
-        0x1D6B7 => array(0x3C0),
-        0x1D6B8 => array(0x3C1),
-        0x1D6B9 => array(0x3B8),
-        0x1D6BA => array(0x3C3),
-        0x1D6BB => array(0x3C4),
-        0x1D6BC => array(0x3C5),
-        0x1D6BD => array(0x3C6),
-        0x1D6BE => array(0x3C7),
-        0x1D6BF => array(0x3C8),
-        0x1D6C0 => array(0x3C9),
-        0x1D6D3 => array(0x3C3),
-        0x1D6E2 => array(0x3B1),
-        0x1D6E3 => array(0x3B2),
-        0x1D6E4 => array(0x3B3),
-        0x1D6E5 => array(0x3B4),
-        0x1D6E6 => array(0x3B5),
-        0x1D6E7 => array(0x3B6),
-        0x1D6E8 => array(0x3B7),
-        0x1D6E9 => array(0x3B8),
-        0x1D6EA => array(0x3B9),
-        0x1D6EB => array(0x3BA),
-        0x1D6EC => array(0x3BB),
-        0x1D6ED => array(0x3BC),
-        0x1D6EE => array(0x3BD),
-        0x1D6EF => array(0x3BE),
-        0x1D6F0 => array(0x3BF),
-        0x1D6F1 => array(0x3C0),
-        0x1D6F2 => array(0x3C1),
-        0x1D6F3 => array(0x3B8),
-        0x1D6F4 => array(0x3C3),
-        0x1D6F5 => array(0x3C4),
-        0x1D6F6 => array(0x3C5),
-        0x1D6F7 => array(0x3C6),
-        0x1D6F8 => array(0x3C7),
-        0x1D6F9 => array(0x3C8),
-        0x1D6FA => array(0x3C9),
-        0x1D70D => array(0x3C3),
-        0x1D71C => array(0x3B1),
-        0x1D71D => array(0x3B2),
-        0x1D71E => array(0x3B3),
-        0x1D71F => array(0x3B4),
-        0x1D720 => array(0x3B5),
-        0x1D721 => array(0x3B6),
-        0x1D722 => array(0x3B7),
-        0x1D723 => array(0x3B8),
-        0x1D724 => array(0x3B9),
-        0x1D725 => array(0x3BA),
-        0x1D726 => array(0x3BB),
-        0x1D727 => array(0x3BC),
-        0x1D728 => array(0x3BD),
-        0x1D729 => array(0x3BE),
-        0x1D72A => array(0x3BF),
-        0x1D72B => array(0x3C0),
-        0x1D72C => array(0x3C1),
-        0x1D72D => array(0x3B8),
-        0x1D72E => array(0x3C3),
-        0x1D72F => array(0x3C4),
-        0x1D730 => array(0x3C5),
-        0x1D731 => array(0x3C6),
-        0x1D732 => array(0x3C7),
-        0x1D733 => array(0x3C8),
-        0x1D734 => array(0x3C9),
-        0x1D747 => array(0x3C3),
-        0x1D756 => array(0x3B1),
-        0x1D757 => array(0x3B2),
-        0x1D758 => array(0x3B3),
-        0x1D759 => array(0x3B4),
-        0x1D75A => array(0x3B5),
-        0x1D75B => array(0x3B6),
-        0x1D75C => array(0x3B7),
-        0x1D75D => array(0x3B8),
-        0x1D75E => array(0x3B9),
-        0x1D75F => array(0x3BA),
-        0x1D760 => array(0x3BB),
-        0x1D761 => array(0x3BC),
-        0x1D762 => array(0x3BD),
-        0x1D763 => array(0x3BE),
-        0x1D764 => array(0x3BF),
-        0x1D765 => array(0x3C0),
-        0x1D766 => array(0x3C1),
-        0x1D767 => array(0x3B8),
-        0x1D768 => array(0x3C3),
-        0x1D769 => array(0x3C4),
-        0x1D76A => array(0x3C5),
-        0x1D76B => array(0x3C6),
-        0x1D76C => array(0x3C7),
-        0x1D76D => array(0x3C8),
-        0x1D76E => array(0x3C9),
-        0x1D781 => array(0x3C3),
-        0x1D790 => array(0x3B1),
-        0x1D791 => array(0x3B2),
-        0x1D792 => array(0x3B3),
-        0x1D793 => array(0x3B4),
-        0x1D794 => array(0x3B5),
-        0x1D795 => array(0x3B6),
-        0x1D796 => array(0x3B7),
-        0x1D797 => array(0x3B8),
-        0x1D798 => array(0x3B9),
-        0x1D799 => array(0x3BA),
-        0x1D79A => array(0x3BB),
-        0x1D79B => array(0x3BC),
-        0x1D79C => array(0x3BD),
-        0x1D79D => array(0x3BE),
-        0x1D79E => array(0x3BF),
-        0x1D79F => array(0x3C0),
-        0x1D7A0 => array(0x3C1),
-        0x1D7A1 => array(0x3B8),
-        0x1D7A2 => array(0x3C3),
-        0x1D7A3 => array(0x3C4),
-        0x1D7A4 => array(0x3C5),
-        0x1D7A5 => array(0x3C6),
-        0x1D7A6 => array(0x3C7),
-        0x1D7A7 => array(0x3C8),
-        0x1D7A8 => array(0x3C9),
-        0x1D7BB => array(0x3C3),
-        0x3F9   => array(0x3C3),
-        0x1D2C  => array(0x61),
-        0x1D2D  => array(0xE6),
-        0x1D2E  => array(0x62),
-        0x1D30  => array(0x64),
-        0x1D31  => array(0x65),
-        0x1D32  => array(0x1DD),
-        0x1D33  => array(0x67),
-        0x1D34  => array(0x68),
-        0x1D35  => array(0x69),
-        0x1D36  => array(0x6A),
-        0x1D37  => array(0x6B),
-        0x1D38  => array(0x6C),
-        0x1D39  => array(0x6D),
-        0x1D3A  => array(0x6E),
-        0x1D3C  => array(0x6F),
-        0x1D3D  => array(0x223),
-        0x1D3E  => array(0x70),
-        0x1D3F  => array(0x72),
-        0x1D40  => array(0x74),
-        0x1D41  => array(0x75),
-        0x1D42  => array(0x77),
-        0x213B  => array(0x66, 0x61, 0x78),
-        0x3250  => array(0x70, 0x74, 0x65),
-        0x32CC  => array(0x68, 0x67),
-        0x32CE  => array(0x65, 0x76),
-        0x32CF  => array(0x6C, 0x74, 0x64),
-        0x337A  => array(0x69, 0x75),
-        0x33DE  => array(0x76, 0x2215, 0x6D),
-        0x33DF  => array(0x61, 0x2215, 0x6D)
-    );
-
-    /**
-     * Normalization Combining Classes; Code Points not listed
-     * got Combining Class 0.
-     *
-     * @static
-     * @var array
-     * @access private
-     */
-    private static $_np_norm_combcls = array(
-        0x334   => 1,
-        0x335   => 1,
-        0x336   => 1,
-        0x337   => 1,
-        0x338   => 1,
-        0x93C   => 7,
-        0x9BC   => 7,
-        0xA3C   => 7,
-        0xABC   => 7,
-        0xB3C   => 7,
-        0xCBC   => 7,
-        0x1037  => 7,
-        0x3099  => 8,
-        0x309A  => 8,
-        0x94D   => 9,
-        0x9CD   => 9,
-        0xA4D   => 9,
-        0xACD   => 9,
-        0xB4D   => 9,
-        0xBCD   => 9,
-        0xC4D   => 9,
-        0xCCD   => 9,
-        0xD4D   => 9,
-        0xDCA   => 9,
-        0xE3A   => 9,
-        0xF84   => 9,
-        0x1039  => 9,
-        0x1714  => 9,
-        0x1734  => 9,
-        0x17D2  => 9,
-        0x5B0   => 10,
-        0x5B1   => 11,
-        0x5B2   => 12,
-        0x5B3   => 13,
-        0x5B4   => 14,
-        0x5B5   => 15,
-        0x5B6   => 16,
-        0x5B7   => 17,
-        0x5B8   => 18,
-        0x5B9   => 19,
-        0x5BB   => 20,
-        0x5Bc   => 21,
-        0x5BD   => 22,
-        0x5BF   => 23,
-        0x5C1   => 24,
-        0x5C2   => 25,
-        0xFB1E  => 26,
-        0x64B   => 27,
-        0x64C   => 28,
-        0x64D   => 29,
-        0x64E   => 30,
-        0x64F   => 31,
-        0x650   => 32,
-        0x651   => 33,
-        0x652   => 34,
-        0x670   => 35,
-        0x711   => 36,
-        0xC55   => 84,
-        0xC56   => 91,
-        0xE38   => 103,
-        0xE39   => 103,
-        0xE48   => 107,
-        0xE49   => 107,
-        0xE4A   => 107,
-        0xE4B   => 107,
-        0xEB8   => 118,
-        0xEB9   => 118,
-        0xEC8   => 122,
-        0xEC9   => 122,
-        0xECA   => 122,
-        0xECB   => 122,
-        0xF71   => 129,
-        0xF72   => 130,
-        0xF7A   => 130,
-        0xF7B   => 130,
-        0xF7C   => 130,
-        0xF7D   => 130,
-        0xF80   => 130,
-        0xF74   => 132,
-        0x321   => 202,
-        0x322   => 202,
-        0x327   => 202,
-        0x328   => 202,
-        0x31B   => 216,
-        0xF39   => 216,
-        0x1D165 => 216,
-        0x1D166 => 216,
-        0x1D16E => 216,
-        0x1D16F => 216,
-        0x1D170 => 216,
-        0x1D171 => 216,
-        0x1D172 => 216,
-        0x302A  => 218,
-        0x316   => 220,
-        0x317   => 220,
-        0x318   => 220,
-        0x319   => 220,
-        0x31C   => 220,
-        0x31D   => 220,
-        0x31E   => 220,
-        0x31F   => 220,
-        0x320   => 220,
-        0x323   => 220,
-        0x324   => 220,
-        0x325   => 220,
-        0x326   => 220,
-        0x329   => 220,
-        0x32A   => 220,
-        0x32B   => 220,
-        0x32C   => 220,
-        0x32D   => 220,
-        0x32E   => 220,
-        0x32F   => 220,
-        0x330   => 220,
-        0x331   => 220,
-        0x332   => 220,
-        0x333   => 220,
-        0x339   => 220,
-        0x33A   => 220,
-        0x33B   => 220,
-        0x33C   => 220,
-        0x347   => 220,
-        0x348   => 220,
-        0x349   => 220,
-        0x34D   => 220,
-        0x34E   => 220,
-        0x353   => 220,
-        0x354   => 220,
-        0x355   => 220,
-        0x356   => 220,
-        0x591   => 220,
-        0x596   => 220,
-        0x59B   => 220,
-        0x5A3   => 220,
-        0x5A4   => 220,
-        0x5A5   => 220,
-        0x5A6   => 220,
-        0x5A7   => 220,
-        0x5AA   => 220,
-        0x655   => 220,
-        0x656   => 220,
-        0x6E3   => 220,
-        0x6EA   => 220,
-        0x6ED   => 220,
-        0x731   => 220,
-        0x734   => 220,
-        0x737   => 220,
-        0x738   => 220,
-        0x739   => 220,
-        0x73B   => 220,
-        0x73C   => 220,
-        0x73E   => 220,
-        0x742   => 220,
-        0x744   => 220,
-        0x746   => 220,
-        0x748   => 220,
-        0x952   => 220,
-        0xF18   => 220,
-        0xF19   => 220,
-        0xF35   => 220,
-        0xF37   => 220,
-        0xFC6   => 220,
-        0x193B  => 220,
-        0x20E8  => 220,
-        0x1D17B => 220,
-        0x1D17C => 220,
-        0x1D17D => 220,
-        0x1D17E => 220,
-        0x1D17F => 220,
-        0x1D180 => 220,
-        0x1D181 => 220,
-        0x1D182 => 220,
-        0x1D18A => 220,
-        0x1D18B => 220,
-        0x59A   => 222,
-        0x5AD   => 222,
-        0x1929  => 222,
-        0x302D  => 222,
-        0x302E  => 224,
-        0x302F  => 224,
-        0x1D16D => 226,
-        0x5AE   => 228,
-        0x18A9  => 228,
-        0x302B  => 228,
-        0x300   => 230,
-        0x301   => 230,
-        0x302   => 230,
-        0x303   => 230,
-        0x304   => 230,
-        0x305   => 230,
-        0x306   => 230,
-        0x307   => 230,
-        0x308   => 230,
-        0x309   => 230,
-        0x30A   => 230,
-        0x30B   => 230,
-        0x30C   => 230,
-        0x30D   => 230,
-        0x30E   => 230,
-        0x30F   => 230,
-        0x310   => 230,
-        0x311   => 230,
-        0x312   => 230,
-        0x313   => 230,
-        0x314   => 230,
-        0x33D   => 230,
-        0x33E   => 230,
-        0x33F   => 230,
-        0x340   => 230,
-        0x341   => 230,
-        0x342   => 230,
-        0x343   => 230,
-        0x344   => 230,
-        0x346   => 230,
-        0x34A   => 230,
-        0x34B   => 230,
-        0x34C   => 230,
-        0x350   => 230,
-        0x351   => 230,
-        0x352   => 230,
-        0x357   => 230,
-        0x363   => 230,
-        0x364   => 230,
-        0x365   => 230,
-        0x366   => 230,
-        0x367   => 230,
-        0x368   => 230,
-        0x369   => 230,
-        0x36A   => 230,
-        0x36B   => 230,
-        0x36C   => 230,
-        0x36D   => 230,
-        0x36E   => 230,
-        0x36F   => 230,
-        0x483   => 230,
-        0x484   => 230,
-        0x485   => 230,
-        0x486   => 230,
-        0x592   => 230,
-        0x593   => 230,
-        0x594   => 230,
-        0x595   => 230,
-        0x597   => 230,
-        0x598   => 230,
-        0x599   => 230,
-        0x59C   => 230,
-        0x59D   => 230,
-        0x59E   => 230,
-        0x59F   => 230,
-        0x5A0   => 230,
-        0x5A1   => 230,
-        0x5A8   => 230,
-        0x5A9   => 230,
-        0x5AB   => 230,
-        0x5AC   => 230,
-        0x5AF   => 230,
-        0x5C4   => 230,
-        0x610   => 230,
-        0x611   => 230,
-        0x612   => 230,
-        0x613   => 230,
-        0x614   => 230,
-        0x615   => 230,
-        0x653   => 230,
-        0x654   => 230,
-        0x657   => 230,
-        0x658   => 230,
-        0x6D6   => 230,
-        0x6D7   => 230,
-        0x6D8   => 230,
-        0x6D9   => 230,
-        0x6DA   => 230,
-        0x6DB   => 230,
-        0x6DC   => 230,
-        0x6DF   => 230,
-        0x6E0   => 230,
-        0x6E1   => 230,
-        0x6E2   => 230,
-        0x6E4   => 230,
-        0x6E7   => 230,
-        0x6E8   => 230,
-        0x6EB   => 230,
-        0x6EC   => 230,
-        0x730   => 230,
-        0x732   => 230,
-        0x733   => 230,
-        0x735   => 230,
-        0x736   => 230,
-        0x73A   => 230,
-        0x73D   => 230,
-        0x73F   => 230,
-        0x740   => 230,
-        0x741   => 230,
-        0x743   => 230,
-        0x745   => 230,
-        0x747   => 230,
-        0x749   => 230,
-        0x74A   => 230,
-        0x951   => 230,
-        0x953   => 230,
-        0x954   => 230,
-        0xF82   => 230,
-        0xF83   => 230,
-        0xF86   => 230,
-        0xF87   => 230,
-        0x170D  => 230,
-        0x193A  => 230,
-        0x20D0  => 230,
-        0x20D1  => 230,
-        0x20D4  => 230,
-        0x20D5  => 230,
-        0x20D6  => 230,
-        0x20D7  => 230,
-        0x20DB  => 230,
-        0x20DC  => 230,
-        0x20E1  => 230,
-        0x20E7  => 230,
-        0x20E9  => 230,
-        0xFE20  => 230,
-        0xFE21  => 230,
-        0xFE22  => 230,
-        0xFE23  => 230,
-        0x1D185 => 230,
-        0x1D186 => 230,
-        0x1D187 => 230,
-        0x1D189 => 230,
-        0x1D188 => 230,
-        0x1D1AA => 230,
-        0x1D1AB => 230,
-        0x1D1AC => 230,
-        0x1D1AD => 230,
-        0x315   => 232,
-        0x31A   => 232,
-        0x302C  => 232,
-        0x35F   => 233,
-        0x362   => 233,
-        0x35D   => 234,
-        0x35E   => 234,
-        0x360   => 234,
-        0x361   => 234,
-        0x345   => 240
-    );
-    // }}}
-
-    // {{{ properties
-    /**
-     * @var string
-     * @access private
-     */
-    private $_punycode_prefix = 'xn--';
-
-    /**
-     * @access private
-     */
-    private $_invalid_ucs = 0x80000000;
-
-    /**
-     * @access private
-     */
-    private $_max_ucs = 0x10FFFF;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_base = 36;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_tmin = 1;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_tmax = 26;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_skew = 38;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_damp = 700;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_initial_bias = 72;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_initial_n = 0x80;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_slast;
-
-    /**
-     * @access private
-     */
-    private $_sbase = 0xAC00;
-
-    /**
-     * @access private
-     */
-    private $_lbase = 0x1100;
-
-    /**
-     * @access private
-     */
-    private $_vbase = 0x1161;
-
-    /**
-     * @access private
-     */
-    private $_tbase = 0x11a7;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_lcount = 19;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_vcount = 21;
-
-    /**
-     * @var int
-     * @access private
-     */
-    private $_tcount = 28;
-
-    /**
-     * vcount * tcount
-     *
-     * @var int
-     * @access private
-     */
-    private $_ncount = 588;
-
-    /**
-     * lcount * tcount * vcount
-     *
-     * @var int
-     * @access private
-     */
-    private $_scount = 11172;
-
-    /**
-     * Default encoding for encode()'s input and decode()'s output is UTF-8;
-     * Other possible encodings are ucs4_string and ucs4_array
-     * See {@link setParams()} for how to select these
-     *
-     * @var bool
-     * @access private
-     */
-    private $_api_encoding = 'utf8';
-
-    /**
-     * Overlong UTF-8 encodings are forbidden
-     *
-     * @var bool
-     * @access private
-     */
-    private $_allow_overlong = false;
-
-    /**
-     * Behave strict or not
-     *
-     * @var bool
-     * @access private
-     */
-    private $_strict_mode = false;
-
-    /**
-     * IDNA-version to use
-     *
-     * Values are "2003" and "2008".
-     * Defaults to "2003", since that was the original version and for
-     * compatibility with previous versions of this library.
-     * If you need to encode "new" characters like the German "Eszett",
-     * please switch to 2008 first before encoding.
-     *
-     * @var bool
-     * @access private
-     */
-    private $_version = '2003';
-
-    /**
-     * Cached value indicating whether or not mbstring function overloading is
-     * on for strlen
-     *
-     * This is cached for optimal performance.
-     *
-     * @var boolean
-     * @see Net_IDNA2::_byteLength()
-     */
-    private static $_mb_string_overload = null;
-    // }}}
-
-
-    // {{{ constructor
-    /**
-     * Constructor
-     *
-     * @param array $options Options to initialise the object with
-     *
-     * @access public
-     * @see    setParams()
-     */
-    public function __construct($options = null)
-    {
-        $this->_slast = $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount;
-
-        if (is_array($options)) {
-            $this->setParams($options);
-        }
-
-        // populate mbstring overloading cache if not set
-        if (self::$_mb_string_overload === null) {
-            self::$_mb_string_overload = (extension_loaded('mbstring')
-                && (ini_get('mbstring.func_overload') & 0x02) === 0x02);
-        }
-    }
-    // }}}
-
-
-    /**
-     * Sets a new option value. Available options and values:
-     *
-     * [utf8 -     Use either UTF-8 or ISO-8859-1 as input (true for UTF-8, false
-     *             otherwise); The output is always UTF-8]
-     * [overlong - Unicode does not allow unnecessarily long encodings of chars,
-     *             to allow this, set this parameter to true, else to false;
-     *             default is false.]
-     * [strict -   true: strict mode, good for registration purposes - Causes errors
-     *             on failures; false: loose mode, ideal for "wildlife" applications
-     *             by silently ignoring errors and returning the original input instead]
-     *
-     * @param mixed  $option Parameter to set (string: single parameter; array of Parameter => Value pairs)
-     * @param string $value  Value to use (if parameter 1 is a string)
-     *
-     * @return boolean       true on success, false otherwise
-     * @access public
-     */
-    public function setParams($option, $value = false)
-    {
-        if (!is_array($option)) {
-            $option = array($option => $value);
-        }
-
-        foreach ($option as $k => $v) {
-            switch ($k) {
-            case 'encoding':
-                switch ($v) {
-                case 'utf8':
-                case 'ucs4_string':
-                case 'ucs4_array':
-                    $this->_api_encoding = $v;
-                    break;
-
-                default:
-                    throw new InvalidArgumentException('Set Parameter: Unknown parameter '.$v.' for option '.$k);
-                }
-
-                break;
-
-            case 'overlong':
-                $this->_allow_overlong = ($v) ? true : false;
-                break;
-
-            case 'strict':
-                $this->_strict_mode = ($v) ? true : false;
-                break;
-
-            case 'version':
-                if (in_array($v, array('2003', '2008'))) {
-                    $this->_version = $v;
-                } else {
-                    throw new InvalidArgumentException('Set Parameter: Invalid parameter '.$v.' for option '.$k);
-                }
-                break;
-
-            default:
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Encode a given UTF-8 domain name.
-     *
-     * @param string $decoded           Domain name (UTF-8 or UCS-4)
-     * @param string $one_time_encoding Desired input encoding, see {@link set_parameter}
-     *                                  If not given will use default-encoding
-     *
-     * @return string Encoded Domain name (ACE string)
-     * @return mixed  processed string
-     * @throws Exception
-     * @access public
-     */
-    public function encode($decoded, $one_time_encoding = false)
-    {
-        // Forcing conversion of input to UCS4 array
-        // If one time encoding is given, use this, else the objects property
-        switch (($one_time_encoding) ? $one_time_encoding : $this->_api_encoding) {
-        case 'utf8':
-            $decoded = $this->_utf8_to_ucs4($decoded);
-            break;
-        case 'ucs4_string':
-            $decoded = $this->_ucs4_string_to_ucs4($decoded);
-        case 'ucs4_array': // No break; before this line. Catch case, but do nothing
-            break;
-        default:
-            throw new InvalidArgumentException('Unsupported input format');
-        }
-
-        // No input, no output, what else did you expect?
-        if (empty($decoded)) return '';
-
-        // Anchors for iteration
-        $last_begin = 0;
-        // Output string
-        $output = '';
-
-        foreach ($decoded as $k => $v) {
-            // Make sure to use just the plain dot
-            switch($v) {
-            case 0x3002:
-            case 0xFF0E:
-            case 0xFF61:
-                $decoded[$k] = 0x2E;
-                // It's right, no break here
-                // The codepoints above have to be converted to dots anyway
-
-            // Stumbling across an anchoring character
-            case 0x2E:
-            case 0x2F:
-            case 0x3A:
-            case 0x3F:
-            case 0x40:
-                // Neither email addresses nor URLs allowed in strict mode
-                if ($this->_strict_mode) {
-                    throw new InvalidArgumentException('Neither email addresses nor URLs are allowed in strict mode.');
-                }
-                // Skip first char
-                if ($k) {
-                    $encoded = '';
-                    $encoded = $this->_encode(array_slice($decoded, $last_begin, (($k)-$last_begin)));
-                    if ($encoded) {
-                        $output .= $encoded;
-                    } else {
-                        $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($k)-$last_begin)));
-                    }
-                    $output .= chr($decoded[$k]);
-                }
-                $last_begin = $k + 1;
-            }
-        }
-        // Catch the rest of the string
-        if ($last_begin) {
-            $inp_len = sizeof($decoded);
-            $encoded = '';
-            $encoded = $this->_encode(array_slice($decoded, $last_begin, (($inp_len)-$last_begin)));
-            if ($encoded) {
-                $output .= $encoded;
-            } else {
-                $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($inp_len)-$last_begin)));
-            }
-            return $output;
-        }
-
-        if ($output = $this->_encode($decoded)) {
-            return $output;
-        }
-
-        return $this->_ucs4_to_utf8($decoded);
-    }
-
-    /**
-     * Decode a given ACE domain name.
-     *
-     * @param string $input             Domain name (ACE string)
-     * @param string $one_time_encoding Desired output encoding, see {@link set_parameter}
-     *
-     * @return string                   Decoded Domain name (UTF-8 or UCS-4)
-     * @throws Exception
-     * @access public
-     */
-    public function decode($input, $one_time_encoding = false)
-    {
-        // Optionally set
-        if ($one_time_encoding) {
-            switch ($one_time_encoding) {
-            case 'utf8':
-            case 'ucs4_string':
-            case 'ucs4_array':
-                break;
-            default:
-                throw new InvalidArgumentException('Unknown encoding '.$one_time_encoding);
-            }
-        }
-        // Make sure to drop any newline characters around
-        $input = trim($input);
-
-        // Negotiate input and try to determine, wether it is a plain string,
-        // an email address or something like a complete URL
-        if (strpos($input, '@')) { // Maybe it is an email address
-            // No no in strict mode
-            if ($this->_strict_mode) {
-                throw new InvalidArgumentException('Only simple domain name parts can be handled in strict mode');
-            }
-            list($email_pref, $input) = explode('@', $input, 2);
-            $arr = explode('.', $input);
-            foreach ($arr as $k => $v) {
-                $conv = $this->_decode($v);
-                if ($conv) $arr[$k] = $conv;
-            }
-            $return = $email_pref . '@' . join('.', $arr);
-        } elseif (preg_match('![:\./]!', $input)) { // Or a complete domain name (with or without paths / parameters)
-            // No no in strict mode
-            if ($this->_strict_mode) {
-                throw new InvalidArgumentException('Only simple domain name parts can be handled in strict mode');
-            }
-
-            $parsed = parse_url($input);
-            if (isset($parsed['host'])) {
-                $arr = explode('.', $parsed['host']);
-                foreach ($arr as $k => $v) {
-                    $conv = $this->_decode($v);
-                    if ($conv) $arr[$k] = $conv;
-                }
-                $parsed['host'] = join('.', $arr);
-                if (isset($parsed['scheme'])) {
-                    $parsed['scheme'] .= (strtolower($parsed['scheme']) == 'mailto') ? ':' : '://';
-                }
-                $return = $this->_unparse_url($parsed);
-            } else { // parse_url seems to have failed, try without it
-                $arr = explode('.', $input);
-                foreach ($arr as $k => $v) {
-                    $conv = $this->_decode($v);
-                    if ($conv) $arr[$k] = $conv;
-                }
-                $return = join('.', $arr);
-            }
-        } else { // Otherwise we consider it being a pure domain name string
-            $return = $this->_decode($input);
-        }
-        // The output is UTF-8 by default, other output formats need conversion here
-        // If one time encoding is given, use this, else the objects property
-        switch (($one_time_encoding) ? $one_time_encoding : $this->_api_encoding) {
-        case 'utf8':
-            return $return;
-            break;
-        case 'ucs4_string':
-            return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return));
-            break;
-        case 'ucs4_array':
-            return $this->_utf8_to_ucs4($return);
-            break;
-        default:
-            throw new InvalidArgumentException('Unsupported output format');
-        }
-    }
-
-
-    // {{{ private
-    /**
-     * Opposite function to parse_url()
-     *
-     * Inspired by code from comments of php.net-documentation for parse_url()
-     *
-     * @param array $parts_arr parts (strings) as returned by parse_url()
-     *
-     * @return string
-     * @access private
-     */
-    private function _unparse_url($parts_arr)
-    {
-        if (!empty($parts_arr['scheme'])) {
-            $ret_url = $parts_arr['scheme'];
-        }
-        if (!empty($parts_arr['user'])) {
-            $ret_url .= $parts_arr['user'];
-            if (!empty($parts_arr['pass'])) {
-                $ret_url .= ':' . $parts_arr['pass'];
-            }
-            $ret_url .= '@';
-        }
-        $ret_url .= $parts_arr['host'];
-        if (!empty($parts_arr['port'])) {
-            $ret_url .= ':' . $parts_arr['port'];
-        }
-        $ret_url .= $parts_arr['path'];
-        if (!empty($parts_arr['query'])) {
-            $ret_url .= '?' . $parts_arr['query'];
-        }
-        if (!empty($parts_arr['fragment'])) {
-            $ret_url .= '#' . $parts_arr['fragment'];
-        }
-        return $ret_url;
-    }
-
-    /**
-     * The actual encoding algorithm.
-     *
-     * @param string $decoded Decoded string which should be encoded
-     *
-     * @return string         Encoded string
-     * @throws Exception
-     * @access private
-     */
-    private function _encode($decoded)
-    {
-        // We cannot encode a domain name containing the Punycode prefix
-        $extract = self::_byteLength($this->_punycode_prefix);
-        $check_pref = $this->_utf8_to_ucs4($this->_punycode_prefix);
-        $check_deco = array_slice($decoded, 0, $extract);
-
-        if ($check_pref == $check_deco) {
-            throw new InvalidArgumentException('This is already a punycode string');
-        }
-
-        // We will not try to encode strings consisting of basic code points only
-        $encodable = false;
-        foreach ($decoded as $k => $v) {
-            if ($v > 0x7a) {
-                $encodable = true;
-                break;
-            }
-        }
-        if (!$encodable) {
-            if ($this->_strict_mode) {
-                throw new InvalidArgumentException('The given string does not contain encodable chars');
-            }
-
-            return false;
-        }
-
-        // Do NAMEPREP
-        $decoded = $this->_nameprep($decoded);
-
-        $deco_len = count($decoded);
-
-        // Empty array
-        if (!$deco_len) {
-            return false;
-        }
-
-        // How many chars have been consumed
-        $codecount = 0;
-
-        // Start with the prefix; copy it to output
-        $encoded = $this->_punycode_prefix;
-
-        $encoded = '';
-        // Copy all basic code points to output
-        for ($i = 0; $i < $deco_len; ++$i) {
-            $test = $decoded[$i];
-            // Will match [0-9a-zA-Z-]
-            if ((0x2F < $test && $test < 0x40)
-                || (0x40 < $test && $test < 0x5B)
-                || (0x60 < $test && $test <= 0x7B)
-                || (0x2D == $test)
-            ) {
-                $encoded .= chr($decoded[$i]);
-                $codecount++;
-            }
-        }
-
-        // All codepoints were basic ones
-        if ($codecount == $deco_len) {
-            return $encoded;
-        }
-
-        // Start with the prefix; copy it to output
-        $encoded = $this->_punycode_prefix . $encoded;
-
-        // If we have basic code points in output, add an hyphen to the end
-        if ($codecount) {
-            $encoded .= '-';
-        }
-
-        // Now find and encode all non-basic code points
-        $is_first  = true;
-        $cur_code  = $this->_initial_n;
-        $bias      = $this->_initial_bias;
-        $delta     = 0;
-
-        while ($codecount < $deco_len) {
-            // Find the smallest code point >= the current code point and
-            // remember the last ouccrence of it in the input
-            for ($i = 0, $next_code = $this->_max_ucs; $i < $deco_len; $i++) {
-                if ($decoded[$i] >= $cur_code && $decoded[$i] <= $next_code) {
-                    $next_code = $decoded[$i];
-                }
-            }
-
-            $delta += ($next_code - $cur_code) * ($codecount + 1);
-            $cur_code = $next_code;
-
-            // Scan input again and encode all characters whose code point is $cur_code
-            for ($i = 0; $i < $deco_len; $i++) {
-                if ($decoded[$i] < $cur_code) {
-                    $delta++;
-                } else if ($decoded[$i] == $cur_code) {
-                    for ($q = $delta, $k = $this->_base; 1; $k += $this->_base) {
-                        $t = ($k <= $bias)?
-                            $this->_tmin :
-                            (($k >= $bias + $this->_tmax)? $this->_tmax : $k - $bias);
-
-                        if ($q < $t) {
-                            break;
-                        }
-
-                        $encoded .= $this->_encodeDigit(ceil($t + (($q - $t) % ($this->_base - $t))));
-                        $q = ($q - $t) / ($this->_base - $t);
-                    }
-
-                    $encoded .= $this->_encodeDigit($q);
-                    $bias = $this->_adapt($delta, $codecount + 1, $is_first);
-                    $codecount++;
-                    $delta = 0;
-                    $is_first = false;
-                }
-            }
-
-            $delta++;
-            $cur_code++;
-        }
-
-        return $encoded;
-    }
-
-    /**
-     * The actual decoding algorithm.
-     *
-     * @param string $encoded Encoded string which should be decoded
-     *
-     * @return string         Decoded string
-     * @throws Exception
-     * @access private
-     */
-    private function _decode($encoded)
-    {
-        // We do need to find the Punycode prefix
-        if (!preg_match('!^' . preg_quote($this->_punycode_prefix, '!') . '!', $encoded)) {
-            return false;
-        }
-
-        $encode_test = preg_replace('!^' . preg_quote($this->_punycode_prefix, '!') . '!', '', $encoded);
-
-        // If nothing left after removing the prefix, it is hopeless
-        if (!$encode_test) {
-            return false;
-        }
-
-        // Find last occurence of the delimiter
-        $delim_pos = strrpos($encoded, '-');
-
-        if ($delim_pos > self::_byteLength($this->_punycode_prefix)) {
-            for ($k = self::_byteLength($this->_punycode_prefix); $k < $delim_pos; ++$k) {
-                $decoded[] = ord($encoded{$k});
-            }
-        } else {
-            $decoded = array();
-        }
-
-        $deco_len = count($decoded);
-        $enco_len = self::_byteLength($encoded);
-
-        // Wandering through the strings; init
-        $is_first = true;
-        $bias     = $this->_initial_bias;
-        $idx      = 0;
-        $char     = $this->_initial_n;
-
-        for ($enco_idx = ($delim_pos)? ($delim_pos + 1) : 0; $enco_idx < $enco_len; ++$deco_len) {
-            for ($old_idx = $idx, $w = 1, $k = $this->_base; 1 ; $k += $this->_base) {
-                $digit = $this->_decodeDigit($encoded{$enco_idx++});
-                $idx += $digit * $w;
-
-                $t = ($k <= $bias) ?
-                    $this->_tmin :
-                    (($k >= $bias + $this->_tmax)? $this->_tmax : ($k - $bias));
-
-                if ($digit < $t) {
-                    break;
-                }
-
-                $w = (int)($w * ($this->_base - $t));
-            }
-
-            $bias      = $this->_adapt($idx - $old_idx, $deco_len + 1, $is_first);
-            $is_first  = false;
-            $char     += (int) ($idx / ($deco_len + 1));
-            $idx      %= ($deco_len + 1);
-
-            if ($deco_len > 0) {
-                // Make room for the decoded char
-                for ($i = $deco_len; $i > $idx; $i--) {
-                    $decoded[$i] = $decoded[($i - 1)];
-                }
-            }
-
-            $decoded[$idx++] = $char;
-        }
-
-        return $this->_ucs4_to_utf8($decoded);
-    }
-
-    /**
-     * Adapt the bias according to the current code point and position.
-     *
-     * @param int     $delta    ...
-     * @param int     $npoints  ...
-     * @param boolean $is_first ...
-     *
-     * @return int
-     * @access private
-     */
-    private function _adapt($delta, $npoints, $is_first)
-    {
-        $delta = (int) ($is_first ? ($delta / $this->_damp) : ($delta / 2));
-        $delta += (int) ($delta / $npoints);
-
-        for ($k = 0; $delta > (($this->_base - $this->_tmin) * $this->_tmax) / 2; $k += $this->_base) {
-            $delta = (int) ($delta / ($this->_base - $this->_tmin));
-        }
-
-        return (int) ($k + ($this->_base - $this->_tmin + 1) * $delta / ($delta + $this->_skew));
-    }
-
-    /**
-     * Encoding a certain digit.
-     *
-     * @param int $d One digit to encode
-     *
-     * @return char  Encoded digit
-     * @access private
-     */
-    private function _encodeDigit($d)
-    {
-        return chr($d + 22 + 75 * ($d < 26));
-    }
-
-    /**
-     * Decode a certain digit.
-     *
-     * @param char $cp One digit (character) to decode
-     *
-     * @return int     Decoded digit
-     * @access private
-     */
-    private function _decodeDigit($cp)
-    {
-        $cp = ord($cp);
-        return ($cp - 48 < 10)? $cp - 22 : (($cp - 65 < 26)? $cp - 65 : (($cp - 97 < 26)? $cp - 97 : $this->_base));
-    }
-
-    /**
-     * Do Nameprep according to RFC3491 and RFC3454.
-     *
-     * @param array $input Unicode Characters
-     *
-     * @return string      Unicode Characters, Nameprep'd
-     * @throws Exception
-     * @access private
-     */
-    private function _nameprep($input)
-    {
-        $output = array();
-
-        // Walking through the input array, performing the required steps on each of
-        // the input chars and putting the result into the output array
-        // While mapping required chars we apply the cannonical ordering
-
-        foreach ($input as $v) {
-            // Map to nothing == skip that code point
-            if (in_array($v, self::$_np_map_nothing)) {
-                continue;
-            }
-
-            // Try to find prohibited input
-            if (in_array($v, self::$_np_prohibit) || in_array($v, self::$_general_prohibited)) {
-                throw new Net_IDNA2_Exception_Nameprep('Prohibited input U+' . sprintf('%08X', $v));
-            }
-
-            foreach (self::$_np_prohibit_ranges as $range) {
-                if ($range[0] <= $v && $v <= $range[1]) {
-                    throw new Net_IDNA2_Exception_Nameprep('Prohibited input U+' . sprintf('%08X', $v));
-                }
-            }
-
-            // Hangul syllable decomposition
-            if (0xAC00 <= $v && $v <= 0xD7AF) {
-                foreach ($this->_hangulDecompose($v) as $out) {
-                    $output[] = $out;
-                }
-            } else if (($this->_version == '2003') && isset(self::$_np_replacemaps[$v])) {
-                // There's a decomposition mapping for that code point
-                // Decompositions only in version 2003 (original) of IDNA
-                foreach ($this->_applyCannonicalOrdering(self::$_np_replacemaps[$v]) as $out) {
-                    $output[] = $out;
-                }
-            } else {
-                $output[] = $v;
-            }
-        }
-
-        // Combine code points
-
-        $last_class   = 0;
-        $last_starter = 0;
-        $out_len      = count($output);
-
-        for ($i = 0; $i < $out_len; ++$i) {
-            $class = $this->_getCombiningClass($output[$i]);
-
-            if ((!$last_class || $last_class != $class) && $class) {
-                // Try to match
-                $seq_len = $i - $last_starter;
-                $out = $this->_combine(array_slice($output, $last_starter, $seq_len));
-
-                // On match: Replace the last starter with the composed character and remove
-                // the now redundant non-starter(s)
-                if ($out) {
-                    $output[$last_starter] = $out;
-
-                    if (count($out) != $seq_len) {
-                        for ($j = $i + 1; $j < $out_len; ++$j) {
-                            $output[$j - 1] = $output[$j];
-                        }
-
-                        unset($output[$out_len]);
-                    }
-
-                    // Rewind the for loop by one, since there can be more possible compositions
-                    $i--;
-                    $out_len--;
-                    $last_class = ($i == $last_starter)? 0 : $this->_getCombiningClass($output[$i - 1]);
-
-                    continue;
-                }
-            }
-
-            // The current class is 0
-            if (!$class) {
-                $last_starter = $i;
-            }
-
-            $last_class = $class;
-        }
-
-        return $output;
-    }
-
-    /**
-     * Decomposes a Hangul syllable
-     * (see http://www.unicode.org/unicode/reports/tr15/#Hangul).
-     *
-     * @param integer $char 32bit UCS4 code point
-     *
-     * @return array        Either Hangul Syllable decomposed or original 32bit
-     *                      value as one value array
-     * @access private
-     */
-    private function _hangulDecompose($char)
-    {
-        $sindex = $char - $this->_sbase;
-
-        if ($sindex < 0 || $sindex >= $this->_scount) {
-            return array($char);
-        }
-
-        $result   = array();
-        $T        = $this->_tbase + $sindex % $this->_tcount;
-        $result[] = (int)($this->_lbase +  $sindex / $this->_ncount);
-        $result[] = (int)($this->_vbase + ($sindex % $this->_ncount) / $this->_tcount);
-
-        if ($T != $this->_tbase) {
-            $result[] = $T;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Ccomposes a Hangul syllable
-     * (see http://www.unicode.org/unicode/reports/tr15/#Hangul).
-     *
-     * @param array $input Decomposed UCS4 sequence
-     *
-     * @return array       UCS4 sequence with syllables composed
-     * @access private
-     */
-    private function _hangulCompose($input)
-    {
-        $inp_len = count($input);
-
-        if (!$inp_len) {
-            return array();
-        }
-
-        $result   = array();
-        $last     = $input[0];
-        $result[] = $last; // copy first char from input to output
-
-        for ($i = 1; $i < $inp_len; ++$i) {
-            $char = $input[$i];
-
-            // Find out, wether two current characters from L and V
-            $lindex = $last - $this->_lbase;
-
-            if (0 <= $lindex && $lindex < $this->_lcount) {
-                $vindex = $char - $this->_vbase;
-
-                if (0 <= $vindex && $vindex < $this->_vcount) {
-                    // create syllable of form LV
-                    $last    = ($this->_sbase + ($lindex * $this->_vcount + $vindex) * $this->_tcount);
-                    $out_off = count($result) - 1;
-                    $result[$out_off] = $last; // reset last
-
-                    // discard char
-                    continue;
-                }
-            }
-
-            // Find out, wether two current characters are LV and T
-            $sindex = $last - $this->_sbase;
-
-            if (0 <= $sindex && $sindex < $this->_scount && ($sindex % $this->_tcount) == 0) {
-                $tindex = $char - $this->_tbase;
-
-                if (0 <= $tindex && $tindex <= $this->_tcount) {
-                    // create syllable of form LVT
-                    $last += $tindex;
-                    $out_off = count($result) - 1;
-                    $result[$out_off] = $last; // reset last
-
-                    // discard char
-                    continue;
-                }
-            }
-
-            // if neither case was true, just add the character
-            $last = $char;
-            $result[] = $char;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Returns the combining class of a certain wide char.
-     *
-     * @param integer $char Wide char to check (32bit integer)
-     *
-     * @return integer      Combining class if found, else 0
-     * @access private
-     */
-    private function _getCombiningClass($char)
-    {
-        return isset(self::$_np_norm_combcls[$char])? self::$_np_norm_combcls[$char] : 0;
-    }
-
-    /**
-     * Apllies the cannonical ordering of a decomposed UCS4 sequence.
-     *
-     * @param array $input Decomposed UCS4 sequence
-     *
-     * @return array       Ordered USC4 sequence
-     * @access private
-     */
-    private function _applyCannonicalOrdering($input)
-    {
-        $swap = true;
-        $size = count($input);
-
-        while ($swap) {
-            $swap = false;
-            $last = $this->_getCombiningClass($input[0]);
-
-            for ($i = 0; $i < $size - 1; ++$i) {
-                $next = $this->_getCombiningClass($input[$i + 1]);
-
-                if ($next != 0 && $last > $next) {
-                    // Move item leftward until it fits
-                    for ($j = $i + 1; $j > 0; --$j) {
-                        if ($this->_getCombiningClass($input[$j - 1]) <= $next) {
-                            break;
-                        }
-
-                        $t = $input[$j];
-                        $input[$j] = $input[$j - 1];
-                        $input[$j - 1] = $t;
-                        $swap = 1;
-                    }
-
-                    // Reentering the loop looking at the old character again
-                    $next = $last;
-                }
-
-                $last = $next;
-            }
-        }
-
-        return $input;
-    }
-
-    /**
-     * Do composition of a sequence of starter and non-starter.
-     *
-     * @param array $input UCS4 Decomposed sequence
-     *
-     * @return array       Ordered USC4 sequence
-     * @access private
-     */
-    private function _combine($input)
-    {
-        $inp_len = count($input);
-
-        // Is it a Hangul syllable?
-        if (1 != $inp_len) {
-            $hangul = $this->_hangulCompose($input);
-
-            // This place is probably wrong
-            if (count($hangul) != $inp_len) {
-                return $hangul;
-            }
-        }
-
-        foreach (self::$_np_replacemaps as $np_src => $np_target) {
-            if ($np_target[0] != $input[0]) {
-                continue;
-            }
-
-            if (count($np_target) != $inp_len) {
-                continue;
-            }
-
-            $hit = false;
-
-            foreach ($input as $k2 => $v2) {
-                if ($v2 == $np_target[$k2]) {
-                    $hit = true;
-                } else {
-                    $hit = false;
-                    break;
-                }
-            }
-
-            if ($hit) {
-                return $np_src;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * This converts an UTF-8 encoded string to its UCS-4 (array) representation
-     * By talking about UCS-4 we mean arrays of 32bit integers representing
-     * each of the "chars". This is due to PHP not being able to handle strings with
-     * bit depth different from 8. This applies to the reverse method _ucs4_to_utf8(), too.
-     * The following UTF-8 encodings are supported:
-     *
-     * bytes bits  representation
-     * 1        7  0xxxxxxx
-     * 2       11  110xxxxx 10xxxxxx
-     * 3       16  1110xxxx 10xxxxxx 10xxxxxx
-     * 4       21  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-     * 5       26  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
-     * 6       31  1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
-     *
-     * Each x represents a bit that can be used to store character data.
-     *
-     * @param string $input utf8-encoded string
-     *
-     * @return array        ucs4-encoded array
-     * @throws Exception
-     * @access private
-     */
-    private function _utf8_to_ucs4($input)
-    {
-        $output = array();
-        $out_len = 0;
-        $inp_len = self::_byteLength($input, '8bit');
-        $mode = 'next';
-        $test = 'none';
-        for ($k = 0; $k < $inp_len; ++$k) {
-            $v = ord($input{$k}); // Extract byte from input string
-
-            if ($v < 128) { // We found an ASCII char - put into stirng as is
-                $output[$out_len] = $v;
-                ++$out_len;
-                if ('add' == $mode) {
-                    throw new UnexpectedValueException('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
-                }
-                continue;
-            }
-            if ('next' == $mode) { // Try to find the next start byte; determine the width of the Unicode char
-                $start_byte = $v;
-                $mode = 'add';
-                $test = 'range';
-                if ($v >> 5 == 6) { // &110xxxxx 10xxxxx
-                    $next_byte = 0; // Tells, how many times subsequent bitmasks must rotate 6bits to the left
-                    $v = ($v - 192) << 6;
-                } elseif ($v >> 4 == 14) { // &1110xxxx 10xxxxxx 10xxxxxx
-                    $next_byte = 1;
-                    $v = ($v - 224) << 12;
-                } elseif ($v >> 3 == 30) { // &11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-                    $next_byte = 2;
-                    $v = ($v - 240) << 18;
-                } elseif ($v >> 2 == 62) { // &111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
-                    $next_byte = 3;
-                    $v = ($v - 248) << 24;
-                } elseif ($v >> 1 == 126) { // &1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
-                    $next_byte = 4;
-                    $v = ($v - 252) << 30;
-                } else {
-                    throw new UnexpectedValueException('This might be UTF-8, but I don\'t understand it at byte '.$k);
-                }
-                if ('add' == $mode) {
-                    $output[$out_len] = (int) $v;
-                    ++$out_len;
-                    continue;
-                }
-            }
-            if ('add' == $mode) {
-                if (!$this->_allow_overlong && $test == 'range') {
-                    $test = 'none';
-                    if (($v < 0xA0 && $start_byte == 0xE0) || ($v < 0x90 && $start_byte == 0xF0) || ($v > 0x8F && $start_byte == 0xF4)) {
-                        throw new OutOfRangeException('Bogus UTF-8 character detected (out of legal range) at byte '.$k);
-                    }
-                }
-                if ($v >> 6 == 2) { // Bit mask must be 10xxxxxx
-                    $v = ($v - 128) << ($next_byte * 6);
-                    $output[($out_len - 1)] += $v;
-                    --$next_byte;
-                } else {
-                    throw new UnexpectedValueException('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
-                }
-                if ($next_byte < 0) {
-                    $mode = 'next';
-                }
-            }
-        } // for
-        return $output;
-    }
-
-    /**
-     * Convert UCS-4 array into UTF-8 string
-     *
-     * @param array $input ucs4-encoded array
-     *
-     * @return string      utf8-encoded string
-     * @throws Exception
-     * @access private
-     */
-    private function _ucs4_to_utf8($input)
-    {
-        $output = '';
-
-        foreach ($input as $v) {
-            // $v = ord($v);
-
-            if ($v < 128) {
-                // 7bit are transferred literally
-                $output .= chr($v);
-            } else if ($v < 1 << 11) {
-                // 2 bytes
-                $output .= chr(192 + ($v >> 6))
-                    . chr(128 + ($v & 63));
-            } else if ($v < 1 << 16) {
-                // 3 bytes
-                $output .= chr(224 + ($v >> 12))
-                    . chr(128 + (($v >> 6) & 63))
-                    . chr(128 + ($v & 63));
-            } else if ($v < 1 << 21) {
-                // 4 bytes
-                $output .= chr(240 + ($v >> 18))
-                    . chr(128 + (($v >> 12) & 63))
-                    . chr(128 + (($v >>  6) & 63))
-                    . chr(128 + ($v & 63));
-            } else if ($v < 1 << 26) {
-                // 5 bytes
-                $output .= chr(248 + ($v >> 24))
-                    . chr(128 + (($v >> 18) & 63))
-                    . chr(128 + (($v >> 12) & 63))
-                    . chr(128 + (($v >>  6) & 63))
-                    . chr(128 + ($v & 63));
-            } else if ($v < 1 << 31) {
-                // 6 bytes
-                $output .= chr(252 + ($v >> 30))
-                    . chr(128 + (($v >> 24) & 63))
-                    . chr(128 + (($v >> 18) & 63))
-                    . chr(128 + (($v >> 12) & 63))
-                    . chr(128 + (($v >>  6) & 63))
-                    . chr(128 + ($v & 63));
-            } else {
-                throw new UnexpectedValueException('Conversion from UCS-4 to UTF-8 failed: malformed input');
-            }
-        }
-
-        return $output;
-    }
-
-    /**
-     * Convert UCS-4 array into UCS-4 string
-     *
-     * @param array $input ucs4-encoded array
-     *
-     * @return string      ucs4-encoded string
-     * @throws Exception
-     * @access private
-     */
-    private function _ucs4_to_ucs4_string($input)
-    {
-        $output = '';
-        // Take array values and split output to 4 bytes per value
-        // The bit mask is 255, which reads &11111111
-        foreach ($input as $v) {
-            $output .= ($v & (255 << 24) >> 24) . ($v & (255 << 16) >> 16) . ($v & (255 << 8) >> 8) . ($v & 255);
-        }
-        return $output;
-    }
-
-    /**
-     * Convert UCS-4 string into UCS-4 array
-     *
-     * @param string $input ucs4-encoded string
-     *
-     * @return array        ucs4-encoded array
-     * @throws InvalidArgumentException
-     * @access private
-     */
-    private function _ucs4_string_to_ucs4($input)
-    {
-        $output = array();
-
-        $inp_len = self::_byteLength($input);
-        // Input length must be dividable by 4
-        if ($inp_len % 4) {
-            throw new InvalidArgumentException('Input UCS4 string is broken');
-        }
-
-        // Empty input - return empty output
-        if (!$inp_len) {
-            return $output;
-        }
-
-        for ($i = 0, $out_len = -1; $i < $inp_len; ++$i) {
-            // Increment output position every 4 input bytes
-            if (!$i % 4) {
-                $out_len++;
-                $output[$out_len] = 0;
-            }
-            $output[$out_len] += ord($input{$i}) << (8 * (3 - ($i % 4) ) );
-        }
-        return $output;
-    }
-
-    /**
-     * Echo hex representation of UCS4 sequence.
-     *
-     * @param array   $input       UCS4 sequence
-     * @param boolean $include_bit Include bitmask in output
-     *
-     * @return void
-     * @static
-     * @access private
-     */
-    private static function _showHex($input, $include_bit = false)
-    {
-        foreach ($input as $k => $v) {
-            echo '[', $k, '] => ', sprintf('%X', $v);
-
-            if ($include_bit) {
-                echo ' (', Net_IDNA2::_showBitmask($v), ')';
-            }
-
-            echo "\n";
-        }
-    }
-
-    /**
-     * Gives you a bit representation of given Byte (8 bits), Word (16 bits) or DWord (32 bits)
-     * Output width is automagically determined
-     *
-     * @param int $octet ...
-     *
-     * @return string    Bitmask-representation
-     * @static
-     * @access private
-     */
-    private static function _showBitmask($octet)
-    {
-        if ($octet >= (1 << 16)) {
-            $w = 31;
-        } else if ($octet >= (1 << 8)) {
-            $w = 15;
-        } else {
-            $w = 7;
-        }
-
-        $return = '';
-
-        for ($i = $w; $i > -1; $i--) {
-            $return .= ($octet & (1 << $i))? '1' : '0';
-        }
-
-        return $return;
-    }
-
-    /**
-     * Gets the length of a string in bytes even if mbstring function
-     * overloading is turned on
-     *
-     * @param string $string the string for which to get the length.
-     *
-     * @return integer the length of the string in bytes.
-     *
-     * @see Net_IDNA2::$_mb_string_overload
-     */
-    private static function _byteLength($string)
-    {
-        if (self::$_mb_string_overload) {
-            return mb_strlen($string, '8bit');
-        }
-        return strlen((binary)$string);
-    }
-
-    // }}}}
-
-    // {{{ factory
-    /**
-     * Attempts to return a concrete IDNA instance for either php4 or php5.
-     *
-     * @param array $params Set of paramaters
-     *
-     * @return Net_IDNA2
-     * @access public
-     */
-    function getInstance($params = array())
-    {
-        return new Net_IDNA2($params);
-    }
-    // }}}
-
-    // {{{ singleton
-    /**
-     * Attempts to return a concrete IDNA instance for either php4 or php5,
-     * only creating a new instance if no IDNA instance with the same
-     * parameters currently exists.
-     *
-     * @param array $params Set of paramaters
-     *
-     * @return object Net_IDNA2
-     * @access public
-     */
-    function singleton($params = array())
-    {
-        static $instances;
-        if (!isset($instances)) {
-            $instances = array();
-        }
-
-        $signature = serialize($params);
-        if (!isset($instances[$signature])) {
-            $instances[$signature] = Net_IDNA2::getInstance($params);
-        }
-
-        return $instances[$signature];
-    }
-    // }}}
-}
-
-?>
diff --git a/program/lib/Net/IDNA2/Exception.php b/program/lib/Net/IDNA2/Exception.php
deleted file mode 100644
index 72cb1ae..0000000
--- a/program/lib/Net/IDNA2/Exception.php
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-class Net_IDNA2_Exception extends Exception
-{
-}
diff --git a/program/lib/Net/IDNA2/Exception/Nameprep.php b/program/lib/Net/IDNA2/Exception/Nameprep.php
deleted file mode 100644
index 44cbd6b..0000000
--- a/program/lib/Net/IDNA2/Exception/Nameprep.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-require_once 'Net/IDNA2/Exception.php';
-
-class Net_IDNA2_Exception_Nameprep extends Net_IDNA2_Exception
-{
-}
diff --git a/program/lib/Net/LDAP3.php b/program/lib/Net/LDAP3.php
deleted file mode 100644
index 3202f5a..0000000
--- a/program/lib/Net/LDAP3.php
+++ /dev/null
@@ -1,2618 +0,0 @@
-<?php
-/*
- +-----------------------------------------------------------------------+
- | Net/LDAP3.php                                                         |
- |                                                                       |
- | Based on code created by the Roundcube Webmail team.                  |
- |                                                                       |
- | Copyright (C) 2006-2014, The Roundcube Dev Team                       |
- | Copyright (C) 2012-2014, Kolab Systems AG                             |
- |                                                                       |
- | Licensed under the GNU General Public License version 3 or            |
- | any later version with exceptions for plugins.                        |
- | See the README file for a full license statement.                     |
- |                                                                       |
- | PURPOSE:                                                              |
- |   Provide advanced functionality for accessing LDAP directories       |
- |                                                                       |
- +-----------------------------------------------------------------------+
- | Authors: Thomas Bruederli <roundcube@gmail.com>                       |
- |          Aleksander Machniak <machniak@kolabsys.com>                  |
- |          Jeroen van Meeuwen <vanmeeuwen@kolabsys.com>                 |
- +-----------------------------------------------------------------------+
-*/
-
-require_once __DIR__ . '/LDAP3/Result.php';
-
-/**
- * Model class to access a LDAP directories
- *
- * @package Net_LDAP3
- */
-class Net_LDAP3
-{
-    public $conn;
-    public $vlv_active = false;
-
-    private $attribute_level_rights_map = array(
-        "r" => "read",
-        "s" => "search",
-        "w" => "write",
-        "o" => "delete",
-        "c" => "compare",
-        "W" => "write",
-        "O" => "delete"
-    );
-
-    private $entry_level_rights_map = array(
-        "a" => "add",
-        "d" => "delete",
-        "n" => "modrdn",
-        "v" => "read"
-    );
-
-    /*
-     * Manipulate configuration through the config_set and config_get methods.
-     * Available options:
-     *       'debug'           => false,
-     *       'hosts'           => array(),
-     *       'port'            => 389,
-     *       'use_tls'         => false,
-     *       'ldap_version'    => 3,        // using LDAPv3
-     *       'auth_method'     => '',       // SASL authentication method (for proxy auth), e.g. DIGEST-MD5
-     *       'numsub_filter'   => '(objectClass=organizationalUnit)', // with VLV, we also use numSubOrdinates to query the total number of records. Set this filter to get all numSubOrdinates attributes for counting
-     *       'referrals'       => false,    // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups
-     *       'network_timeout' => 10,       // The timeout (in seconds) for connect + bind arrempts. This is only supported in PHP >= 5.3.0 with OpenLDAP 2.x
-     *       'sizelimit'       => 0,        // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
-     *       'timelimit'       => 0,        // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.
-     *       'vlv'             => false,    // force VLV off
-     *       'config_root_dn'  => 'cn=config',  // Root DN to read config (e.g. vlv indexes) from
-     *       'service_bind_dn' => 'uid=kolab-service,ou=Special Users,dc=example,dc=org',
-     *       'service_bind_pw' => 'Welcome2KolabSystems',
-     *       'root_dn'         => 'dc=example,dc=org',
-     */
-    protected $config = array(
-        'sizelimit' => 0,
-        'timelimit' => 0,
-    );
-
-    protected $debug_level = false;
-    protected $list_page   = 1;
-    protected $page_size   = 10;
-    protected $cache;
-
-    // Use public method config_set('log_hook', $callback) to have $callback be
-    // call_user_func'ed instead of the local log functions.
-    protected $_log_hook;
-
-    // Use public method config_set('config_get_hook', $callback) to have
-    // $callback be call_user_func'ed instead of the local config_get function.
-    protected $_config_get_hook;
-
-    // Use public method config_set('config_set_hook', $callback) to have
-    // $callback be call_user_func'ed instead of the local config_set function.
-    protected $_config_set_hook;
-
-    // Not Yet Implemented
-    // Intended to allow hooking in for the purpose of caching.
-    protected $_result_hook;
-
-    // Runtime. These are not the variables you're looking for.
-    protected $_current_bind_dn;
-    protected $_current_bind_pw;
-    protected $_current_host;
-    protected $_supported_control = array();
-    protected $_vlv_indexes_and_searches;
-
-    /**
-     * Constructor
-     *
-     * @param array $config Configuration parameters that have not already
-     *                      been initialized. For configuration parameters
-     *                      that have in fact been set, use the config_set()
-     *                      method after initialization.
-     */
-    public function __construct($config = array())
-    {
-        if (!empty($config) && is_array($config)) {
-            foreach ($config as $key => $value) {
-                if (empty($this->config[$key])) {
-                    $setter = 'config_set_' . $key;
-                    if (method_exists($this, $setter)) {
-                        $this->$setter($value);
-                    }
-                    else if (isset($this->$key)) {
-                        $this->$key = $value;
-                    }
-                    else {
-                        $this->config[$key] = $value;
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     *  Add multiple entries to the directory information tree in one go.
-     */
-    public function add_entries($entries, $attributes = array())
-    {
-        // If $entries is an associative array, it's keys are DNs and its
-        // values are the attributes for that DN.
-        //
-        // If $entries is a non-associative array, the attributes are expected
-        // to be positional in $attributes.
-
-        $result_set = array();
-
-        if (array_keys($entries) == range(0, count($entries) - 1)) {
-            // $entries is sequential
-            if (count($entries) !== count($attributes)) {
-                $this->_error("Wrong entry/attribute count in " . __FUNCTION__);
-                return false;
-            }
-
-            for ($i = 0; $i < count($entries); $i++) {
-                $result_set[$i] = $this->add_entry($entries[$i], $attributes[$i]);
-            }
-        }
-        else {
-            // $entries is associative
-            foreach ($entries as $entry_dn => $entry_attributes) {
-                if (array_keys($attributes) !== range(0, count($attributes)-1)) {
-                    // $attributes is associative as well, let's merge these
-                    //
-                    // $entry_attributes takes precedence, so is in the second
-                    // position in array_merge()
-                    $entry_attributes = array_merge($attributes, $entry_attributes);
-                }
-
-                $result_set[$entry_dn] = $this->add_entry($entry_dn, $entry_attributes);
-            }
-        }
-
-        return $result_set;
-    }
-
-    /**
-     * Add an entry to the directory information tree.
-     */
-    public function add_entry($entry_dn, $attributes)
-    {
-        // TODO:
-        // - Get entry rdn attribute value from entry_dn and see if it exists in
-        //   attributes -> issue warning if so (but not block the operation).
-        $this->_debug("Entry DN", $entry_dn);
-        $this->_debug("Attributes", $attributes);
-
-        foreach ($attributes as $attr_name => $attr_value) {
-            if (empty($attr_value)) {
-                unset($attributes[$attr_name]);
-            }
-        }
-
-        $this->_debug("C: Add $entry_dn: " . json_encode($attributes));
-
-        if (($add_result = ldap_add($this->conn, $entry_dn, $attributes)) == false) {
-            $this->_debug("S: " . ldap_error($this->conn));
-            $this->_debug("S: Adding entry $entry_dn failed. " . ldap_error($this->conn));
-
-            return false;
-        }
-
-        $this->_debug("LDAP: S: OK");
-
-        return true;
-    }
-
-    /**
-     * Add replication agreements and initialize the consumer(s) for
-     * $domain_root_dn.
-     *
-     * Searches the configured replicas for any of the current domain/config
-     * databases, and uses this information to configure the additional
-     * replication for the (new) domain database (at $domain_root_dn).
-     *
-     * Very specific to Netscape-based directory servers, and currently also
-     * very specific to multi-master replication.
-     */
-    public function add_replication_agreements($domain_root_dn)
-    {
-        $replica_hosts = $this->list_replicas();
-
-        if (empty($replica_hosts)) {
-            return;
-        }
-
-        $result = $this->search($this->config_get('config_root_dn'), "(&(objectclass=nsDS5Replica)(nsDS5ReplicaType=3))", "sub");
-
-        if (!$result) {
-            $this->_debug("No replication configuration found.");
-            return;
-        }
-
-        // Preserve the number of replicated databases we have, because the replication ID
-        // can be calculated from the number of databases replicated, and the number of
-        // servers.
-        $num_replica_dbs = $result->count();
-        $replicas        = $result->entries(true);
-        $max_replica_agreements = 0;
-
-        foreach ($replicas as $replica_dn => $replica_attrs) {
-            $result = $this->search($replica_dn, "(objectclass=nsDS5ReplicationAgreement)", "sub");
-            if ($result) {
-                if ($max_replica_agreements < $result->count()) {
-                    $max_replica_agreements    = $result->count();
-                    $max_replica_agreements_dn = $replica_dn;
-                }
-            }
-        }
-
-        $max_repl_id = $num_replica_dbs * count($replica_hosts);
-
-        $this->_debug("The current maximum replication ID is $max_repl_id");
-        $this->_debug("The current maximum number of replication agreements for any database is $max_replica_agreements (for $max_replica_agreements_dn)");
-        $this->_debug("With " . count($replica_hosts) . " replicas, the next is " . ($max_repl_id + 1) . " and the last one is " . ($max_repl_id + count($replica_hosts)));
-
-        // Then add the replication agreements
-        foreach ($replica_hosts as $num => $replica_host) {
-            $ldap = new Net_LDAP3($this->config);
-            $ldap->config_set('hosts', array($replica_host));
-            $ldap->connect();
-            $ldap->bind($this->_current_bind_dn, $this->_current_bind_pw);
-
-            $replica_attrs = array(
-                'cn' => 'replica',
-                'objectclass' => array(
-                    'top',
-                    'nsds5replica',
-                    'extensibleobject',
-                ),
-                'nsDS5ReplicaBindDN'     => $ldap->get_entry_attribute($replica_dn, "nsDS5ReplicaBindDN"),
-                'nsDS5ReplicaId'         => ($max_repl_id + $num + 1),
-                'nsDS5ReplicaRoot'       => $domain_root_dn,
-                'nsDS5ReplicaType'       => $ldap->get_entry_attribute($replica_dn, "nsDS5ReplicaType"),
-                'nsds5ReplicaPurgeDelay' => $ldap->get_entry_attribute($replica_dn, "nsds5ReplicaPurgeDelay"),
-                'nsDS5Flags'             => $ldap->get_entry_attribute($replica_dn, "nsDS5Flags")
-            );
-
-            $new_replica_dn = 'cn=replica,cn="' . $domain_root_dn . '",cn=mapping tree,cn=config';
-
-            $this->_debug("Adding $new_replica_dn to $replica_host with attributes: " . var_export($replica_attrs, true));
-
-            $result = $ldap->add_entry($new_replica_dn, $replica_attrs);
-
-            if (!$result) {
-                $this->_error("Could not add replication configuration to database for $domain_root_dn on $replica_host");
-                continue;
-            }
-
-            $result = $ldap->search($replica_dn, "(objectclass=nsDS5ReplicationAgreement)", "sub");
-
-            if (!$result) {
-                $this->_error("Host $replica_host does not have any replication agreements");
-                continue;
-            }
-
-            $entries = $result->entries(true);
-            $replica_agreement_tpl_dn = key($entries);
-
-            $this->_debug("Using " . var_export($replica_agreement_tpl_dn, true) . " as the template for new replication agreements");
-
-            foreach ($replica_hosts as $replicate_to_host) {
-                // Skip the current server
-                if ($replicate_to_host == $replica_host) {
-                    continue;
-                }
-
-                $this->_debug("Adding a replication agreement for $domain_root_dn to $replicate_to_host on " . $replica_host);
-
-                $attrs = array(
-                    'objectclass',
-                    'nsDS5ReplicaBindDN',
-                    'nsDS5ReplicaCredentials',
-                    'nsDS5ReplicaTransportInfo',
-                    'nsDS5ReplicaBindMethod',
-                    'nsDS5ReplicaHost',
-                    'nsDS5ReplicaPort'
-                );
-
-                $replica_agreement_attrs = $ldap->get_entry_attributes($replica_agreement_tpl_dn, $attrs);
-                $replica_agreement_attrs['cn'] = array_shift(explode('.', $replicate_to_host)) . str_replace(array('dc=',','), array('_',''), $domain_root_dn);
-                $replica_agreement_attrs['nsDS5ReplicaRoot'] = $domain_root_dn;
-                $replica_agreement_dn = "cn=" . $replica_agreement_attrs['cn'] . "," . $new_replica_dn;
-
-                $this->_debug("Adding $replica_agreement_dn to $replica_host with attributes: " . var_export($replica_agreement_attrs, true));
-
-                $result = $ldap->add_entry($replica_agreement_dn, $replica_agreement_attrs);
-
-                if (!$result) {
-                    $this->_error("Failed adding $replica_agreement_dn");
-                }
-            }
-        }
-
-        $server_id = implode('', array_diff($replica_hosts, $this->_server_id_not));
-
-        $this->_debug("About to trigger consumer initialization for replicas on current 'parent': $server_id");
-
-        $result = $this->search($this->config_get('config_root_dn'), "(&(objectclass=nsDS5ReplicationAgreement)(nsds5replicaroot=$domain_root_dn))", "sub");
-
-        if ($result) {
-            foreach ($result->entries(true) as $agreement_dn => $agreement_attrs) {
-                $this->modify_entry_attributes(
-                    $agreement_dn,
-                    array(
-                        'replace' => array(
-                            'nsds5BeginReplicaRefresh' => 'start',
-                        ),
-                    )
-                );
-            }
-        }
-    }
-
-    public function attribute_details($attributes = array())
-    {
-        $schema = $this->init_schema();
-
-        if (!$schema) {
-            return array();
-        }
-
-        $attribs = $schema->getAll('attributes');
-
-        $attributes_details = array();
-
-        foreach ($attributes as $attribute) {
-            if (array_key_exists($attribute, $attribs)) {
-                $attrib_details = $attribs[$attribute];
-
-                if (!empty($attrib_details['sup'])) {
-                    foreach ($attrib_details['sup'] as $super_attrib) {
-                        $_attrib_details = $attribs[$super_attrib];
-                        if (is_array($_attrib_details)) {
-                            $attrib_details = array_merge($_attrib_details, $attrib_details);
-                        }
-                    }
-                }
-            }
-            else if (array_key_exists(strtolower($attribute), $attribs)) {
-                $attrib_details = $attribs[strtolower($attribute)];
-
-                if (!empty($attrib_details['sup'])) {
-                    foreach ($attrib_details['sup'] as $super_attrib) {
-                        $_attrib_details = $attribs[$super_attrib];
-                        if (is_array($_attrib_details)) {
-                            $attrib_details = array_merge($_attrib_details, $attrib_details);
-                        }
-                    }
-                }
-            }
-            else {
-                $this->_warning("LDAP: No schema details exist for attribute $attribute (which is strange)");
-            }
-
-            // The relevant parts only, please
-            $attributes_details[$attribute] = array(
-                'type'        => !empty($attrib_details['single-value']) ? 'text' : 'list',
-                'description' => $attrib_details['desc'],
-                'syntax'      => $attrib_details['syntax'],
-                'max-length'  => $attrib_details['max-length'] ?: false,
-            );
-        }
-
-        return $attributes_details;
-    }
-
-    public function attributes_allowed($objectclasses = array())
-    {
-        $this->_debug("Listing allowed_attributes for objectclasses", $objectclasses);
-
-        if (!is_array($objectclasses) || empty($objectclasses)) {
-            return false;
-        }
-
-        $schema = $this->init_schema();
-        if (!$schema) {
-            return false;
-        }
-
-        $may          = array();
-        $must         = array();
-        $superclasses = array();
-
-        foreach ($objectclasses as $objectclass) {
-            $superclass = $schema->superclass($objectclass);
-            if (!empty($superclass)) {
-                $superclasses = array_merge($superclass, $superclasses);
-            }
-
-            $_may  = $schema->may($objectclass);
-            $_must = $schema->must($objectclass);
-
-            if (is_array($_may)) {
-                $may = array_merge($may, $_may);
-            }
-            if (is_array($_must)) {
-                $must = array_merge($must, $_must);
-            }
-        }
-
-        $may          = array_unique($may);
-        $must         = array_unique($must);
-        $superclasses = array_unique($superclasses);
-
-        return array('may' => $may, 'must' => $must, 'super' => $superclasses);
-    }
-
-    public function classes_allowed()
-    {
-        $schema = $this->init_schema();
-        if (!$schema) {
-            return false;
-        }
-
-        $list    = $schema->getAll('objectclasses');
-        $classes = array();
-
-        foreach ($list as $class) {
-            $classes[] = $class['name'];
-        }
-
-        return $classes;
-    }
-
-    /**
-     * Bind connection with DN and password
-     *
-     * @param string $dn   Bind DN
-     * @param string $pass Bind password
-     *
-     * @return boolean True on success, False on error
-     */
-    public function bind($bind_dn, $bind_pw)
-    {
-        if (!$this->conn) {
-            return false;
-        }
-
-        if ($bind_dn == $this->_current_bind_dn) {
-            return true;
-        }
-
-        $this->_debug("C: Bind [dn: $bind_dn]");
-
-        if (@ldap_bind($this->conn, $bind_dn, $bind_pw)) {
-            $this->_debug("S: OK");
-            $this->_current_bind_dn = $bind_dn;
-            $this->_current_bind_pw = $bind_pw;
-
-            return true;
-        }
-
-        $this->_debug("S: ".ldap_error($this->conn));
-        $this->_error("Bind failed for dn=$bind_dn: ".ldap_error($this->conn));
-
-        return false;
-    }
-
-    /**
-     * Close connection to LDAP server
-     */
-    public function close()
-    {
-        if ($this->conn) {
-            $this->_debug("C: Close");
-            ldap_unbind($this->conn);
-
-            $this->_current_bind_dn = null;
-            $this->_current_bind_pw = null;
-            $this->conn             = null;
-        }
-    }
-
-    /**
-     * Get the value of a configuration item.
-     *
-     * @param string $key     Configuration key
-     * @param mixed  $default Default value to return
-     */
-    public function config_get($key, $default = null)
-    {
-        if (!empty($this->_config_get_hook)) {
-            return call_user_func_array($this->_config_get_hook, array($key, $value));
-        }
-        else if (method_exists($this, "config_get_{$key}")) {
-            return call_user_func(array($this, "config_get_$key"), $value);
-        }
-        else if (!isset($this->config[$key])) {
-            return $default;
-        }
-        else {
-            return $this->config[$key];
-        }
-    }
-
-    /**
-     * Set a configuration item to value.
-     *
-     * @param string $key   Configuration key
-     * @param mixed  $value Configuration value
-     */
-    public function config_set($key, $value = null)
-    {
-        if (is_array($key)) {
-            foreach ($key as $k => $v) {
-                $this->config_set($k, $v);
-            }
-            return;
-        }
-
-        if (!empty($this->_config_set_hook)) {
-            call_user_func($this->_config_set_hook, array($key, $value));
-        }
-        else if (method_exists($this, "config_set_{$key}")) {
-            call_user_func_array(array($this, "config_set_$key"), array($value));
-        }
-        else if (isset($this->$key)) {
-            $this->$key = $value;
-        }
-        else {
-            // 'host' option is deprecated
-            if ($key == 'host') {
-                $this->config['hosts'] = (array) $value;
-            }
-            else {
-                $this->config[$key] = $value;
-            }
-        }
-    }
-
-    /**
-     * Establish a connection to the LDAP server
-     */
-    public function connect($host = null)
-    {
-        if (!function_exists('ldap_connect')) {
-            $this->_error("No ldap support in this PHP installation");
-            return false;
-        }
-
-        if (is_resource($this->conn)) {
-            $this->_debug("Connection already exists");
-            return true;
-        }
-
-        $hosts = !empty($host) ? $host : $this->config_get('hosts', array());
-        $port  = $this->config_get('port', 389);
-
-        foreach ((array) $hosts as $host) {
-            $this->_debug("C: Connect [$host:$port]");
-
-            if ($lc = @ldap_connect($host, $port)) {
-                if ($this->config_get('use_tls', false) === true) {
-                    if (!ldap_start_tls($lc)) {
-                        $this->_debug("S: Could not start TLS. " . ldap_error($lc));
-                        continue;
-                    }
-                }
-
-                $this->_debug("S: OK");
-
-                $ldap_version = $this->config_get('ldap_version', 3);
-                $timeout      = $this->config_get('network_timeout');
-                $referrals    = $this->config_get('referrals');
-
-                ldap_set_option($lc, LDAP_OPT_PROTOCOL_VERSION, $ldap_version);
-
-                if ($timeout) {
-                    ldap_set_option($lc, LDAP_OPT_NETWORK_TIMEOUT, $timeout);
-                }
-
-                if ($referrals !== null) {
-                    ldap_set_option($lc, LDAP_OPT_REFERRALS, (bool) $referrals);
-                }
-
-                $this->_current_host = $host;
-                $this->conn          = $lc;
-
-                break;
-            }
-
-            $this->_debug("S: NOT OK");
-        }
-
-        if (!is_resource($this->conn)) {
-            $this->_error("Could not connect to LDAP");
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     *   Shortcut to ldap_delete()
-     */
-    public function delete_entry($entry_dn)
-    {
-        $this->_debug("LDAP: C: Delete $entry_dn");
-
-        if (ldap_delete($this->conn, $entry_dn) === false) {
-            $this->_debug("LDAP: S: " . ldap_error($this->conn));
-            return false;
-        }
-
-        $this->_debug("LDAP: S: OK");
-
-        return true;
-    }
-
-    /**
-     * Deletes specified entry and all entries in the tree
-     */
-    public function delete_entry_recursive($entry_dn)
-    {
-        // searching for sub entries, but not scope sub, just one level
-        $result = $this->search($entry_dn, '(objectclass=*)', 'one');
-
-        if ($result) {
-            $entries = $result->entries(true);
-
-            foreach (array_keys($entries) as $sub_dn) {
-                if (!$this->delete_entry_recursive($sub_dn)) {
-                    return false;
-                }
-            }
-        }
-
-        if (!$this->delete_entry($entry_dn)) {
-            return false;
-        }
-
-        return true;
-    }
-
-    public function effective_rights($subject)
-    {
-        $effective_rights_control_oid = "1.3.6.1.4.1.42.2.27.9.5.2";
-
-        $supported_controls = $this->supported_controls();
-
-        if (!in_array($effective_rights_control_oid, $supported_controls)) {
-            $this->_debug("LDAP: No getEffectiveRights control in supportedControls");
-            return false;
-        }
-
-        $attributes = array(
-            'attributeLevelRights' => array(),
-            'entryLevelRights' => array(),
-        );
-
-        $output   = array();
-        $entry_dn = $this->entry_dn($subject);
-
-        if (!$entry_dn) {
-            $entry_dn = $this->config_get($subject . "_base_dn");
-        }
-        if (!$entry_dn) {
-            $entry_dn = $this->config_get("base_dn");
-        }
-        if (!$entry_dn) {
-            $entry_dn = $this->config_get("root_dn");
-        }
-
-        $this->_debug("effective_rights for subject $subject resolves to entry dn $entry_dn");
-
-        $moz_ldapsearch = "/usr/lib64/mozldap/ldapsearch";
-        if (!is_file($moz_ldapsearch)) {
-            $moz_ldapsearch = "/usr/lib/mozldap/ldapsearch";
-        }
-        if (!is_file($moz_ldapsearch)) {
-            $moz_ldapsearch = null;
-        }
-
-        if (empty($moz_ldapsearch)) {
-            $this->_error("Mozilla LDAP C SDK binary ldapsearch not found, cannot get effective rights on subject $subject");
-            return null;
-        }
-
-        $command = array(
-            $moz_ldapsearch,
-            '-x',
-            '-h',
-            $this->_ldap_server,
-            '-p',
-            $this->_ldap_port,
-            '-b',
-            escapeshellarg($entry_dn),
-            '-D',
-            escapeshellarg($this->_current_bind_dn),
-            '-w',
-            escapeshellarg($this->_current_bind_pw),
-            '-J',
-            escapeshellarg(implode(':', array(
-                $effective_rights_control_oid,          // OID
-                'true',                                 // Criticality
-                'dn:' . $this->_current_bind_dn // User DN
-            ))),
-            '-s',
-            'base',
-            '"(objectclass=*)"',
-            '"*"',
-        );
-
-        $command = implode(' ', $command);
-
-        $this->_debug("LDAP: Executing command: $command");
-
-        exec($command, $output, $return_code);
-
-        $this->_debug("LDAP: Command output:" . var_export($output, true));
-        $this->_debug("Return code: " . $return_code);
-
-        if ($return_code) {
-            $this->_error("Command $moz_ldapsearch returned error code: $return_code");
-            return null;
-        }
-
-        $lines = array();
-        foreach ($output as $line_num => $line) {
-            if (substr($line, 0, 1) == " ") {
-                $lines[count($lines)-1] .= trim($line);
-            }
-            else {
-                $lines[] = trim($line);
-            }
-        }
-
-        foreach ($lines as $line) {
-            $line_components = explode(':', $line);
-            $attribute_name  = array_shift($line_components);
-            $attribute_value = trim(implode(':', $line_components));
-
-            switch ($attribute_name) {
-                case "attributeLevelRights":
-                    $attributes[$attribute_name] = $this->parse_attribute_level_rights($attribute_value);
-                    break;
-                case "dn":
-                    $attributes[$attribute_name] = $attribute_value;
-                    break;
-                case "entryLevelRights":
-                    $attributes[$attribute_name] = $this->parse_entry_level_rights($attribute_value);
-                    break;
-
-                default:
-                    break;
-            }
-        }
-
-        return $attributes;
-    }
-
-    /**
-     * Resolve entry data to entry DN
-     *
-     * @param string $subject    Entry string (e.g. entry DN or unique attribute value)
-     * @param array  $attributes Additional attributes
-     * @param string $base_dn    Optional base DN
-     *
-     * @return string Entry DN string
-     */
-    public function entry_dn($subject, $attributes = array(), $base_dn = null)
-    {
-        $this->_debug("entry_dn on subject $subject");
-        $is_dn = ldap_explode_dn($subject, 1);
-
-        if (is_array($is_dn) && array_key_exists("count", $is_dn) && $is_dn["count"] > 0) {
-            $this->_debug("$subject is a dn");
-            return $subject;
-        }
-
-        $this->_debug("$subject is not a dn");
-
-        if (strlen($subject) < 32 || preg_match('/[^a-fA-F0-9-]/', $subject)) {
-            $this->_debug("$subject is not a unique identifier");
-            return;
-        }
-
-        $unique_attr = $this->config_get('unique_attribute', 'nsuniqueid');
-
-        $this->_debug("Using unique_attribute " . var_export($unique_attr, true) . " at " . __FILE__ . ":" . __LINE__);
-
-        $attributes  = array_merge(array($unique_attr => $subject), (array)$attributes);
-        $subject     = $this->entry_find_by_attribute($attributes, $base_dn);
-
-        if (!empty($subject)) {
-            return key($subject);
-        }
-    }
-
-    public function entry_find_by_attribute($attributes, $base_dn = null)
-    {
-        $this->_debug("Net_LDAP3::entry_find_by_attribute(\$attributes, \$base_dn) called with base_dn", $base_dn, "and attributes", $attributes);
-
-        if (empty($attributes) || !is_array($attributes)) {
-            return false;
-        }
-
-        if (empty($attributes[key($attributes)])) {
-            return false;
-        }
-
-        $filter = count($attributes) ? "(&" : "";
-
-        foreach ($attributes as $key => $value) {
-            $filter .= "(" . $key . "=" . $value . ")";
-        }
-
-        $filter .= count($attributes) ? ")" : "";
-
-        if (empty($base_dn)) {
-            $base_dn = $this->config_get('root_dn');
-            $this->_debug("Using base_dn from domain " . $this->domain . ": " . $base_dn);
-        }
-
-        $result = $this->search($base_dn, $filter, 'sub', array_keys($attributes));
-
-        if ($result && $result->count() > 0) {
-            $this->_debug("Results found: " . implode(', ', array_keys($result->entries(true))));
-            return $result->entries(true);
-        }
-        else {
-            $this->_debug("No result");
-            return false;
-        }
-    }
-
-    public function find_user_groups($member_dn)
-    {
-        $groups  = array();
-        $root_dn = $this->config_get('root_dn');
-
-        // TODO: Do not query for both, it's either one or the other
-        $entries = $this->search($root_dn, "(|" .
-            "(&(objectclass=groupofnames)(member=$member_dn))" .
-            "(&(objectclass=groupofuniquenames)(uniquemember=$member_dn))" .
-            ")"
-        );
-
-        if ($entries) {
-            $groups = array_keys($entries->entries(true));
-        }
-
-        return $groups;
-    }
-
-    public function get_entry_attribute($subject_dn, $attribute)
-    {
-        $entry = $this->get_entry_attributes($subject_dn, (array)$attribute);
-
-        return $entry[strtolower($attribute)];
-    }
-
-    public function get_entry_attributes($subject_dn, $attributes)
-    {
-        // @TODO: use get_entry?
-        $result = $this->search($subject_dn, '(objectclass=*)', 'base', $attributes);
-
-        if (!$result) {
-            return array();
-        }
-
-        $entries  = $result->entries(true);
-        $entry_dn = key($entries);
-        $entry    = $entries[$entry_dn];
-
-        return $entry;
-    }
-
-    /**
-     * Get a specific LDAP entry, identified by its DN
-     *
-     * @param string $dn         Record identifier
-     * @param array  $attributes Attributes to return
-     *
-     * @return array Hash array
-     */
-    public function get_entry($dn, $attributes = array())
-    {
-        $rec = null;
-
-        if ($this->conn && $dn) {
-            $this->_debug("C: Read [dn: $dn] [(objectclass=*)]");
-
-            if ($ldap_result = @ldap_read($this->conn, $dn, '(objectclass=*)', $attributes)) {
-                $this->_debug("S: OK");
-
-                if ($entry = ldap_first_entry($this->conn, $ldap_result)) {
-                    $rec = ldap_get_attributes($this->conn, $entry);
-                }
-            }
-            else {
-                $this->_debug("S: ".ldap_error($this->conn));
-            }
-
-            if (!empty($rec)) {
-                $rec['dn'] = $dn; // Add in the dn for the entry.
-            }
-        }
-
-        return $rec;
-    }
-
-    public function list_replicas()
-    {
-        $this->_debug("Finding replicas for this server.");
-
-        // Search any host that is a replica for the current host
-        $replica_hosts = $this->config_get('replica_hosts', array());
-        $root_dn       = $this->config_get('config_root_dn');
-
-        if (!empty($replica_hosts)) {
-            return $replica_hosts;
-        }
-
-        $ldap = new Net_LDAP3($this->config);
-        $ldap->connect();
-        $ldap->bind($this->_current_bind_dn, $this->_current_bind_pw);
-
-        $result = $ldap->search($root_dn, '(objectclass=nsds5replicationagreement)', 'sub', array('nsds5replicahost'));
-
-        if (!$result) {
-            $this->_debug("No replicas configured");
-            return $replica_hosts;
-        }
-
-        $this->_debug("Replication agreements found: " . var_export($result->entries(true), true));
-
-        foreach ($result->entries(true) as $dn => $attrs) {
-            if (!in_array($attrs['nsds5replicahost'], $replica_hosts)) {
-                $replica_hosts[] = $attrs['nsds5replicahost'];
-            }
-        }
-
-        // $replica_hosts now holds the IDs of servers we are currently NOT
-        // connected to. We might need this later in order to set
-        $this->_server_id_not = $replica_hosts;
-
-        $this->_debug("So far, we have the following replicas: " . var_export($replica_hosts, true));
-
-        $ldap->close();
-
-        foreach ($replica_hosts as $replica_host) {
-            $ldap->config_set('hosts', array($replica_host));
-            $ldap->connect();
-            $ldap->bind($this->_current_bind_dn, $this->_current_bind_pw);
-
-            $result = $ldap->search($root_dn, '(objectclass=nsds5replicationagreement)', 'sub', array('nsds5replicahost'));
-            if (!$result) {
-                $this->_debug("No replicas configured");
-            }
-
-            foreach ($result->entries(true) as $dn => $attrs) {
-                if (!in_array($attrs['nsds5replicahost'], $replica_hosts)) {
-                    $replica_hosts[] = $attrs['nsds5replicahost'];
-                }
-            }
-
-            $ldap->close();
-        }
-
-        $this->config_set('replica_hosts', $replica_hosts);
-
-        return $replica_hosts;
-    }
-
-    public function login($username, $password, $domain = null)
-    {
-        $this->_debug("Net_LDAP3::login(\$username = '" . $username . "', \$password = '****', \$domain = '" . $domain . "')");
-
-        $_bind_dn = $this->config_get('service_bind_dn');
-        $_bind_pw = $this->config_get('service_bind_pw');
-
-        if (empty($_bind_dn)) {
-            $this->_debug("No valid service bind dn found.");
-            return null;
-        }
-
-        if (empty($_bind_pw)) {
-            $this->_debug("No valid service bind password found.");
-            return null;
-        }
-
-        $bound = $this->bind($_bind_dn, $_bind_pw);
-
-        if (!$bound) {
-            $this->_debug("Could not bind with service bind credentials.");
-            return null;
-        }
-
-        $entry_dn = $this->entry_dn($username);
-
-        if (!empty($entry_dn)) {
-            $bound = $this->bind($entry_dn, $password);
-
-            if (!$bound) {
-                $this->_error("Could not bind with " . $entry_dn);
-                return null;
-            }
-
-            return $entry_dn;
-        }
-
-        $base_dn = $this->config_get('root_dn');
-
-        if (empty($base_dn)) {
-            $this->_debug("Could not get a valid base dn to search.");
-            return null;
-        }
-
-        $localpart = $username;
-
-        if (empty($domain) ) {
-            if (count(explode('@', $username)) > 1) {
-                $_parts    = explode('@', $username);
-                $localpart = $_parts[0];
-                $domain    = $_parts[1];
-            }
-            else {
-                $localpart = $username;
-                $domain    = '';
-            }
-        }
-
-        $realm  = $domain;
-        $filter = $this->config_get("login_filter", null);
-
-        if (empty($filter)) {
-            $filter = $this->config_get("filter", null);
-        }
-        if (empty($filter)) {
-            $filter = "(&(|(mail=%s)(mail=%U@%d)(alias=%s)(alias=%U@%d)(uid=%s))(objectclass=inetorgperson))";
-        }
-
-        $this->_debug("Net::LDAP3::login() original filter: " . $filter);
-
-        $replace_patterns = array(
-            '/%s/' => $username,
-            '/%d/' => $domain,
-            '/%U/' => $localpart,
-            '/%r/' => $realm
-        );
-
-        $filter = preg_replace(array_keys($replace_patterns), array_values($replace_patterns), $filter);
-
-        $this->_debug("Net::LDAP3::login() actual filter: " . $filter);
-
-        $result = $this->search($base_dn, $filter, 'sub');
-
-        if (!$result) {
-            $this->_debug("Could not search $base_dn with $filter");
-            return null;
-        }
-
-        if ($result->count() > 1) {
-            $this->_debug("Multiple entries found.");
-            return null;
-        }
-        else if ($result->count() < 1) {
-            $this->_debug("No entries found.");
-            return null;
-        }
-
-        $entries  = $result->entries();
-        $entry    = self::normalize_result($entries);
-        $entry_dn = key($entry);
-
-        $bound = $this->bind($entry_dn, $password);
-
-        if (!$bound) {
-            $this->_debug("Could not bind with " . $entry_dn);
-            return null;
-        }
-
-        return $entry_dn;
-    }
-
-    public function list_group_members($dn, $entry = null, $recurse = true)
-    {
-        $this->_debug("Called list_group_members(" . $dn . ")");
-
-        if (is_array($entry) && in_array('objectclass', $entry)) {
-            if (!in_array(array('groupofnames', 'groupofuniquenames', 'groupofurls'), $entry['objectclass'])) {
-                $this->_debug("Called list_group_members on a non-group!");
-                return array();
-            }
-        }
-        else {
-            $entry = $this->get_entry($dn, array('member', 'uniquemember', 'memberurl', 'objectclass'));
-
-            if (!$entry) {
-                return array();
-            }
-        }
-
-        $group_members = array();
-
-        foreach ((array)$entry['objectclass'] as $objectclass) {
-            switch (strtolower($objectclass)) {
-                case "groupofnames":
-                case "kolabgroupofnames":
-                    $group_members = array_merge($group_members, $this->list_group_member($dn, $entry['member'], $recurse));
-                    break;
-                case "groupofuniquenames":
-                case "kolabgroupofuniquenames":
-                    $group_members = array_merge($group_members, $this->list_group_uniquemember($dn, $entry['uniquemember'], $recurse));
-                    break;
-                case "groupofurls":
-                    $group_members = array_merge($group_members, $this->list_group_memberurl($dn, $entry['memberurl'], $recurse));
-                    break;
-            }
-        }
-
-        return array_values(array_filter($group_members));
-    }
-
-    public function modify_entry($subject_dn, $old_attrs, $new_attrs)
-    {
-        $this->_debug("OLD ATTRIBUTES", $old_attrs);
-        $this->_debug("NEW ATTRIBUTES", $new_attrs);
-
-        // TODO: Get $rdn_attr - we have type_id in $new_attrs
-        $dn_components  = ldap_explode_dn($subject_dn, 0);
-        $rdn_components = explode('=', $dn_components[0]);
-        $rdn_attr       = $rdn_components[0];
-
-        $this->_debug("Net_LDAP3::modify_entry() using rdn attribute: " . $rdn_attr);
-
-        $mod_array = array(
-            'add'       => array(), // For use with ldap_mod_add()
-            'del'       => array(), // For use with ldap_mod_del()
-            'replace'   => array(), // For use with ldap_mod_replace()
-            'rename'    => array(), // For use with ldap_rename()
-        );
-
-        // This is me cheating. Remove this special attribute.
-        if (array_key_exists('ou', $old_attrs) || array_key_exists('ou', $new_attrs)) {
-            $old_ou = $old_attrs['ou'];
-            $new_ou = $new_attrs['ou'];
-            unset($old_attrs['ou']);
-            unset($new_attrs['ou']);
-        }
-        else {
-            $old_ou = null;
-            $new_ou = null;
-        }
-
-        // Compare each attribute value of the old attrs with the corresponding value
-        // in the new attrs, if any.
-        foreach ($old_attrs as $attr => $old_attr_value) {
-            if (is_array($old_attr_value)) {
-                if (count($old_attr_value) == 1) {
-                    $old_attrs[$attr] = $old_attr_value[0];
-                    $old_attr_value = $old_attrs[$attr];
-                }
-            }
-
-            if (array_key_exists($attr, $new_attrs)) {
-                if (is_array($new_attrs[$attr])) {
-                    if (count($new_attrs[$attr]) == 1) {
-                        $new_attrs[$attr] = $new_attrs[$attr][0];
-                    }
-                }
-
-                if (is_array($old_attrs[$attr]) && is_array($new_attrs[$attr])) {
-                    $_sort1 = $new_attrs[$attr];
-                    sort($_sort1);
-                    $_sort2 = $old_attr_value;
-                    sort($_sort2);
-                }
-                else {
-                    $_sort1 = true;
-                    $_sort2 = false;
-                }
-
-                if ($new_attrs[$attr] !== $old_attr_value && $_sort1 !== $_sort2) {
-                    $this->_debug("Attribute $attr changed from " . var_export($old_attr_value, true) . " to " . var_export($new_attrs[$attr], true));
-                    if ($attr === $rdn_attr) {
-                        $this->_debug("This attribute is the RDN attribute. Let's see if it is multi-valued, and if the original still exists in the new value.");
-                        if (is_array($old_attrs[$attr])) {
-                            if (!is_array($new_attrs[$attr])) {
-                                if (in_array($new_attrs[$attr], $old_attrs[$attr])) {
-                                    // TODO: Need to remove all $old_attrs[$attr] values not equal to $new_attrs[$attr], and not equal to the current $rdn_attr value [0]
-
-                                    $this->_debug("old attrs. is array, new attrs. is not array. new attr. exists in old attrs.");
-
-                                    $rdn_attr_value = array_shift($old_attrs[$attr]);
-                                    $_attr_to_remove = array();
-
-                                    foreach ($old_attrs[$attr] as $value) {
-                                        if (strtolower($value) != strtolower($new_attrs[$attr])) {
-                                            $_attr_to_remove[] = $value;
-                                        }
-                                    }
-
-                                    $this->_debug("Adding to delete attribute $attr values:" . implode(', ', $_attr_to_remove));
-
-                                    $mod_array['del'][$attr] = $_attr_to_remove;
-
-                                    if (strtolower($new_attrs[$attr]) !== strtolower($rdn_attr_value)) {
-                                        $this->_debug("new attrs is not the same as the old rdn value, issuing a rename");
-                                        $mod_array['rename']['dn'] = $subject_dn;
-                                        $mod_array['rename']['new_rdn'] = $rdn_attr . '=' . $new_attrs[$attr][0];
-                                    }
-                                }
-                                else {
-                                    $this->_debug("new attrs is not the same as any of the old rdn value, issuing a full rename");
-                                    $mod_array['rename']['dn'] = $subject_dn;
-                                    $mod_array['rename']['new_rdn'] = $rdn_attr . '=' . $new_attrs[$attr];
-                                }
-                            }
-                            else {
-                                // TODO: See if the rdn attr. value is still in $new_attrs[$attr]
-                                if (in_array($old_attrs[$attr][0], $new_attrs[$attr])) {
-                                    $this->_debug("Simply replacing attr $attr as rdn attr value is preserved.");
-                                    $mod_array['replace'][$attr] = $new_attrs[$attr];
-                                }
-                                else {
-                                    // TODO: This fails.
-                                    $mod_array['rename']['dn'] = $subject_dn;
-                                    $mod_array['rename']['new_rdn'] = $rdn_attr . '=' . $new_attrs[$attr][0];
-                                    $mod_array['del'][$attr] = $old_attrs[$attr][0];
-                                }
-                            }
-                        }
-                        else {
-                            if (!is_array($new_attrs[$attr])) {
-                                $this->_debug("Renaming " . $old_attrs[$attr] . " to " . $new_attrs[$attr]);
-                                $mod_array['rename']['dn'] = $subject_dn;
-                                $mod_array['rename']['new_rdn'] = $rdn_attr . '=' . $new_attrs[$attr];
-                            }
-                            else {
-                                $this->_debug("Adding to replace");
-                                // An additional attribute value is being supplied. Just replace and continue.
-                                $mod_array['replace'][$attr] = $new_attrs[$attr];
-                                continue;
-                            }
-                        }
-
-                    }
-                    else {
-                        if (!isset($new_attrs[$attr]) || $new_attrs[$attr] === '' || (is_array($new_attrs[$attr]) && empty($new_attrs[$attr]))) {
-                            switch ($attr) {
-                                case "userpassword":
-                                    break;
-                                default:
-                                    $this->_debug("Adding to del: $attr");
-                                    $mod_array['del'][$attr] = (array)($old_attr_value);
-                                    break;
-                            }
-                        }
-                        else {
-                            $this->_debug("Adding to replace: $attr");
-                            $mod_array['replace'][$attr] = (array)($new_attrs[$attr]);
-                        }
-                    }
-                }
-                else {
-                    $this->_debug("Attribute $attr unchanged");
-                }
-            }
-            else {
-                // TODO: Since we're not shipping the entire object back and forth, and only post
-                // part of the data... we don't know what is actually removed (think modifiedtimestamp, etc.)
-                $this->_debug("Group attribute $attr not mentioned in \$new_attrs..., but not explicitly removed... by assumption");
-            }
-        }
-
-        foreach ($new_attrs as $attr => $value) {
-            // OU's parent base dn
-            if ($attr == 'base_dn') {
-                continue;
-            }
-
-            if (is_array($value)) {
-                if (count($value) == 1) {
-                    $new_attrs[$attr] = $value[0];
-                    $value = $new_attrs[$attr];
-                }
-            }
-
-            if (array_key_exists($attr, $old_attrs)) {
-                if (is_array($old_attrs[$attr])) {
-                    if (count($old_attrs[$attr]) == 1) {
-                        $old_attrs[$attr] = $old_attrs[$attr][0];
-                    }
-                }
-
-                if (is_array($new_attrs[$attr]) && is_array($old_attrs[$attr])) {
-                    $_sort1 = $old_attrs[$attr];
-                    sort($_sort1);
-                    $_sort2 = $value;
-                    sort($_sort2);
-                }
-                else {
-                    $_sort1 = true;
-                    $_sort2 = false;
-                }
-
-                if ($value === null || $value === '' || (is_array($value) && empty($value))) {
-                    if (!array_key_exists($attr, $mod_array['del'])) {
-                        switch ($attr) {
-                            case 'userpassword':
-                                break;
-                            default:
-                                $this->_debug("Adding to del(2): $attr");
-                                $mod_array['del'][$attr] = (array)($old_attrs[$attr]);
-                                break;
-                        }
-                    }
-                }
-                else {
-                    if (!($old_attrs[$attr] === $value) && !($attr === $rdn_attr) && !($_sort1 === $_sort2)) {
-                        if (!array_key_exists($attr, $mod_array['replace'])) {
-                            $this->_debug("Adding to replace(2): $attr");
-                            $mod_array['replace'][$attr] = $value;
-                        }
-                    }
-                }
-            }
-            else {
-                if (!empty($value)) {
-                    $mod_array['add'][$attr] = $value;
-                }
-            }
-        }
-
-        if (empty($old_ou)) {
-            $subject_dn_components = ldap_explode_dn($subject_dn, 0);
-            unset($subject_dn_components["count"]);
-            $subject_rdn = array_shift($subject_dn_components);
-            $old_ou      = implode(',', $subject_dn_components);
-        }
-
-        // object is an organizational unit
-        if (strpos($subject_dn, 'ou=' . $old_ou) === 0) {
-            $root = substr($subject_dn, strlen($old_ou) + 4); // remove ou=*,
-
-            if ((!empty($new_attrs['base_dn']) && strtolower($new_attrs['base_dn']) !== strtolower($root))
-                || (strtolower($old_ou) !== strtolower($new_ou))
-            ) {
-                if (!empty($new_attrs['base_dn'])) {
-                    $root = $new_attrs['base_dn'];
-                }
-
-                $mod_array['rename']['new_parent'] = $root;
-                $mod_array['rename']['dn']         = $subject_dn;
-                $mod_array['rename']['new_rdn']    = 'ou=' . $new_ou;
-            }
-        }
-        // not OU object, but changed ou attribute
-        else if ((!empty($old_ou) && !empty($new_ou)) && strtolower($old_ou) !== strtolower($new_ou)) {
-            $mod_array['rename']['new_parent'] = $new_ou;
-            if (empty($mod_array['rename']['dn']) || empty($mod_array['rename']['new_rdn'])) {
-                $mod_array['rename']['dn']      = $subject_dn;
-                $mod_array['rename']['new_rdn'] = $rdn_attr . '=' . $new_attrs[$rdn_attr];
-            }
-        }
-
-        $this->_debug($mod_array);
-
-        $result = $this->modify_entry_attributes($subject_dn, $mod_array);
-
-        if ($result) {
-            return $mod_array;
-        }
-    }
-
-    /**
-     * Bind connection with (SASL-) user and password
-     *
-     * @param string $authc Authentication user
-     * @param string $pass  Bind password
-     * @param string $authz Autorization user
-     *
-     * @return boolean True on success, False on error
-     */
-    public function sasl_bind($authc, $pass, $authz=null)
-    {
-        if (!$this->conn) {
-            return false;
-        }
-
-        if (!function_exists('ldap_sasl_bind')) {
-            $this->_error("Unable to bind: ldap_sasl_bind() not exists");
-            return false;
-        }
-
-        if (!empty($authz)) {
-            $authz = 'u:' . $authz;
-        }
-
-        $method = $this->config_get('auth_method');
-        if (empty($method)) {
-            $method = 'DIGEST-MD5';
-        }
-
-        $this->_debug("C: Bind [mech: $method, authc: $authc, authz: $authz]");
-
-        if (ldap_sasl_bind($this->conn, null, $pass, $method, null, $authc, $authz)) {
-            $this->_debug("S: OK");
-            return true;
-        }
-
-        $this->_debug("S: ".ldap_error($this->conn));
-        $this->_error("Bind failed for authcid=$authc ".ldap_error($this->conn));
-
-        return false;
-    }
-
-    /**
-     * Execute LDAP search
-     *
-     * @param string $base_dn    Base DN to use for searching
-     * @param string $filter     Filter string to query
-     * @param string $scope      The LDAP scope (list|sub|base)
-     * @param array  $attrs      List of entry attributes to read
-     * @param array  $prop       Hash array with query configuration properties:
-     *   - sort:   array of sort attributes (has to be in sync with the VLV index)
-     *   - search: search string used for VLV controls
-     * @param bool   $count_only Set to true if only entry count is requested
-     *
-     * @return mixed Net_LDAP3_Result object or number of entries (if $count_only=true) or False on failure
-     */
-    public function search($base_dn, $filter = '(objectclass=*)', $scope = 'sub', $attrs = array('dn'), $props = array(), $count_only = false)
-    {
-        if (!$this->conn) {
-            $this->_debug("No active connection for " . __CLASS__ . "::" . __FUNCTION__);
-            return false;
-        }
-
-        $this->_debug("C: Search base dn: [$base_dn] scope [$scope] with filter [$filter]");
-
-        // make sure attributes list is not empty
-        if (empty($attrs)) {
-            $attrs = array('dn');
-        }
-
-        if (!$count_only && ($sort = $this->find_vlv($base_dn, $filter, $scope, $props['sort']))) {
-            // when using VLV, we get the total count by...
-            // ...either reading numSubOrdinates attribute
-            if (($sub_filter = $this->config_get('numsub_filter')) &&
-                ($result_count = @$ns_function($this->conn, $base_dn, $sub_filter, array('numSubOrdinates'), 0, 0, 0))
-            ) {
-                $counts = ldap_get_entries($this->conn, $result_count);
-                for ($vlv_count = $j = 0; $j < $counts['count']; $j++) {
-                    $vlv_count += $counts[$j]['numsubordinates'][0];
-                }
-                $this->_debug("D: total numsubordinates = " . $vlv_count);
-            }
-            // ...or by fetching all records dn and count them
-            else if (!function_exists('ldap_parse_virtuallist_control')) {
-                $vlv_count = $this->search($base_dn, $filter, $scope, array('dn'), $props, true);
-            }
-
-            $this->vlv_active = $this->_vlv_set_controls($sort, $this->list_page, $this->page_size,
-                $this->_vlv_search($sort, $props['search']));
-        }
-        else {
-            $this->vlv_active = false;
-        }
-
-        $function  = self::scope_to_function($scope, $ns_function);
-        $sizelimit = (int) $this->config['sizelimit'];
-        $timelimit = (int) $this->config['timelimit'];
-
-        $this->_debug("Using function $function on scope $scope (\$ns_function is $ns_function)");
-
-        if ($this->vlv_active) {
-            if (!empty($this->additional_filter)) {
-                $filter = "(&" . $filter . $this->additional_filter . ")";
-                $this->_debug("C: (With VLV) Setting a filter (with additional filter) of " . $filter);
-            }
-            else {
-                $this->_debug("C: (With VLV) Setting a filter (without additional filter) of " . $filter);
-            }
-        }
-        else {
-            if (!empty($this->additional_filter)) {
-                $filter = "(&" . $filter . $this->additional_filter . ")";
-            }
-            $this->_debug("C: (Without VLV) Setting a filter of " . $filter);
-        }
-
-        $this->_debug("Executing search with return attributes: " . var_export($attrs, true));
-
-        $ldap_result = @$function($this->conn, $base_dn, $filter, $attrs, 0, $sizelimit, $timelimit);
-
-        if (!$ldap_result) {
-            $this->_debug("$function failed for dn=$base_dn: ".ldap_error($this->conn));
-            return false;
-        }
-
-        // when running on a patched PHP we can use the extended functions
-        // to retrieve the total count from the LDAP search result
-        if ($this->vlv_active && function_exists('ldap_parse_virtuallist_control')) {
-            if (ldap_parse_result($this->conn, $ldap_result, $errcode, $matcheddn, $errmsg, $referrals, $serverctrls)) {
-                ldap_parse_virtuallist_control($this->conn, $serverctrls, $last_offset, $vlv_count, $vresult);
-                $this->_debug("S: VLV result: last_offset=$last_offset; content_count=$vlv_count");
-            }
-            else {
-                $this->_debug("S: ".($errmsg ? $errmsg : ldap_error($this->conn)));
-            }
-        }
-        else if ($this->debug) {
-            $this->_debug("S: ".ldap_count_entries($this->conn, $ldap_result)." record(s) found");
-        }
-
-        $result = new Net_LDAP3_Result($this->conn, $base_dn, $filter, $scope, $ldap_result);
-        $result->set('offset', $last_offset);
-        $result->set('count', $vlv_count);
-        $result->set('vlv', true);
-
-        return $count_only ? $result->count() : $result;
-    }
-
-    /**
-     * Similar to Net_LDAP3::search() but using a search array with multiple
-     * keys and values that to continue to use the VLV but with an original
-     * filter adding the search stuff to an additional filter.
-     *
-     * @see Net_LDAP3::search()
-     */
-    public function search_entries($base_dn, $filter = '(objectclass=*)', $scope = 'sub', $attrs = array('dn'), $props = array())
-    {
-        $this->_debug("Net_LDAP3::search_entries with search " . var_export($props, true));
-
-        if (is_array($props['search']) && array_key_exists('params', $props['search'])) {
-            $_search = $this->search_filter($props['search']);
-            $this->_debug("C: Search filter: $_search");
-
-            if (!empty($_search)) {
-                $this->additional_filter = $_search;
-            }
-            else {
-                $this->additional_filter = "(|";
-
-                foreach ($props['search'] as $attr => $value) {
-                    $this->additional_filter .= "(" . $attr . "=" . $this->_fuzzy_search_prefix() . $value . $this->_fuzzy_search_suffix() . ")";
-                }
-
-                $this->additional_filter .= ")";
-            }
-
-            $this->_debug("C: Setting an additional filter " . $this->additional_filter);
-        }
-
-        $search = $this->search($base_dn, $filter, $scope, $attrs, $props);
-
-        $this->additional_filter = null;
-
-        if (!$search) {
-            $this->_debug("Net_LDAP3: Search did not succeed!");
-            return false;
-        }
-
-        return $search;
-    }
-
-    /**
-     * Create LDAP search filter string according to defined parameters.
-     */
-    public function search_filter($search)
-    {
-        if (empty($search) || !is_array($search) || empty($search['params'])) {
-            return null;
-        }
-
-        $operators = array('=', '~=', '>=', '<=');
-        $filter    = '';
-
-        foreach ((array) $search['params'] as $field => $param) {
-            switch ((string)$param['type']) {
-                case 'prefix':
-                    $prefix = '';
-                    $suffix = '*';
-                    break;
-
-                case 'suffix':
-                    $prefix = '*';
-                    $suffix = '';
-                    break;
-
-                case 'exact':
-                case '=':
-                case '~=':
-                case '>=':
-                case '<=':
-                    $prefix = '';
-                    $suffix = '';
-                    break;
-
-                case 'exists':
-                    $prefix = '*';
-                    $suffix = '';
-                    $param['value'] = '';
-                    break;
-
-                case 'both':
-                default:
-                    $prefix = '*';
-                    $suffix = '*';
-                    break;
-            }
-
-            $operator = $param['type'] && in_array($param['type'], $operators) ? $param['type'] : '=';
-
-            if (is_array($param['value'])) {
-                $val_filter = array();
-                foreach ($param['value'] as $val) {
-                    $value = self::quote_string($val);
-                    $val_filter[] = "(" . $field . $operator . $prefix . $value . $suffix . ")";
-                }
-                $filter .= "(|" . implode($val_filter, '') . ")";
-            }
-            else {
-                $value = self::quote_string($param['value']);
-                $filter .= "(" . $field . $operator . $prefix . $value . $suffix . ")";
-            }
-        }
-
-        // join search parameters with specified operator ('OR' or 'AND')
-        if (count($search['params']) > 1) {
-            $filter = '(' . ($search['operator'] == 'AND' ? '&' : '|') . $filter . ')';
-        }
-
-        return $filter;
-    }
-
-    /**
-     * Set properties for VLV-based paging
-     *
-     * @param number $page Page number to list (starting at 1)
-     * @param number $size Number of entries to display on one page
-     */
-    public function set_vlv_page($page, $size = 10)
-    {
-        $this->list_page = $page;
-        $this->page_size = $size;
-    }
-
-    /**
-     * Turn an LDAP entry into a regular PHP array with attributes as keys.
-     *
-     * @param array $entry Attributes array as retrieved from ldap_get_attributes() or ldap_get_entries()
-     *
-     * @return array Hash array with attributes as keys
-     */
-    public static function normalize_entry($entry)
-    {
-        $rec = array();
-        for ($i=0; $i < $entry['count']; $i++) {
-            $attr = $entry[$i];
-            for ($j=0; $j < $entry[$attr]['count']; $j++) {
-                $rec[$attr][$j] = $entry[$attr][$j];
-            }
-        }
-
-        return $rec;
-    }
-
-    /**
-     * Normalize a ldap result by converting entry attribute arrays into single values
-     */
-    public static function normalize_result($_result)
-    {
-        if (!is_array($_result)) {
-            return array();
-        }
-
-        $result = array();
-
-        for ($x = 0; $x < $_result['count']; $x++) {
-            $dn = $_result[$x]['dn'];
-            $result[$dn] = array();
-            for ($y = 0; $y < $_result[$x]['count']; $y++) {
-                $attr = $_result[$x][$y];
-                if ($_result[$x][$attr]['count'] == 1) {
-                    switch ($attr) {
-                        case 'objectclass':
-                            $result[$dn][$attr] = array(strtolower($_result[$x][$attr][0]));
-                            break;
-                        default:
-                            $result[$dn][$attr] = $_result[$x][$attr][0];
-                            break;
-                    }
-                }
-                else {
-                    $result[$dn][$attr] = array();
-                    for ($z = 0; $z < $_result[$x][$attr]['count']; $z++) {
-                        switch ($attr) {
-                            case 'objectclass':
-                                $result[$dn][$attr][] = strtolower($_result[$x][$attr][$z]);
-                                break;
-                            default:
-                                $result[$dn][$attr][] = $_result[$x][$attr][$z];
-                                break;
-                        }
-                    }
-                }
-            }
-        }
-
-        return $result;
-    }
-
-    public static function scopeint2str($scope)
-    {
-        switch ($scope) {
-            case 2:
-                return 'sub';
-                break;
-            case 1:
-                return 'one';
-                break;
-            case 0:
-                return 'base';
-                break;
-            default:
-                $this->_debug("Scope $scope is not a valid scope integer");
-                break;
-        }
-    }
-
-    /**
-     * Choose the right PHP function according to scope property
-     *
-     * @param string $scope         The LDAP scope (sub|base|list)
-     * @param string $ns_function   Function to be used for numSubOrdinates queries
-     * @return string  PHP function to be used to query directory
-     */
-    public static function scope_to_function($scope, &$ns_function = null)
-    {
-        switch ($scope) {
-            case 'sub':
-                $function = $ns_function  = 'ldap_search';
-                break;
-            case 'base':
-                $function = $ns_function = 'ldap_read';
-                break;
-            case 'one':
-            case 'list':
-            default:
-                $function    = 'ldap_list';
-                $ns_function = 'ldap_read';
-                break;
-        }
-
-        return $function;
-    }
-
-    private function config_set_config_get_hook($callback)
-    {
-        $this->_config_get_hook = $callback;
-    }
-
-    private function config_set_config_set_hook($callback)
-    {
-        $this->_config_set_hook = $callback;
-    }
-
-    /**
-     * Sets the debug level both for this class and the ldap connection.
-     */
-    private function config_set_debug($value)
-    {
-        $this->config['debug'] = (bool) $value;
-        if ((int)($value) > 0) {
-            ldap_set_option(null, LDAP_OPT_DEBUG_LEVEL, (int)($value));
-        }
-    }
-
-    /**
-     *  Sets a log hook that is called with every log message in this module.
-     */
-    private function config_set_log_hook($callback)
-    {
-        $this->_log_hook = $callback;
-    }
-
-    /**
-     * Find a matching VLV
-     */
-    protected function find_vlv($base_dn, $filter, $scope, $sort_attrs = null)
-    {
-        if ($scope == 'base') {
-            return false;
-        }
-
-        $vlv_indexes = $this->find_vlv_indexes_and_searches();
-
-        if (empty($vlv_indexes)) {
-            return false;
-        }
-
-        $this->_debug("Existing vlv index and search information", $vlv_indexes);
-
-        $filter = strtolower($filter);
-
-        foreach ($vlv_indexes as $vlv_index) {
-            if (!empty($vlv_index[$base_dn])) {
-                $this->_debug("Found a VLV for base_dn: " . $base_dn);
-                if ($vlv_index[$base_dn]['filter'] == $filter) {
-                    if ($vlv_index[$base_dn]['scope'] == $scope) {
-                        $this->_debug("Scope and filter matches");
-
-                        // Not passing any sort attributes means you don't care
-                        if (!empty($sort_attrs)) {
-                            $sort_attrs = (array) $sort_attrs;
-                            foreach ($vlv_index[$base_dn]['sort'] as $sss_config) {
-                                if (count(array_intersect($sort_attrs, $sss_config)) == count($sort_attrs)) {
-                                    return $sort_attrs;
-                                }
-                            }
-
-                            $this->_error("The requested sorting does not match any server-side sorting configuration");
-
-                            return false;
-                        }
-                        else {
-                            return $vlv_index[$base_dn]['sort'][0];
-                        }
-                    }
-                    else {
-                        $this->_debug("Scope does not match. VLV: " . var_export($vlv_index[$base_dn]['scope'], true)
-                            . " while looking for " . var_export($scope, true));
-                        return false;
-                    }
-                }
-                else {
-                    $this->_debug("Filter does not match");
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Return VLV indexes and searches including necessary configuration
-     * details.
-     */
-    protected function find_vlv_indexes_and_searches()
-    {
-        if ($this->config['vlv'] === false) {
-            return false;
-        }
-
-        if (is_array($this->config['vlv'])) {
-            return $this->config['vlv'];
-        }
-
-        if ($this->_vlv_indexes_and_searches !== null) {
-            return $this->_vlv_indexes_and_searches;
-        }
-
-        $this->_vlv_indexes_and_searches = array();
-
-        $config_root_dn = $this->config_get('config_root_dn');
-
-        if (empty($config_root_dn)) {
-            return array();
-        }
-
-        if ($this->cache && ($cached_config = $this->cache->get('vlvconfig'))) {
-            $this->_vlv_indexes_and_searches = $cached_config;
-            return $this->_vlv_indexes_and_searches;
-        }
-
-        $this->_debug("No VLV information available yet, refreshing");
-
-        $search_filter = '(objectclass=vlvsearch)';
-        $search_result = ldap_search($this->conn, $config_root_dn, $search_filter, array('*'), 0, 0, 0);
-
-        if ($search_result === false) {
-            $this->_debug("Search for '$search_filter' on '$config_root_dn' failed:".ldap_error($this->conn));
-            return;
-        }
-
-        $vlv_searches = new Net_LDAP3_Result($this->conn, $config_root_dn, $search_filter, 'sub', $search_result);
-
-        if ($vlv_searches->count() < 1) {
-            $this->_debug("Empty result from search for '(objectclass=vlvsearch)' on '$config_root_dn'");
-            return;
-        }
-
-        $index_filter = '(objectclass=vlvindex)';
-
-        foreach ($vlv_searches->entries(true) as $vlv_search_dn => $vlv_search_attrs) {
-            // The attributes we are interested in are as follows:
-            $_vlv_base_dn = $vlv_search_attrs['vlvbase'];
-            $_vlv_scope   = $vlv_search_attrs['vlvscope'];
-            $_vlv_filter  = $vlv_search_attrs['vlvfilter'];
-
-            // Multiple indexes may exist
-            $index_result = ldap_search($this->conn, $vlv_search_dn, $index_filter, array('*'), 0, 0, 0);
-
-            if ($index_result === false) {
-                $this->_debug("Search for '$index_filter' on '$vlv_search_dn' failed:".ldap_error($this->conn));
-                continue;
-            }
-
-            $vlv_indexes = new Net_LDAP3_Result($this->conn, $vlv_search_dn, $index_filter, 'sub', $index_result);
-            $vlv_indexes = $vlv_indexes->entries(true);
-
-            // Reset this one for each VLV search.
-            $_vlv_sort = array();
-
-            foreach ($vlv_indexes as $vlv_index_dn => $vlv_index_attrs) {
-                $_vlv_sort[] = explode(' ', $vlv_index_attrs['vlvsort']);
-            }
-
-            $this->_vlv_indexes_and_searches[] = array(
-                    $_vlv_base_dn => array(
-                            'scope'  => self::scopeint2str($_vlv_scope),
-                            'filter' => strtolower($_vlv_filter),
-                            'sort'   => $_vlv_sort,
-                        ),
-                );
-        }
-
-        // cache this
-        if ($this->cache) {
-            $this->cache->set('vlvconfig', $this->_vlv_indexes_and_searches);
-        }
-
-        return $this->_vlv_indexes_and_searches;
-    }
-
-    private function init_schema()
-    {
-        // use PEAR include if autoloading failed
-        if (!class_exists('Net_LDAP2')) {
-            require_once('Net/LDAP2.php');
-        }
-
-        $port = $this->config_get('port', 389);
-        $tls  = $this->config_get('use_tls', false);
-
-        foreach ((array) $this->config_get('hosts') as $host) {
-            $this->_debug("C: Connect [$host:$port]");
-
-            $_ldap_cfg = array(
-                'host'   => $host,
-                'port'   => $port,
-                'tls'    => $tls,
-                'version' => 3,
-                'binddn' => $this->config_get('service_bind_dn'),
-                'bindpw' => $this->config_get('service_bind_pw')
-            );
-
-            $_ldap_schema_cache_cfg = array(
-                'path' => "/tmp/" . $host . ":" . ($port ? $port : '389') . "-Net_LDAP2_Schema.cache",
-                'max_age' => 86400,
-            );
-
-            $_ldap = Net_LDAP2::connect($_ldap_cfg);
-
-            if (!is_a($_ldap, 'Net_LDAP2_Error')) {
-                $this->_debug("S: OK");
-                break;
-            }
-
-            $this->_debug("S: NOT OK");
-            $this->_debug($_ldap->getMessage());
-        }
-
-        if (is_a($_ldap, 'Net_LDAP2_Error')) {
-            return null;
-        }
-
-        $_ldap_schema_cache = new Net_LDAP2_SimpleFileSchemaCache($_ldap_schema_cache_cfg);
-
-        $_ldap->registerSchemaCache($_ldap_schema_cache);
-
-        // TODO: We should learn what LDAP tech. we're running against.
-        // Perhaps with a scope base objectclass recognize rootdse entry
-        $schema_root_dn = $this->config_get('schema_root_dn');
-
-        if (!$schema_root_dn) {
-            $_schema = $_ldap->schema();
-        }
-
-        return $_schema;
-    }
-
-    private function list_group_member($dn, $members, $recurse = true)
-    {
-        $this->_debug("Called list_group_member(" . $dn . ")");
-
-        $members       = (array) $members;
-        $group_members = array();
-
-        // remove possible 'count' item
-        unset($members['count']);
-
-        // Use the member attributes to return an array of member ldap objects
-        // NOTE that the member attribute is supposed to contain a DN
-        foreach ($members as $member) {
-            $member_entry = $this->get_entry($member, array('member', 'uniquemember', 'memberurl', 'objectclass'));
-
-            if (empty($member_entry)) {
-                continue;
-            }
-
-            $group_members[$member] = $member;
-
-            if ($recurse) {
-                // Nested groups
-                $group_group_members = $this->list_group_members($member, $member_entry);
-                if ($group_group_members) {
-                    $group_members = array_merge($group_group_members, $group_members);
-                }
-            }
-        }
-
-        return array_filter($group_members);
-    }
-
-    private function list_group_uniquemember($dn, $uniquemembers, $recurse = true)
-    {
-        $this->_debug("Called list_group_uniquemember(" . $dn . ")", $entry);
-
-        $uniquemembers = (array)($uniquemembers);
-        $group_members = array();
-
-        // remove possible 'count' item
-        unset($uniquemembers['count']);
-
-        foreach ($uniquemembers as $member) {
-            $member_entry = $this->get_entry($member, array('member', 'uniquemember', 'memberurl', 'objectclass'));
-
-            if (empty($member_entry)) {
-                continue;
-            }
-
-            $group_members[$member] = $member;
-
-            if ($recurse) {
-                // Nested groups
-                $group_group_members = $this->list_group_members($member, $member_entry);
-                if ($group_group_members) {
-                    $group_members = array_merge($group_group_members, $group_members);
-                }
-            }
-        }
-
-        return array_filter($group_members);
-    }
-
-    private function list_group_memberurl($dn, $memberurls, $recurse = true)
-    {
-        $this->_debug("Called list_group_memberurl(" . $dn . ")");
-
-        $group_members = array();
-        $memberurls    = (array) $memberurls;
-        $attributes    = array('member', 'uniquemember', 'memberurl', 'objectclass');
-
-        // remove possible 'count' item
-        unset($memberurls['count']);
-
-        foreach ($memberurls as $url) {
-            $ldap_uri = $this->parse_memberurl($url);
-            $result   = $this->search($ldap_uri[3], $ldap_uri[6], 'sub', $attributes);
-
-            if (!$result) {
-                continue;
-            }
-
-            foreach ($result->entries(true) as $entry_dn => $_entry) {
-                $group_members[$entry_dn] = $entry_dn;
-                $this->_debug("Found " . $entry_dn);
-
-                if ($recurse) {
-                    // Nested group
-                    $group_group_members = $this->list_group_members($entry_dn, $_entry);
-                    if ($group_group_members) {
-                        $group_members = array_merge($group_members, $group_group_members);
-                    }
-                }
-            }
-        }
-
-        return array_filter($group_members);
-    }
-
-    /**
-     * memberUrl attribute parser
-     *
-     * @param string $url URL string
-     *
-     * @return array URL elements
-     */
-    private function parse_memberurl($url)
-    {
-        preg_match('/(.*):\/\/(.*)\/(.*)\?(.*)\?(.*)\?(.*)/', $url, $matches);
-        return $matches;
-    }
-
-    private function modify_entry_attributes($subject_dn, $attributes)
-    {
-        // Opportunities to set false include failed ldap commands.
-        $result = true;
-
-        if (is_array($attributes['rename']) && !empty($attributes['rename'])) {
-            $olddn  = $attributes['rename']['dn'];
-            $newrdn = $attributes['rename']['new_rdn'];
-
-            if (!empty($attributes['rename']['new_parent'])) {
-                $new_parent = $attributes['rename']['new_parent'];
-            }
-            else {
-                $new_parent = null;
-            }
-
-            $this->_debug("LDAP: C: Rename $olddn to $newrdn,$new_parent");
-
-            $result = ldap_rename($this->conn, $olddn, $newrdn, $new_parent, true);
-
-            if ($result) {
-                $this->_debug("LDAP: S: OK");
-
-                if ($new_parent) {
-                    $subject_dn = $newrdn . ',' . $new_parent;
-                }
-                else {
-                    $old_parent_dn_components = ldap_explode_dn($olddn, 0);
-                    unset($old_parent_dn_components["count"]);
-                    $old_rdn       = array_shift($old_parent_dn_components);
-                    $old_parent_dn = implode(",", $old_parent_dn_components);
-                    $subject_dn    = $newrdn . ',' . $old_parent_dn;
-                }
-            }
-            else {
-                $this->_debug("LDAP: S: " . ldap_error($this->conn));
-                $this->_warning("LDAP: Failed to rename $olddn to $newrdn,$new_parent");
-                return false;
-            }
-        }
-
-        if (is_array($attributes['replace']) && !empty($attributes['replace'])) {
-            $this->_debug("LDAP: C: Mod-Replace $subject_dn: " . json_encode($attributes['replace']));
-
-            $result = ldap_mod_replace($this->conn, $subject_dn, $attributes['replace']);
-
-            if ($result) {
-                $this->_debug("LDAP: S: OK");
-            }
-            else {
-                $this->_debug("LDAP: S: " . ldap_error($this->conn));
-                $this->_warning("LDAP: Failed to replace attributes on $subject_dn: " . json_encode($attributes['replace']));
-                return false;
-            }
-        }
-
-        if (is_array($attributes['del']) && !empty($attributes['del'])) {
-            $this->_debug("LDAP: C: Mod-Delete $subject_dn: " . json_encode($attributes['del']));
-
-            $result = ldap_mod_del($this->conn, $subject_dn, $attributes['del']);
-
-            if ($result) {
-                $this->_debug("LDAP: S: OK");
-            }
-            else {
-                $this->_debug("LDAP: S: " . ldap_error($this->conn));
-                $this->_warning("LDAP: Failed to delete attributes on $subject_dn: " . json_encode($attributes['del']));
-                return false;
-            }
-        }
-
-        if (is_array($attributes['add']) && !empty($attributes['add'])) {
-            $this->_debug("LDAP: C: Mod-Add $subject_dn: " . json_encode($attributes['add']));
-
-            $result = ldap_mod_add($this->conn, $subject_dn, $attributes['add']);
-
-            if ($result) {
-                $this->_debug("LDAP: S: OK");
-            }
-            else {
-                $this->_debug("LDAP: S: " . ldap_error($this->conn));
-                $this->_warning("LDAP: Failed to add attributes on $subject_dn: " . json_encode($attributes['add']));
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    private function parse_attribute_level_rights($attribute_value)
-    {
-        $attribute_value  = str_replace(", ", ",", $attribute_value);
-        $attribute_values = explode(",", $attribute_value);
-        $attribute_value  = array();
-
-        foreach ($attribute_values as $access_right) {
-            $access_right_components = explode(":", $access_right);
-            $access_attribute        = strtolower(array_shift($access_right_components));
-            $access_value            = array_shift($access_right_components);
-
-            $attribute_value[$access_attribute] = array();
-
-            for ($i = 0; $i < strlen($access_value); $i++) {
-                $method = $this->attribute_level_rights_map[substr($access_value, $i, 1)];
-
-                if (!in_array($method, $attribute_value[$access_attribute])) {
-                    $attribute_value[$access_attribute][] = $method;
-                }
-            }
-        }
-
-        return $attribute_value;
-    }
-
-    private function parse_entry_level_rights($attribute_value)
-    {
-        $_attribute_value = array();
-
-        for ($i = 0; $i < strlen($attribute_value); $i++) {
-            $method = $this->entry_level_rights_map[substr($attribute_value, $i, 1)];
-
-            if (!in_array($method, $_attribute_value)) {
-                $_attribute_value[] = $method;
-            }
-        }
-
-        return $_attribute_value;
-    }
-
-    private function supported_controls()
-    {
-        if (!empty($this->supported_controls)) {
-            return $this->supported_controls;
-        }
-
-        $this->_info("Obtaining supported controls");
-
-        if ($result = $this->search('', '(objectclass=*)', 'base', array('supportedcontrol'))) {
-            $result  = $result->entries(true);
-            $control = $result['']['supportedcontrol'];
-        }
-        else {
-            $control = array();
-        }
-
-        $this->_info("Obtained " . count($control) . " supported controls");
-        $this->supported_controls = $control;
-
-        return $control;
-    }
-
-    protected function _alert()
-    {
-        $this->__log(LOG_ALERT, func_get_args());
-    }
-
-    protected function _critical()
-    {
-        $this->__log(LOG_CRIT, func_get_args());
-    }
-
-    protected function _debug()
-    {
-        $this->__log(LOG_DEBUG, func_get_args());
-    }
-
-    protected function _emergency()
-    {
-        $this->__log(LOG_EMERG, func_get_args());
-    }
-
-    protected function _error()
-    {
-        $this->__log(LOG_ERR, func_get_args());
-    }
-
-    protected function _info()
-    {
-        $this->__log(LOG_INFO, func_get_args());
-    }
-
-    protected function _notice()
-    {
-        $this->__log(LOG_NOTICE, func_get_args());
-    }
-
-    protected function _warning()
-    {
-        $this->__log(LOG_WARNING, func_get_args());
-    }
-
-    /**
-     *  Log a message.
-     */
-    private function __log($level, $args)
-    {
-        $msg = array();
-
-        foreach ($args as $arg) {
-            $msg[] = !is_string($arg) ? var_export($arg, true) : $arg;
-        }
-
-        if (!empty($this->_log_hook)) {
-            call_user_func_array($this->_log_hook, array($level, $msg));
-            return;
-        }
-
-        if ($this->debug_level > 0) {
-            syslog($level, implode("\n", $msg));
-        }
-    }
-
-    /**
-     * Add BER sequence with correct length and the given identifier
-     */
-    private static function _ber_addseq($str, $identifier)
-    {
-        $len = dechex(strlen($str)/2);
-        if (strlen($len) % 2 != 0) {
-            $len = '0'.$len;
-        }
-
-        return $identifier . $len . $str;
-    }
-
-    /**
-     * Returns BER encoded integer value in hex format
-     */
-    private static function _ber_encode_int($offset)
-    {
-        $val    = dechex($offset);
-        $prefix = '';
-
-        // check if bit 8 of high byte is 1
-        if (preg_match('/^[89abcdef]/', $val)) {
-            $prefix = '00';
-        }
-
-        if (strlen($val)%2 != 0) {
-            $prefix .= '0';
-        }
-
-        return $prefix . $val;
-    }
-
-    /**
-     * Quotes attribute value string
-     *
-     * @param string $str Attribute value
-     * @param bool   $dn  True if the attribute is a DN
-     *
-     * @return string Quoted string
-     */
-    public static function quote_string($str, $is_dn = false)
-    {
-        // take firt entry if array given
-        if (is_array($str)) {
-            $str = reset($str);
-        }
-
-        if ($is_dn) {
-            $replace = array(
-                ',' => '\2c',
-                '=' => '\3d',
-                '+' => '\2b',
-                '<' => '\3c',
-                '>' => '\3e',
-                ';' => '\3b',
-                "\\"=> '\5c',
-                '"' => '\22',
-                '#' => '\23'
-            );
-        }
-        else {
-            $replace = array(
-                '*' => '\2a',
-                '(' => '\28',
-                ')' => '\29',
-                "\\" => '\5c',
-                '/' => '\2f'
-            );
-        }
-
-        return strtr($str, $replace);
-    }
-
-    /**
-     * create ber encoding for sort control
-     *
-     * @param array List of cols to sort by
-     * @return string BER encoded option value
-     */
-    private static function _sort_ber_encode($sortcols)
-    {
-        $str = '';
-        foreach (array_reverse((array)$sortcols) as $col) {
-            $ber_val = self::_string2hex($col);
-
-            // 30 = ber sequence with a length of octet value
-            // 04 = octet string with a length of the ascii value
-            $oct = self::_ber_addseq($ber_val, '04');
-            $str = self::_ber_addseq($oct, '30') . $str;
-        }
-
-        // now tack on sequence identifier and length
-        $str = self::_ber_addseq($str, '30');
-
-        return pack('H'.strlen($str), $str);
-    }
-
-    /**
-     * Returns ascii string encoded in hex
-     */
-    private static function _string2hex($str)
-    {
-        $hex = '';
-        for ($i=0; $i < strlen($str); $i++)
-            $hex .= dechex(ord($str[$i]));
-
-        return $hex;
-    }
-
-    /**
-     * Generate BER encoded string for Virtual List View option
-     *
-     * @param integer List offset (first record)
-     * @param integer Records per page
-     * @return string BER encoded option value
-     */
-    private static function _vlv_ber_encode($offset, $rpp, $search = '')
-    {
-        // This string is ber-encoded, php will prefix this value with:
-        // 04 (octet string) and 10 (length of 16 bytes)
-        // the code behind this string is broken down as follows:
-        // 30 = ber sequence with a length of 0e (14) bytes following
-        // 02 = type integer (in two's complement form) with 2 bytes following (beforeCount): 01 00 (ie 0)
-        // 02 = type integer (in two's complement form) with 2 bytes following (afterCount):  01 18 (ie 25-1=24)
-        // a0 = type context-specific/constructed with a length of 06 (6) bytes following
-        // 02 = type integer with 2 bytes following (offset): 01 01 (ie 1)
-        // 02 = type integer with 2 bytes following (contentCount):  01 00
-
-        // whith a search string present:
-        // 81 = type context-specific/constructed with a length of 04 (4) bytes following (the length will change here)
-        // 81 indicates a user string is present where as a a0 indicates just a offset search
-        // 81 = type context-specific/constructed with a length of 06 (6) bytes following
-
-        // the following info was taken from the ISO/IEC 8825-1:2003 x.690 standard re: the
-        // encoding of integer values (note: these values are in
-        // two-complement form so since offset will never be negative bit 8 of the
-        // leftmost octet should never by set to 1):
-        // 8.3.2: If the contents octets of an integer value encoding consist
-        // of more than one octet, then the bits of the first octet (rightmost) and bit 8
-        // of the second (to the left of first octet) octet:
-        // a) shall not all be ones; and
-        // b) shall not all be zero
-
-        if ($search) {
-            $search  = preg_replace('/[^-[:alpha:] ,.()0-9]+/', '', $search);
-            $ber_val = self::_string2hex($search);
-            $str     = self::_ber_addseq($ber_val, '81');
-        }
-        else {
-            // construct the string from right to left
-            $str = "020100"; # contentCount
-
-            // returns encoded integer value in hex format
-            $ber_val = self::_ber_encode_int($offset);
-
-            // calculate octet length of $ber_val
-            $str = self::_ber_addseq($ber_val, '02') . $str;
-
-            // now compute length over $str
-            $str = self::_ber_addseq($str, 'a0');
-        }
-
-        // now tack on records per page
-        $str = "020100" . self::_ber_addseq(self::_ber_encode_int($rpp-1), '02') . $str;
-
-        // now tack on sequence identifier and length
-        $str = self::_ber_addseq($str, '30');
-
-        return pack('H'.strlen($str), $str);
-    }
-
-    private function _fuzzy_search_prefix()
-    {
-        switch ($this->config_get("fuzzy_search", 2)) {
-            case 2:
-                return "*";
-                break;
-            case 1:
-            case 0:
-            default:
-                return "";
-                break;
-        }
-    }
-
-    private function _fuzzy_search_suffix()
-    {
-        switch ($this->config_get("fuzzy_search", 2)) {
-            case 2:
-                return "*";
-                break;
-            case 1:
-                return "*";
-            case 0:
-            default:
-                return "";
-                break;
-        }
-    }
-
-    /**
-     * Return the search string value to be used in VLV controls
-     */
-    private function _vlv_search($sort, $search)
-    {
-        if (!empty($this->additional_filter)) {
-            $this->_debug("Not setting a VLV search filter because we already have a filter");
-            return;
-        }
-
-        if (empty($search)) {
-            return;
-        }
-
-        $search_suffix = $this->_fuzzy_search_suffix();
-
-        foreach ($search as $attr => $value) {
-            if (!in_array(strtolower($attr), $sort)) {
-                $this->_debug("Cannot use VLV search using attribute not indexed: $attr (not in " . var_export($sort, true) . ")");
-                return;
-            }
-            else {
-                return $value . $search_suffix;
-            }
-        }
-    }
-
-    /**
-     * Set server controls for Virtual List View (paginated listing)
-     */
-    private function _vlv_set_controls($sort, $list_page, $page_size, $search = null)
-    {
-        $sort_ctrl = array(
-            'oid'   => "1.2.840.113556.1.4.473",
-            'value' => self::_sort_ber_encode($sort)
-        );
-
-        if (!empty($search)) {
-            $this->_debug("_vlv_set_controls to include search: " . var_export($search, true));
-        }
-
-        $vlv_ctrl  = array(
-            'oid' => "2.16.840.1.113730.3.4.9",
-            'value' => self::_vlv_ber_encode(
-                    $offset = ($list_page-1) * $page_size + 1,
-                    $page_size,
-                    $search
-            ),
-            'iscritical' => true
-        );
-
-        $this->_debug("C: set controls sort=" . join(' ', unpack('H'.(strlen($sort_ctrl['value'])*2), $sort_ctrl['value']))
-            . " (" . implode(',', (array) $sort) . ");"
-            . " vlv=" . join(' ', (unpack('H'.(strlen($vlv_ctrl['value'])*2), $vlv_ctrl['value']))) . " ($offset/$page_size)");
-
-        if (!ldap_set_option($this->conn, LDAP_OPT_SERVER_CONTROLS, array($sort_ctrl, $vlv_ctrl))) {
-            $this->_debug("S: ".ldap_error($this->conn));
-            $this->set_error(self::ERROR_SEARCH, 'vlvnotsupported');
-
-            return false;
-        }
-
-        return true;
-    }
-
-}
diff --git a/program/lib/Net/LDAP3/Result.php b/program/lib/Net/LDAP3/Result.php
deleted file mode 100644
index 0759df0..0000000
--- a/program/lib/Net/LDAP3/Result.php
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-/*
- +-----------------------------------------------------------------------+
- | Net/LDAP3/Result.php                                                  |
- |                                                                       |
- | Based on code created by the Roundcube Webmail team.                  |
- |                                                                       |
- | Copyright (C) 2006-2014, The Roundcube Dev Team                       |
- | Copyright (C) 2012-2014, Kolab Systems AG                             |
- |                                                                       |
- | Licensed under the GNU General Public License version 3 or            |
- | any later version with exceptions for plugins.                        |
- | See the README file for a full license statement.                     |
- |                                                                       |
- | PURPOSE:                                                              |
- |   Provide advanced functionality for accessing LDAP directories       |
- |                                                                       |
- +-----------------------------------------------------------------------+
- | Authors: Thomas Bruederli <roundcube@gmail.com>                       |
- |          Jeroen van Meeuwen <vanmeeuwen@kolabsys.com>                 |
- +-----------------------------------------------------------------------+
-*/
-
-/**
- * Model class representing an LDAP search result
- *
- * @package LDAP
- */
-class Net_LDAP3_Result implements Iterator
-{
-    protected $conn;
-    protected $base_dn;
-    protected $filter;
-    protected $scope;
-
-    private $count;
-    private $current;
-    private $iteratorkey = 0;
-
-    /**
-     * Default constructor
-     *
-     * @param resource $conn      LDAP link identifier
-     * @param string   $base_dn   Base DN used to get this result
-     * @param string   $filter    Filter query used to get this result
-     * @param string   $scope     Scope of the result
-     * @param resource $result    LDAP result entry identifier
-     */
-    function __construct($conn, $base_dn, $filter, $scope, $result)
-    {
-        $this->conn    = $conn;
-        $this->base_dn = $base_dn;
-        $this->filter  = $filter;
-        $this->scope   = $scope;
-        $this->result  = $result;
-    }
-
-    public function get($property, $default = null)
-    {
-        if (isset($this->$property)) {
-            return $this->$property;
-        } else {
-            return $default;
-        }
-    }
-
-    public function set($property, $value)
-    {
-        $this->$property = $value;
-    }
-
-    /**
-     * Wrapper for ldap_sort()
-     */
-    public function sort($attr)
-    {
-        return ldap_sort($this->conn, $this->result, $attr);
-    }
-
-    /**
-     * Get entries count
-     */
-    public function count()
-    {
-        if (!isset($this->count)) {
-            $this->count = ldap_count_entries($this->conn, $this->result);
-        }
-
-        return $this->count;
-    }
-
-    /**
-     * Wrapper for ldap_get_entries()
-     *
-     * @param bool $normalize Optionally normalize the entries to a list of hash arrays
-     *
-     * @return array List of LDAP entries
-     */
-    public function entries($normalize = false)
-    {
-        $entries = ldap_get_entries($this->conn, $this->result);
-
-        if ($normalize) {
-            return Net_LDAP3::normalize_result($entries);
-        }
-
-        return $entries;
-    }
-
-    /**
-     * Wrapper for ldap_get_dn() using the current entry pointer
-     */
-    public function get_dn()
-    {
-        return $this->current ? ldap_get_dn($this->conn, $this->current) : null;
-    }
-
-
-    /***  Implement PHP 5 Iterator interface to make foreach work  ***/
-
-    function current()
-    {
-        $attrib       = ldap_get_attributes($this->conn, $this->current);
-        $attrib['dn'] = ldap_get_dn($this->conn, $this->current);
-
-        return $attrib;
-    }
-
-    function key()
-    {
-        return $this->iteratorkey;
-    }
-
-    function rewind()
-    {
-        $this->iteratorkey = 0;
-        $this->current = ldap_first_entry($this->conn, $this->result);
-    }
-
-    function next()
-    {
-        $this->iteratorkey++;
-        $this->current = ldap_next_entry($this->conn, $this->current);
-    }
-
-    function valid()
-    {
-        return (bool)$this->current;
-    }
-
-}
diff --git a/program/lib/Net/SMTP.php b/program/lib/Net/SMTP.php
deleted file mode 100644
index 2c1ef5c..0000000
--- a/program/lib/Net/SMTP.php
+++ /dev/null
@@ -1,1338 +0,0 @@
-<?php
-/* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP Version 4                                                        |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2003 The PHP Group                                |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.02 of the PHP license,      |
-// | that is bundled with this package in the file LICENSE, and is        |
-// | available at through the world-wide-web at                           |
-// | http://www.php.net/license/2_02.txt.                                 |
-// | If you did not receive a copy of the PHP license and are unable to   |
-// | obtain it through the world-wide-web, please send a note to          |
-// | license@php.net so we can mail you a copy immediately.               |
-// +----------------------------------------------------------------------+
-// | Authors: Chuck Hagenbuch <chuck@horde.org>                           |
-// |          Jon Parise <jon@php.net>                                    |
-// |          Damian Alejandro Fernandez Sosa <damlists@cnba.uba.ar>      |
-// +----------------------------------------------------------------------+
-
-require_once 'PEAR.php';
-require_once 'Net/Socket.php';
-
-/**
- * Provides an implementation of the SMTP protocol using PEAR's
- * Net_Socket:: class.
- *
- * @package Net_SMTP
- * @author  Chuck Hagenbuch <chuck@horde.org>
- * @author  Jon Parise <jon@php.net>
- * @author  Damian Alejandro Fernandez Sosa <damlists@cnba.uba.ar>
- *
- * @example basic.php   A basic implementation of the Net_SMTP package.
- */
-class Net_SMTP
-{
-    /**
-     * The server to connect to.
-     * @var string
-     * @access public
-     */
-    var $host = 'localhost';
-
-    /**
-     * The port to connect to.
-     * @var int
-     * @access public
-     */
-    var $port = 25;
-
-    /**
-     * The value to give when sending EHLO or HELO.
-     * @var string
-     * @access public
-     */
-    var $localhost = 'localhost';
-
-    /**
-     * List of supported authentication methods, in preferential order.
-     * @var array
-     * @access public
-     */
-    var $auth_methods = array();
-
-    /**
-     * Use SMTP command pipelining (specified in RFC 2920) if the SMTP
-     * server supports it.
-     *
-     * When pipeling is enabled, rcptTo(), mailFrom(), sendFrom(),
-     * somlFrom() and samlFrom() do not wait for a response from the
-     * SMTP server but return immediately.
-     *
-     * @var bool
-     * @access public
-     */
-    var $pipelining = false;
-
-    /**
-     * Number of pipelined commands.
-     * @var int
-     * @access private
-     */
-    var $_pipelined_commands = 0;
-
-    /**
-     * Should debugging output be enabled?
-     * @var boolean
-     * @access private
-     */
-    var $_debug = false;
-
-    /**
-     * Debug output handler.
-     * @var callback
-     * @access private
-     */
-    var $_debug_handler = null;
-
-    /**
-     * The socket resource being used to connect to the SMTP server.
-     * @var resource
-     * @access private
-     */
-    var $_socket = null;
-
-    /**
-     * Array of socket options that will be passed to Net_Socket::connect().
-     * @see stream_context_create()
-     * @var array
-     * @access private
-     */
-    var $_socket_options = null;
-
-    /**
-     * The socket I/O timeout value in seconds.
-     * @var int
-     * @access private
-     */
-    var $_timeout = 0;
-
-    /**
-     * The most recent server response code.
-     * @var int
-     * @access private
-     */
-    var $_code = -1;
-
-    /**
-     * The most recent server response arguments.
-     * @var array
-     * @access private
-     */
-    var $_arguments = array();
-
-    /**
-     * Stores the SMTP server's greeting string.
-     * @var string
-     * @access private
-     */
-    var $_greeting = null;
-
-    /**
-     * Stores detected features of the SMTP server.
-     * @var array
-     * @access private
-     */
-    var $_esmtp = array();
-
-    /**
-     * Instantiates a new Net_SMTP object, overriding any defaults
-     * with parameters that are passed in.
-     *
-     * If you have SSL support in PHP, you can connect to a server
-     * over SSL using an 'ssl://' prefix:
-     *
-     *   // 465 is a common smtps port.
-     *   $smtp = new Net_SMTP('ssl://mail.host.com', 465);
-     *   $smtp->connect();
-     *
-     * @param string  $host       The server to connect to.
-     * @param integer $port       The port to connect to.
-     * @param string  $localhost  The value to give when sending EHLO or HELO.
-     * @param boolean $pipeling   Use SMTP command pipelining
-     * @param integer $timeout    Socket I/O timeout in seconds.
-     * @param array   $socket_options Socket stream_context_create() options.
-     *
-     * @access  public
-     * @since   1.0
-     */
-    function Net_SMTP($host = null, $port = null, $localhost = null,
-        $pipelining = false, $timeout = 0, $socket_options = null)
-    {
-        if (isset($host)) {
-            $this->host = $host;
-        }
-        if (isset($port)) {
-            $this->port = $port;
-        }
-        if (isset($localhost)) {
-            $this->localhost = $localhost;
-        }
-        $this->pipelining = $pipelining;
-
-        $this->_socket = new Net_Socket();
-        $this->_socket_options = $socket_options;
-        $this->_timeout = $timeout;
-
-        /* Include the Auth_SASL package.  If the package is available, we 
-         * enable the authentication methods that depend upon it. */
-        if (@include_once 'Auth/SASL.php') {
-            $this->setAuthMethod('CRAM-MD5', array($this, '_authCram_MD5'));
-            $this->setAuthMethod('DIGEST-MD5', array($this, '_authDigest_MD5'));
-        }
-
-        /* These standard authentication methods are always available. */
-        $this->setAuthMethod('LOGIN', array($this, '_authLogin'), false);
-        $this->setAuthMethod('PLAIN', array($this, '_authPlain'), false);
-    }
-
-    /**
-     * Set the socket I/O timeout value in seconds plus microseconds.
-     *
-     * @param   integer $seconds        Timeout value in seconds.
-     * @param   integer $microseconds   Additional value in microseconds.
-     *
-     * @access  public
-     * @since   1.5.0
-     */
-    function setTimeout($seconds, $microseconds = 0) {
-        return $this->_socket->setTimeout($seconds, $microseconds);
-    }
-
-    /**
-     * Set the value of the debugging flag.
-     *
-     * @param   boolean $debug      New value for the debugging flag.
-     *
-     * @access  public
-     * @since   1.1.0
-     */
-    function setDebug($debug, $handler = null)
-    {
-        $this->_debug = $debug;
-        $this->_debug_handler = $handler;
-    }
-
-    /**
-     * Write the given debug text to the current debug output handler.
-     *
-     * @param   string  $message    Debug mesage text.
-     *
-     * @access  private
-     * @since   1.3.3
-     */
-    function _debug($message)
-    {
-        if ($this->_debug) {
-            if ($this->_debug_handler) {
-                call_user_func_array($this->_debug_handler,
-                                     array(&$this, $message));
-            } else {
-                echo "DEBUG: $message\n";
-            }
-        }
-    }
-
-    /**
-     * Send the given string of data to the server.
-     *
-     * @param   string  $data       The string of data to send.
-     *
-     * @return  mixed   The number of bytes that were actually written,
-     *                  or a PEAR_Error object on failure.
-     *
-     * @access  private
-     * @since   1.1.0
-     */
-    function _send($data)
-    {
-        $this->_debug("Send: $data");
-
-        $result = $this->_socket->write($data);
-        if (!$result || PEAR::isError($result)) {
-            $msg = ($result) ? $result->getMessage() : "unknown error";
-            return PEAR::raiseError("Failed to write to socket: $msg",
-                                    null, PEAR_ERROR_RETURN);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Send a command to the server with an optional string of
-     * arguments.  A carriage return / linefeed (CRLF) sequence will
-     * be appended to each command string before it is sent to the
-     * SMTP server - an error will be thrown if the command string
-     * already contains any newline characters. Use _send() for
-     * commands that must contain newlines.
-     *
-     * @param   string  $command    The SMTP command to send to the server.
-     * @param   string  $args       A string of optional arguments to append
-     *                              to the command.
-     *
-     * @return  mixed   The result of the _send() call.
-     *
-     * @access  private
-     * @since   1.1.0
-     */
-    function _put($command, $args = '')
-    {
-        if (!empty($args)) {
-            $command .= ' ' . $args;
-        }
-
-        if (strcspn($command, "\r\n") !== strlen($command)) {
-            return PEAR::raiseError('Commands cannot contain newlines',
-                                    null, PEAR_ERROR_RETURN);
-        }
-
-        return $this->_send($command . "\r\n");
-    }
-
-    /**
-     * Read a reply from the SMTP server.  The reply consists of a response
-     * code and a response message.
-     *
-     * @param   mixed   $valid      The set of valid response codes.  These
-     *                              may be specified as an array of integer
-     *                              values or as a single integer value.
-     * @param   bool    $later      Do not parse the response now, but wait
-     *                              until the last command in the pipelined
-     *                              command group
-     *
-     * @return  mixed   True if the server returned a valid response code or
-     *                  a PEAR_Error object is an error condition is reached.
-     *
-     * @access  private
-     * @since   1.1.0
-     *
-     * @see     getResponse
-     */
-    function _parseResponse($valid, $later = false)
-    {
-        $this->_code = -1;
-        $this->_arguments = array();
-
-        if ($later) {
-            $this->_pipelined_commands++;
-            return true;
-        }
-
-        for ($i = 0; $i <= $this->_pipelined_commands; $i++) {
-            while ($line = $this->_socket->readLine()) {
-                $this->_debug("Recv: $line");
-
-                /* If we receive an empty line, the connection was closed. */
-                if (empty($line)) {
-                    $this->disconnect();
-                    return PEAR::raiseError('Connection was closed',
-                                            null, PEAR_ERROR_RETURN);
-                }
-
-                /* Read the code and store the rest in the arguments array. */
-                $code = substr($line, 0, 3);
-                $this->_arguments[] = trim(substr($line, 4));
-
-                /* Check the syntax of the response code. */
-                if (is_numeric($code)) {
-                    $this->_code = (int)$code;
-                } else {
-                    $this->_code = -1;
-                    break;
-                }
-
-                /* If this is not a multiline response, we're done. */
-                if (substr($line, 3, 1) != '-') {
-                    break;
-                }
-            }
-        }
-
-        $this->_pipelined_commands = 0;
-
-        /* Compare the server's response code with the valid code/codes. */
-        if (is_int($valid) && ($this->_code === $valid)) {
-            return true;
-        } elseif (is_array($valid) && in_array($this->_code, $valid, true)) {
-            return true;
-        }
-
-        return PEAR::raiseError('Invalid response code received from server',
-                                $this->_code, PEAR_ERROR_RETURN);
-    }
-
-    /**
-     * Issue an SMTP command and verify its response.
-     *
-     * @param   string  $command    The SMTP command string or data.
-     * @param   mixed   $valid      The set of valid response codes.  These
-     *                              may be specified as an array of integer
-     *                              values or as a single integer value.
-     *
-     * @return  mixed   True on success or a PEAR_Error object on failure.
-     *
-     * @access  public
-     * @since   1.6.0
-     */
-    function command($command, $valid)
-    {
-        if (PEAR::isError($error = $this->_put($command))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse($valid))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Return a 2-tuple containing the last response from the SMTP server.
-     *
-     * @return  array   A two-element array: the first element contains the
-     *                  response code as an integer and the second element
-     *                  contains the response's arguments as a string.
-     *
-     * @access  public
-     * @since   1.1.0
-     */
-    function getResponse()
-    {
-        return array($this->_code, join("\n", $this->_arguments));
-    }
-
-    /**
-     * Return the SMTP server's greeting string.
-     *
-     * @return  string  A string containing the greeting string, or null if a 
-     *                  greeting has not been received.
-     *
-     * @access  public
-     * @since   1.3.3
-     */
-    function getGreeting()
-    {
-        return $this->_greeting;
-    }
-
-    /**
-     * Attempt to connect to the SMTP server.
-     *
-     * @param   int     $timeout    The timeout value (in seconds) for the
-     *                              socket connection attempt.
-     * @param   bool    $persistent Should a persistent socket connection
-     *                              be used?
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.0
-     */
-    function connect($timeout = null, $persistent = false)
-    {
-        $this->_greeting = null;
-        $result = $this->_socket->connect($this->host, $this->port,
-                                          $persistent, $timeout,
-                                          $this->_socket_options);
-        if (PEAR::isError($result)) {
-            return PEAR::raiseError('Failed to connect socket: ' .
-                                    $result->getMessage());
-        }
-
-        /*
-         * Now that we're connected, reset the socket's timeout value for 
-         * future I/O operations.  This allows us to have different socket 
-         * timeout values for the initial connection (our $timeout parameter) 
-         * and all other socket operations.
-         */
-        if ($this->_timeout > 0) {
-            if (PEAR::isError($error = $this->setTimeout($this->_timeout))) {
-                return $error;
-            }
-        }
-
-        if (PEAR::isError($error = $this->_parseResponse(220))) {
-            return $error;
-        }
-
-        /* Extract and store a copy of the server's greeting string. */
-        list(, $this->_greeting) = $this->getResponse();
-
-        if (PEAR::isError($error = $this->_negotiate())) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Attempt to disconnect from the SMTP server.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.0
-     */
-    function disconnect()
-    {
-        if (PEAR::isError($error = $this->_put('QUIT'))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(221))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_socket->disconnect())) {
-            return PEAR::raiseError('Failed to disconnect socket: ' .
-                                    $error->getMessage());
-        }
-
-        return true;
-    }
-
-    /**
-     * Attempt to send the EHLO command and obtain a list of ESMTP
-     * extensions available, and failing that just send HELO.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     *
-     * @access private
-     * @since  1.1.0
-     */
-    function _negotiate()
-    {
-        if (PEAR::isError($error = $this->_put('EHLO', $this->localhost))) {
-            return $error;
-        }
-
-        if (PEAR::isError($this->_parseResponse(250))) {
-            /* If we receive a 503 response, we're already authenticated. */
-            if ($this->_code === 503) {
-                return true;
-            }
-
-            /* If the EHLO failed, try the simpler HELO command. */
-            if (PEAR::isError($error = $this->_put('HELO', $this->localhost))) {
-                return $error;
-            }
-            if (PEAR::isError($this->_parseResponse(250))) {
-                return PEAR::raiseError('HELO was not accepted: ', $this->_code,
-                                        PEAR_ERROR_RETURN);
-            }
-
-            return true;
-        }
-
-        foreach ($this->_arguments as $argument) {
-            $verb = strtok($argument, ' ');
-            $arguments = substr($argument, strlen($verb) + 1,
-                                strlen($argument) - strlen($verb) - 1);
-            $this->_esmtp[$verb] = $arguments;
-        }
-
-        if (!isset($this->_esmtp['PIPELINING'])) {
-            $this->pipelining = false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns the name of the best authentication method that the server
-     * has advertised.
-     *
-     * @return mixed    Returns a string containing the name of the best
-     *                  supported authentication method or a PEAR_Error object
-     *                  if a failure condition is encountered.
-     * @access private
-     * @since  1.1.0
-     */
-    function _getBestAuthMethod()
-    {
-        $available_methods = explode(' ', $this->_esmtp['AUTH']);
-
-        foreach ($this->auth_methods as $method => $callback) {
-            if (in_array($method, $available_methods)) {
-                return $method;
-            }
-        }
-
-        return PEAR::raiseError('No supported authentication methods',
-                                null, PEAR_ERROR_RETURN);
-    }
-
-    /**
-     * Attempt to do SMTP authentication.
-     *
-     * @param string The userid to authenticate as.
-     * @param string The password to authenticate with.
-     * @param string The requested authentication method.  If none is
-     *               specified, the best supported method will be used.
-     * @param bool   Flag indicating whether or not TLS should be attempted.
-     * @param string An optional authorization identifier.  If specified, this
-     *               identifier will be used as the authorization proxy.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.0
-     */
-    function auth($uid, $pwd , $method = '', $tls = true, $authz = '')
-    {
-        /* We can only attempt a TLS connection if one has been requested,
-         * we're running PHP 5.1.0 or later, have access to the OpenSSL 
-         * extension, are connected to an SMTP server which supports the 
-         * STARTTLS extension, and aren't already connected over a secure 
-         * (SSL) socket connection. */
-        if ($tls && version_compare(PHP_VERSION, '5.1.0', '>=') &&
-            extension_loaded('openssl') && isset($this->_esmtp['STARTTLS']) &&
-            strncasecmp($this->host, 'ssl://', 6) !== 0) {
-            /* Start the TLS connection attempt. */
-            if (PEAR::isError($result = $this->_put('STARTTLS'))) {
-                return $result;
-            }
-            if (PEAR::isError($result = $this->_parseResponse(220))) {
-                return $result;
-            }
-            if (PEAR::isError($result = $this->_socket->enableCrypto(true, STREAM_CRYPTO_METHOD_TLS_CLIENT))) {
-                return $result;
-            } elseif ($result !== true) {
-                return PEAR::raiseError('STARTTLS failed');
-            }
-
-            /* Send EHLO again to recieve the AUTH string from the
-             * SMTP server. */
-            $this->_negotiate();
-        }
-
-        if (empty($this->_esmtp['AUTH'])) {
-            return PEAR::raiseError('SMTP server does not support authentication');
-        }
-
-        /* If no method has been specified, get the name of the best
-         * supported method advertised by the SMTP server. */
-        if (empty($method)) {
-            if (PEAR::isError($method = $this->_getBestAuthMethod())) {
-                /* Return the PEAR_Error object from _getBestAuthMethod(). */
-                return $method;
-            }
-        } else {
-            $method = strtoupper($method);
-            if (!array_key_exists($method, $this->auth_methods)) {
-                return PEAR::raiseError("$method is not a supported authentication method");
-            }
-        }
-
-        if (!isset($this->auth_methods[$method])) {
-            return PEAR::raiseError("$method is not a supported authentication method");
-        }
-
-        if (!is_callable($this->auth_methods[$method], false)) {
-            return PEAR::raiseError("$method authentication method cannot be called");
-        }
-
-        if (is_array($this->auth_methods[$method])) {
-            list($object, $method) = $this->auth_methods[$method];
-            $result = $object->{$method}($uid, $pwd, $authz, $this);
-        } else {
-            $func =  $this->auth_methods[$method];
-            $result = $func($uid, $pwd, $authz, $this);
-         }
-
-        /* If an error was encountered, return the PEAR_Error object. */
-        if (PEAR::isError($result)) {
-            return $result;
-        }
-
-        return true;
-    }
-
-    /**
-     * Add a new authentication method.
-     *
-     * @param string    The authentication method name (e.g. 'PLAIN')
-     * @param mixed     The authentication callback (given as the name of a 
-     *                  function or as an (object, method name) array).
-     * @param bool      Should the new method be prepended to the list of 
-     *                  available methods?  This is the default behavior, 
-     *                  giving the new method the highest priority.
-     *
-     * @return  mixed   True on success or a PEAR_Error object on failure.
-     *
-     * @access public
-     * @since  1.6.0
-     */
-    function setAuthMethod($name, $callback, $prepend = true)
-    {
-        if (!is_string($name)) {
-            return PEAR::raiseError('Method name is not a string');
-        }
-
-        if (!is_string($callback) && !is_array($callback)) {
-            return PEAR::raiseError('Method callback must be string or array');
-        }
-
-        if (is_array($callback)) {
-            if (!is_object($callback[0]) || !is_string($callback[1]))
-                return PEAR::raiseError('Bad mMethod callback array');
-        }
-
-        if ($prepend) {
-            $this->auth_methods = array_merge(array($name => $callback),
-                                              $this->auth_methods);
-        } else {
-            $this->auth_methods[$name] = $callback;
-        }
-
-        return true;
-    }
-
-    /**
-     * Authenticates the user using the DIGEST-MD5 method.
-     *
-     * @param string The userid to authenticate as.
-     * @param string The password to authenticate with.
-     * @param string The optional authorization proxy identifier.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access private
-     * @since  1.1.0
-     */
-    function _authDigest_MD5($uid, $pwd, $authz = '')
-    {
-        if (PEAR::isError($error = $this->_put('AUTH', 'DIGEST-MD5'))) {
-            return $error;
-        }
-        /* 334: Continue authentication request */
-        if (PEAR::isError($error = $this->_parseResponse(334))) {
-            /* 503: Error: already authenticated */
-            if ($this->_code === 503) {
-                return true;
-            }
-            return $error;
-        }
-
-        $challenge = base64_decode($this->_arguments[0]);
-        $digest = &Auth_SASL::factory('digest-md5');
-        $auth_str = base64_encode($digest->getResponse($uid, $pwd, $challenge,
-                                                       $this->host, "smtp",
-                                                       $authz));
-
-        if (PEAR::isError($error = $this->_put($auth_str))) {
-            return $error;
-        }
-        /* 334: Continue authentication request */
-        if (PEAR::isError($error = $this->_parseResponse(334))) {
-            return $error;
-        }
-
-        /* We don't use the protocol's third step because SMTP doesn't
-         * allow subsequent authentication, so we just silently ignore
-         * it. */
-        if (PEAR::isError($error = $this->_put(''))) {
-            return $error;
-        }
-        /* 235: Authentication successful */
-        if (PEAR::isError($error = $this->_parseResponse(235))) {
-            return $error;
-        }
-    }
-
-    /**
-     * Authenticates the user using the CRAM-MD5 method.
-     *
-     * @param string The userid to authenticate as.
-     * @param string The password to authenticate with.
-     * @param string The optional authorization proxy identifier.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access private
-     * @since  1.1.0
-     */
-    function _authCRAM_MD5($uid, $pwd, $authz = '')
-    {
-        if (PEAR::isError($error = $this->_put('AUTH', 'CRAM-MD5'))) {
-            return $error;
-        }
-        /* 334: Continue authentication request */
-        if (PEAR::isError($error = $this->_parseResponse(334))) {
-            /* 503: Error: already authenticated */
-            if ($this->_code === 503) {
-                return true;
-            }
-            return $error;
-        }
-
-        $challenge = base64_decode($this->_arguments[0]);
-        $cram = &Auth_SASL::factory('cram-md5');
-        $auth_str = base64_encode($cram->getResponse($uid, $pwd, $challenge));
-
-        if (PEAR::isError($error = $this->_put($auth_str))) {
-            return $error;
-        }
-
-        /* 235: Authentication successful */
-        if (PEAR::isError($error = $this->_parseResponse(235))) {
-            return $error;
-        }
-    }
-
-    /**
-     * Authenticates the user using the LOGIN method.
-     *
-     * @param string The userid to authenticate as.
-     * @param string The password to authenticate with.
-     * @param string The optional authorization proxy identifier.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access private
-     * @since  1.1.0
-     */
-    function _authLogin($uid, $pwd, $authz = '')
-    {
-        if (PEAR::isError($error = $this->_put('AUTH', 'LOGIN'))) {
-            return $error;
-        }
-        /* 334: Continue authentication request */
-        if (PEAR::isError($error = $this->_parseResponse(334))) {
-            /* 503: Error: already authenticated */
-            if ($this->_code === 503) {
-                return true;
-            }
-            return $error;
-        }
-
-        if (PEAR::isError($error = $this->_put(base64_encode($uid)))) {
-            return $error;
-        }
-        /* 334: Continue authentication request */
-        if (PEAR::isError($error = $this->_parseResponse(334))) {
-            return $error;
-        }
-
-        if (PEAR::isError($error = $this->_put(base64_encode($pwd)))) {
-            return $error;
-        }
-
-        /* 235: Authentication successful */
-        if (PEAR::isError($error = $this->_parseResponse(235))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Authenticates the user using the PLAIN method.
-     *
-     * @param string The userid to authenticate as.
-     * @param string The password to authenticate with.
-     * @param string The optional authorization proxy identifier.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access private
-     * @since  1.1.0
-     */
-    function _authPlain($uid, $pwd, $authz = '')
-    {
-        if (PEAR::isError($error = $this->_put('AUTH', 'PLAIN'))) {
-            return $error;
-        }
-        /* 334: Continue authentication request */
-        if (PEAR::isError($error = $this->_parseResponse(334))) {
-            /* 503: Error: already authenticated */
-            if ($this->_code === 503) {
-                return true;
-            }
-            return $error;
-        }
-
-        $auth_str = base64_encode($authz . chr(0) . $uid . chr(0) . $pwd);
-
-        if (PEAR::isError($error = $this->_put($auth_str))) {
-            return $error;
-        }
-
-        /* 235: Authentication successful */
-        if (PEAR::isError($error = $this->_parseResponse(235))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Send the HELO command.
-     *
-     * @param string The domain name to say we are.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.0
-     */
-    function helo($domain)
-    {
-        if (PEAR::isError($error = $this->_put('HELO', $domain))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(250))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Return the list of SMTP service extensions advertised by the server.
-     *
-     * @return array The list of SMTP service extensions.
-     * @access public
-     * @since 1.3
-     */
-    function getServiceExtensions()
-    {
-        return $this->_esmtp;
-    }
-
-    /**
-     * Send the MAIL FROM: command.
-     *
-     * @param string $sender    The sender (reverse path) to set.
-     * @param string $params    String containing additional MAIL parameters,
-     *                          such as the NOTIFY flags defined by RFC 1891
-     *                          or the VERP protocol.
-     *
-     *                          If $params is an array, only the 'verp' option
-     *                          is supported.  If 'verp' is true, the XVERP
-     *                          parameter is appended to the MAIL command.  If
-     *                          the 'verp' value is a string, the full
-     *                          XVERP=value parameter is appended.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.0
-     */
-    function mailFrom($sender, $params = null)
-    {
-        $args = "FROM:<$sender>";
-
-        /* Support the deprecated array form of $params. */
-        if (is_array($params) && isset($params['verp'])) {
-            /* XVERP */
-            if ($params['verp'] === true) {
-                $args .= ' XVERP';
-
-            /* XVERP=something */
-            } elseif (trim($params['verp'])) {
-                $args .= ' XVERP=' . $params['verp'];
-            }
-        } elseif (is_string($params) && !empty($params)) {
-            $args .= ' ' . $params;
-        }
-
-        if (PEAR::isError($error = $this->_put('MAIL', $args))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Send the RCPT TO: command.
-     *
-     * @param string $recipient The recipient (forward path) to add.
-     * @param string $params    String containing additional RCPT parameters,
-     *                          such as the NOTIFY flags defined by RFC 1891.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     *
-     * @access public
-     * @since  1.0
-     */
-    function rcptTo($recipient, $params = null)
-    {
-        $args = "TO:<$recipient>";
-        if (is_string($params)) {
-            $args .= ' ' . $params;
-        }
-
-        if (PEAR::isError($error = $this->_put('RCPT', $args))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(array(250, 251), $this->pipelining))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Quote the data so that it meets SMTP standards.
-     *
-     * This is provided as a separate public function to facilitate
-     * easier overloading for the cases where it is desirable to
-     * customize the quoting behavior.
-     *
-     * @param string $data  The message text to quote. The string must be passed
-     *                      by reference, and the text will be modified in place.
-     *
-     * @access public
-     * @since  1.2
-     */
-    function quotedata(&$data)
-    {
-        /* Because a single leading period (.) signifies an end to the
-         * data, legitimate leading periods need to be "doubled" ('..'). */
-        $data = preg_replace('/^\./m', '..', $data);
-
-        /* Change Unix (\n) and Mac (\r) linefeeds into CRLF's (\r\n). */
-        $data = preg_replace('/(?:\r\n|\n|\r(?!\n))/', "\r\n", $data);
-    }
-
-    /**
-     * Send the DATA command.
-     *
-     * @param mixed $data     The message data, either as a string or an open
-     *                        file resource.
-     * @param string $headers The message headers.  If $headers is provided,
-     *                        $data is assumed to contain only body data.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.0
-     */
-    function data($data, $headers = null)
-    {
-        /* Verify that $data is a supported type. */
-        if (!is_string($data) && !is_resource($data)) {
-            return PEAR::raiseError('Expected a string or file resource');
-        }
-
-        /* Start by considering the size of the optional headers string.  We
-         * also account for the addition 4 character "\r\n\r\n" separator
-         * sequence. */
-        $size = (is_null($headers)) ? 0 : strlen($headers) + 4;
-
-        if (is_resource($data)) {
-            $stat = fstat($data);
-            if ($stat === false) {
-                return PEAR::raiseError('Failed to get file size');
-            }
-            $size += $stat['size'];
-        } else {
-            $size += strlen($data);
-        }
-
-        /* RFC 1870, section 3, subsection 3 states "a value of zero indicates
-         * that no fixed maximum message size is in force".  Furthermore, it
-         * says that if "the parameter is omitted no information is conveyed
-         * about the server's fixed maximum message size". */
-        $limit = (isset($this->_esmtp['SIZE'])) ? $this->_esmtp['SIZE'] : 0;
-        if ($limit > 0 && $size >= $limit) {
-            $this->disconnect();
-            return PEAR::raiseError('Message size exceeds server limit');
-        }
-
-        /* Initiate the DATA command. */
-        if (PEAR::isError($error = $this->_put('DATA'))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(354))) {
-            return $error;
-        }
-
-        /* If we have a separate headers string, send it first. */
-        if (!is_null($headers)) {
-            $this->quotedata($headers);
-            if (PEAR::isError($result = $this->_send($headers . "\r\n\r\n"))) {
-                return $result;
-            }
-        }
-
-        /* Now we can send the message body data. */
-        if (is_resource($data)) {
-            /* Stream the contents of the file resource out over our socket 
-             * connection, line by line.  Each line must be run through the 
-             * quoting routine. */
-            while (strlen($line = fread($data, 8192)) > 0) {
-                /* If the last character is an newline, we need to grab the
-                 * next character to check to see if it is a period. */
-                while (!feof($data)) {
-                    $char = fread($data, 1);
-                    $line .= $char;
-                    if ($char != "\n") {
-                        break;
-                    }
-                }
-                $this->quotedata($line);
-                if (PEAR::isError($result = $this->_send($line))) {
-                    return $result;
-                }
-            }
-        } else {
-            /*
-             * Break up the data by sending one chunk (up to 512k) at a time.  
-             * This approach reduces our peak memory usage.
-             */
-            for ($offset = 0; $offset < $size;) {
-                $end = $offset + 512000;
-
-                /*
-                 * Ensure we don't read beyond our data size or span multiple 
-                 * lines.  quotedata() can't properly handle character data 
-                 * that's split across two line break boundaries.
-                 */
-                if ($end >= $size) {
-                    $end = $size;
-                } else {
-                    for (; $end < $size; $end++) {
-                        if ($data[$end] != "\n") {
-                            break;
-                        }
-                    }
-                }
-
-                /* Extract our chunk and run it through the quoting routine. */
-                $chunk = substr($data, $offset, $end - $offset);
-                $this->quotedata($chunk);
-
-                /* If we run into a problem along the way, abort. */
-                if (PEAR::isError($result = $this->_send($chunk))) {
-                    return $result;
-                }
-
-                /* Advance the offset to the end of this chunk. */
-                $offset = $end;
-            }
-        }
-
-        /* Finally, send the DATA terminator sequence. */
-        if (PEAR::isError($result = $this->_send("\r\n.\r\n"))) {
-            return $result;
-        }
-
-        /* Verify that the data was successfully received by the server. */
-        if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Send the SEND FROM: command.
-     *
-     * @param string The reverse path to send.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.2.6
-     */
-    function sendFrom($path)
-    {
-        if (PEAR::isError($error = $this->_put('SEND', "FROM:<$path>"))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Backwards-compatibility wrapper for sendFrom().
-     *
-     * @param string The reverse path to send.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     *
-     * @access      public
-     * @since       1.0
-     * @deprecated  1.2.6
-     */
-    function send_from($path)
-    {
-        return sendFrom($path);
-    }
-
-    /**
-     * Send the SOML FROM: command.
-     *
-     * @param string The reverse path to send.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.2.6
-     */
-    function somlFrom($path)
-    {
-        if (PEAR::isError($error = $this->_put('SOML', "FROM:<$path>"))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Backwards-compatibility wrapper for somlFrom().
-     *
-     * @param string The reverse path to send.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     *
-     * @access      public
-     * @since       1.0
-     * @deprecated  1.2.6
-     */
-    function soml_from($path)
-    {
-        return somlFrom($path);
-    }
-
-    /**
-     * Send the SAML FROM: command.
-     *
-     * @param string The reverse path to send.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.2.6
-     */
-    function samlFrom($path)
-    {
-        if (PEAR::isError($error = $this->_put('SAML', "FROM:<$path>"))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Backwards-compatibility wrapper for samlFrom().
-     *
-     * @param string The reverse path to send.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     *
-     * @access      public
-     * @since       1.0
-     * @deprecated  1.2.6
-     */
-    function saml_from($path)
-    {
-        return samlFrom($path);
-    }
-
-    /**
-     * Send the RSET command.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.0
-     */
-    function rset()
-    {
-        if (PEAR::isError($error = $this->_put('RSET'))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Send the VRFY command.
-     *
-     * @param string The string to verify
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.0
-     */
-    function vrfy($string)
-    {
-        /* Note: 251 is also a valid response code */
-        if (PEAR::isError($error = $this->_put('VRFY', $string))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(array(250, 252)))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Send the NOOP command.
-     *
-     * @return mixed Returns a PEAR_Error with an error message on any
-     *               kind of failure, or true on success.
-     * @access public
-     * @since  1.0
-     */
-    function noop()
-    {
-        if (PEAR::isError($error = $this->_put('NOOP'))) {
-            return $error;
-        }
-        if (PEAR::isError($error = $this->_parseResponse(250))) {
-            return $error;
-        }
-
-        return true;
-    }
-
-    /**
-     * Backwards-compatibility method.  identifySender()'s functionality is
-     * now handled internally.
-     *
-     * @return  boolean     This method always return true.
-     *
-     * @access  public
-     * @since   1.0
-     */
-    function identifySender()
-    {
-        return true;
-    }
-
-}
diff --git a/program/lib/Net/Sieve.php b/program/lib/Net/Sieve.php
deleted file mode 100644
index 8ebdf09..0000000
--- a/program/lib/Net/Sieve.php
+++ /dev/null
@@ -1,1274 +0,0 @@
-<?php
-/**
- * This file contains the Net_Sieve class.
- *
- * PHP version 4
- *
- * +-----------------------------------------------------------------------+
- * | All rights reserved.                                                  |
- * |                                                                       |
- * | Redistribution and use in source and binary forms, with or without    |
- * | modification, are permitted provided that the following conditions    |
- * | are met:                                                              |
- * |                                                                       |
- * | o Redistributions of source code must retain the above copyright      |
- * |   notice, this list of conditions and the following disclaimer.       |
- * | o Redistributions in binary form must reproduce the above copyright   |
- * |   notice, this list of conditions and the following disclaimer in the |
- * |   documentation and/or other materials provided with the distribution.|
- * |                                                                       |
- * | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
- * | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
- * | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
- * | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
- * | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
- * | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
- * | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
- * | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
- * | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
- * | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
- * +-----------------------------------------------------------------------+
- *
- * @category  Networking
- * @package   Net_Sieve
- * @author    Richard Heyes <richard@phpguru.org>
- * @author    Damian Fernandez Sosa <damlists@cnba.uba.ar>
- * @author    Anish Mistry <amistry@am-productions.biz>
- * @author    Jan Schneider <jan@horde.org>
- * @copyright 2002-2003 Richard Heyes
- * @copyright 2006-2008 Anish Mistry
- * @license   http://www.opensource.org/licenses/bsd-license.php BSD
- * @version   SVN: $Id$
- * @link      http://pear.php.net/package/Net_Sieve
- */
-
-require_once 'PEAR.php';
-require_once 'Net/Socket.php';
-
-/**
- * TODO
- *
- * o supportsAuthMech()
- */
-
-/**
- * Disconnected state
- * @const NET_SIEVE_STATE_DISCONNECTED
- */
-define('NET_SIEVE_STATE_DISCONNECTED', 1, true);
-
-/**
- * Authorisation state
- * @const NET_SIEVE_STATE_AUTHORISATION
- */
-define('NET_SIEVE_STATE_AUTHORISATION', 2, true);
-
-/**
- * Transaction state
- * @const NET_SIEVE_STATE_TRANSACTION
- */
-define('NET_SIEVE_STATE_TRANSACTION', 3, true);
-
-
-/**
- * A class for talking to the timsieved server which comes with Cyrus IMAP.
- *
- * @category  Networking
- * @package   Net_Sieve
- * @author    Richard Heyes <richard@phpguru.org>
- * @author    Damian Fernandez Sosa <damlists@cnba.uba.ar>
- * @author    Anish Mistry <amistry@am-productions.biz>
- * @author    Jan Schneider <jan@horde.org>
- * @copyright 2002-2003 Richard Heyes
- * @copyright 2006-2008 Anish Mistry
- * @license   http://www.opensource.org/licenses/bsd-license.php BSD
- * @version   Release: 1.3.2
- * @link      http://pear.php.net/package/Net_Sieve
- * @link      http://tools.ietf.org/html/rfc5228 RFC 5228 (Sieve: An Email
- *            Filtering Language)
- * @link      http://tools.ietf.org/html/rfc5804 RFC 5804 A Protocol for
- *            Remotely Managing Sieve Scripts
- */
-class Net_Sieve
-{
-    /**
-     * The authentication methods this class supports.
-     *
-     * Can be overwritten if having problems with certain methods.
-     *
-     * @var array
-     */
-    var $supportedAuthMethods = array('DIGEST-MD5', 'CRAM-MD5', 'EXTERNAL',
-                                      'PLAIN' , 'LOGIN');
-
-    /**
-     * SASL authentication methods that require Auth_SASL.
-     *
-     * @var array
-     */
-    var $supportedSASLAuthMethods = array('DIGEST-MD5', 'CRAM-MD5');
-
-    /**
-     * The socket handle.
-     *
-     * @var resource
-     */
-    var $_sock;
-
-    /**
-     * Parameters and connection information.
-     *
-     * @var array
-     */
-    var $_data;
-
-    /**
-     * Current state of the connection.
-     *
-     * One of the NET_SIEVE_STATE_* constants.
-     *
-     * @var integer
-     */
-    var $_state;
-
-    /**
-     * Constructor error.
-     *
-     * @var PEAR_Error
-     */
-    var $_error;
-
-    /**
-     * Whether to enable debugging.
-     *
-     * @var boolean
-     */
-    var $_debug = false;
-
-    /**
-     * Debug output handler.
-     *
-     * This has to be a valid callback.
-     *
-     * @var string|array
-     */
-    var $_debug_handler = null;
-
-    /**
-     * Whether to pick up an already established connection.
-     *
-     * @var boolean
-     */
-    var $_bypassAuth = false;
-
-    /**
-     * Whether to use TLS if available.
-     *
-     * @var boolean
-     */
-    var $_useTLS = true;
-
-    /**
-     * Additional options for stream_context_create().
-     *
-     * @var array
-     */
-    var $_options = null;
-
-    /**
-     * Maximum number of referral loops
-     *
-     * @var array
-     */
-    var $_maxReferralCount = 15;
-
-    /**
-     * Constructor.
-     *
-     * Sets up the object, connects to the server and logs in. Stores any
-     * generated error in $this->_error, which can be retrieved using the
-     * getError() method.
-     *
-     * @param string  $user       Login username.
-     * @param string  $pass       Login password.
-     * @param string  $host       Hostname of server.
-     * @param string  $port       Port of server.
-     * @param string  $logintype  Type of login to perform (see
-     *                            $supportedAuthMethods).
-     * @param string  $euser      Effective user. If authenticating as an
-     *                            administrator, login as this user.
-     * @param boolean $debug      Whether to enable debugging (@see setDebug()).
-     * @param string  $bypassAuth Skip the authentication phase. Useful if the
-     *                            socket is already open.
-     * @param boolean $useTLS     Use TLS if available.
-     * @param array   $options    Additional options for
-     *                            stream_context_create().
-     * @param mixed   $handler    A callback handler for the debug output.
-     */
-    function Net_Sieve($user = null, $pass  = null, $host = 'localhost',
-                       $port = 2000, $logintype = '', $euser = '',
-                       $debug = false, $bypassAuth = false, $useTLS = true,
-                       $options = null, $handler = null)
-    {
-        $this->_state             = NET_SIEVE_STATE_DISCONNECTED;
-        $this->_data['user']      = $user;
-        $this->_data['pass']      = $pass;
-        $this->_data['host']      = $host;
-        $this->_data['port']      = $port;
-        $this->_data['logintype'] = $logintype;
-        $this->_data['euser']     = $euser;
-        $this->_sock              = new Net_Socket();
-        $this->_bypassAuth        = $bypassAuth;
-        $this->_useTLS            = $useTLS;
-        $this->_options           = $options;
-        $this->setDebug($debug, $handler);
-
-        /* Try to include the Auth_SASL package.  If the package is not
-         * available, we disable the authentication methods that depend upon
-         * it. */
-        if ((@include_once 'Auth/SASL.php') === false) {
-            $this->_debug('Auth_SASL not present');
-            foreach ($this->supportedSASLAuthMethods as $SASLMethod) {
-                $pos = array_search($SASLMethod, $this->supportedAuthMethods);
-                $this->_debug('Disabling method ' . $SASLMethod);
-                unset($this->supportedAuthMethods[$pos]);
-            }
-        }
-
-        if (strlen($user) && strlen($pass)) {
-            $this->_error = $this->_handleConnectAndLogin();
-        }
-    }
-
-    /**
-     * Returns any error that may have been generated in the constructor.
-     *
-     * @return boolean|PEAR_Error  False if no error, PEAR_Error otherwise.
-     */
-    function getError()
-    {
-        return PEAR::isError($this->_error) ? $this->_error : false;
-    }
-
-    /**
-     * Sets the debug state and handler function.
-     *
-     * @param boolean $debug   Whether to enable debugging.
-     * @param string  $handler A custom debug handler. Must be a valid callback.
-     *
-     * @return void
-     */
-    function setDebug($debug = true, $handler = null)
-    {
-        $this->_debug = $debug;
-        $this->_debug_handler = $handler;
-    }
-
-    /**
-     * Connects to the server and logs in.
-     *
-     * @return boolean  True on success, PEAR_Error on failure.
-     */
-    function _handleConnectAndLogin()
-    {
-        if (PEAR::isError($res = $this->connect($this->_data['host'], $this->_data['port'], $this->_options, $this->_useTLS))) {
-            return $res;
-        }
-        if ($this->_bypassAuth === false) {
-            if (PEAR::isError($res = $this->login($this->_data['user'], $this->_data['pass'], $this->_data['logintype'], $this->_data['euser'], $this->_bypassAuth))) {
-                return $res;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Handles connecting to the server and checks the response validity.
-     *
-     * @param string  $host    Hostname of server.
-     * @param string  $port    Port of server.
-     * @param array   $options List of options to pass to
-     *                         stream_context_create().
-     * @param boolean $useTLS  Use TLS if available.
-     *
-     * @return boolean  True on success, PEAR_Error otherwise.
-     */
-    function connect($host, $port, $options = null, $useTLS = true)
-    {
-        $this->_data['host'] = $host;
-        $this->_data['port'] = $port;
-        $this->_useTLS       = $useTLS;
-        if (is_array($options)) {
-            $this->_options = array_merge($this->_options, $options);
-        }
-
-        if (NET_SIEVE_STATE_DISCONNECTED != $this->_state) {
-            return PEAR::raiseError('Not currently in DISCONNECTED state', 1);
-        }
-
-        if (PEAR::isError($res = $this->_sock->connect($host, $port, false, 5, $options))) {
-            return $res;
-        }
-
-        if ($this->_bypassAuth) {
-            $this->_state = NET_SIEVE_STATE_TRANSACTION;
-        } else {
-            $this->_state = NET_SIEVE_STATE_AUTHORISATION;
-            if (PEAR::isError($res = $this->_doCmd())) {
-                return $res;
-            }
-        }
-
-        // Explicitly ask for the capabilities in case the connection is
-        // picked up from an existing connection.
-        if (PEAR::isError($res = $this->_cmdCapability())) {
-            return PEAR::raiseError(
-                'Failed to connect, server said: ' . $res->getMessage(), 2
-            );
-        }
-
-        // Check if we can enable TLS via STARTTLS.
-        if ($useTLS && !empty($this->_capability['starttls'])
-            && function_exists('stream_socket_enable_crypto')
-        ) {
-            if (PEAR::isError($res = $this->_startTLS())) {
-                return $res;
-            }
-        }
-
-        return true;
-    }
-
-    /**
-     * Disconnect from the Sieve server.
-     *
-     * @param boolean $sendLogoutCMD Whether to send LOGOUT command before
-     *                               disconnecting.
-     *
-     * @return boolean  True on success, PEAR_Error otherwise.
-     */
-    function disconnect($sendLogoutCMD = true)
-    {
-        return $this->_cmdLogout($sendLogoutCMD);
-    }
-
-    /**
-     * Logs into server.
-     *
-     * @param string  $user       Login username.
-     * @param string  $pass       Login password.
-     * @param string  $logintype  Type of login method to use.
-     * @param string  $euser      Effective UID (perform on behalf of $euser).
-     * @param boolean $bypassAuth Do not perform authentication.
-     *
-     * @return boolean  True on success, PEAR_Error otherwise.
-     */
-    function login($user, $pass, $logintype = null, $euser = '', $bypassAuth = false)
-    {
-        $this->_data['user']      = $user;
-        $this->_data['pass']      = $pass;
-        $this->_data['logintype'] = $logintype;
-        $this->_data['euser']     = $euser;
-        $this->_bypassAuth        = $bypassAuth;
-
-        if (NET_SIEVE_STATE_AUTHORISATION != $this->_state) {
-            return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
-        }
-
-        if (!$bypassAuth ) {
-            if (PEAR::isError($res = $this->_cmdAuthenticate($user, $pass, $logintype, $euser))) {
-                return $res;
-            }
-        }
-        $this->_state = NET_SIEVE_STATE_TRANSACTION;
-
-        return true;
-    }
-
-    /**
-     * Returns an indexed array of scripts currently on the server.
-     *
-     * @return array  Indexed array of scriptnames.
-     */
-    function listScripts()
-    {
-        if (is_array($scripts = $this->_cmdListScripts())) {
-            $this->_active = $scripts[1];
-            return $scripts[0];
-        } else {
-            return $scripts;
-        }
-    }
-
-    /**
-     * Returns the active script.
-     *
-     * @return string  The active scriptname.
-     */
-    function getActive()
-    {
-        if (!empty($this->_active)) {
-            return $this->_active;
-        }
-        if (is_array($scripts = $this->_cmdListScripts())) {
-            $this->_active = $scripts[1];
-            return $scripts[1];
-        }
-    }
-
-    /**
-     * Sets the active script.
-     *
-     * @param string $scriptname The name of the script to be set as active.
-     *
-     * @return boolean  True on success, PEAR_Error on failure.
-     */
-    function setActive($scriptname)
-    {
-        return $this->_cmdSetActive($scriptname);
-    }
-
-    /**
-     * Retrieves a script.
-     *
-     * @param string $scriptname The name of the script to be retrieved.
-     *
-     * @return string  The script on success, PEAR_Error on failure.
-    */
-    function getScript($scriptname)
-    {
-        return $this->_cmdGetScript($scriptname);
-    }
-
-    /**
-     * Adds a script to the server.
-     *
-     * @param string  $scriptname Name of the script.
-     * @param string  $script     The script content.
-     * @param boolean $makeactive Whether to make this the active script.
-     *
-     * @return boolean  True on success, PEAR_Error on failure.
-     */
-    function installScript($scriptname, $script, $makeactive = false)
-    {
-        if (PEAR::isError($res = $this->_cmdPutScript($scriptname, $script))) {
-            return $res;
-        }
-        if ($makeactive) {
-            return $this->_cmdSetActive($scriptname);
-        }
-        return true;
-    }
-
-    /**
-     * Removes a script from the server.
-     *
-     * @param string $scriptname Name of the script.
-     *
-     * @return boolean  True on success, PEAR_Error on failure.
-     */
-    function removeScript($scriptname)
-    {
-        return $this->_cmdDeleteScript($scriptname);
-    }
-
-    /**
-     * Checks if the server has space to store the script by the server.
-     *
-     * @param string  $scriptname The name of the script to mark as active.
-     * @param integer $size       The size of the script.
-     *
-     * @return boolean|PEAR_Error  True if there is space, PEAR_Error otherwise.
-     *
-     * @todo Rename to hasSpace()
-     */
-    function haveSpace($scriptname, $size)
-    {
-        if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
-            return PEAR::raiseError('Not currently in TRANSACTION state', 1);
-        }
-
-        if (PEAR::isError($res = $this->_doCmd(sprintf('HAVESPACE %s %d', $this->_escape($scriptname), $size)))) {
-            return $res;
-        }
-        return true;
-    }
-
-    /**
-     * Returns the list of extensions the server supports.
-     *
-     * @return array  List of extensions or PEAR_Error on failure.
-     */
-    function getExtensions()
-    {
-        if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
-            return PEAR::raiseError('Not currently connected', 7);
-        }
-        return $this->_capability['extensions'];
-    }
-
-    /**
-     * Returns whether the server supports an extension.
-     *
-     * @param string $extension The extension to check.
-     *
-     * @return boolean  Whether the extension is supported or PEAR_Error on
-     *                  failure.
-     */
-    function hasExtension($extension)
-    {
-        if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
-            return PEAR::raiseError('Not currently connected', 7);
-        }
-
-        $extension = trim($this->_toUpper($extension));
-        if (is_array($this->_capability['extensions'])) {
-            foreach ($this->_capability['extensions'] as $ext) {
-                if ($ext == $extension) {
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns the list of authentication methods the server supports.
-     *
-     * @return array  List of authentication methods or PEAR_Error on failure.
-     */
-    function getAuthMechs()
-    {
-        if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
-            return PEAR::raiseError('Not currently connected', 7);
-        }
-        return $this->_capability['sasl'];
-    }
-
-    /**
-     * Returns whether the server supports an authentication method.
-     *
-     * @param string $method The method to check.
-     *
-     * @return boolean  Whether the method is supported or PEAR_Error on
-     *                  failure.
-     */
-    function hasAuthMech($method)
-    {
-        if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
-            return PEAR::raiseError('Not currently connected', 7);
-        }
-
-        $method = trim($this->_toUpper($method));
-        if (is_array($this->_capability['sasl'])) {
-            foreach ($this->_capability['sasl'] as $sasl) {
-                if ($sasl == $method) {
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Handles the authentication using any known method.
-     *
-     * @param string $uid        The userid to authenticate as.
-     * @param string $pwd        The password to authenticate with.
-     * @param string $userMethod The method to use. If empty, the class chooses
-     *                           the best (strongest) available method.
-     * @param string $euser      The effective uid to authenticate as.
-     *
-     * @return void
-     */
-    function _cmdAuthenticate($uid, $pwd, $userMethod = null, $euser = '')
-    {
-        if (PEAR::isError($method = $this->_getBestAuthMethod($userMethod))) {
-            return $method;
-        }
-        switch ($method) {
-        case 'DIGEST-MD5':
-            return $this->_authDigestMD5($uid, $pwd, $euser);
-        case 'CRAM-MD5':
-            $result = $this->_authCRAMMD5($uid, $pwd, $euser);
-            break;
-        case 'LOGIN':
-            $result = $this->_authLOGIN($uid, $pwd, $euser);
-            break;
-        case 'PLAIN':
-            $result = $this->_authPLAIN($uid, $pwd, $euser);
-            break;
-        case 'EXTERNAL':
-            $result = $this->_authEXTERNAL($uid, $pwd, $euser);
-            break;
-        default :
-            $result = PEAR::raiseError(
-                $method . ' is not a supported authentication method'
-            );
-            break;
-        }
-
-        if (PEAR::isError($res = $this->_doCmd())) {
-            return $res;
-        }
-
-        // Query the server capabilities again now that we are authenticated.
-        if (PEAR::isError($res = $this->_cmdCapability())) {
-            return PEAR::raiseError(
-                'Failed to connect, server said: ' . $res->getMessage(), 2
-            );
-        }
-
-        return $result;
-    }
-
-    /**
-     * Authenticates the user using the PLAIN method.
-     *
-     * @param string $user  The userid to authenticate as.
-     * @param string $pass  The password to authenticate with.
-     * @param string $euser The effective uid to authenticate as.
-     *
-     * @return void
-     */
-    function _authPLAIN($user, $pass, $euser)
-    {
-        return $this->_sendCmd(
-            sprintf(
-                'AUTHENTICATE "PLAIN" "%s"',
-                base64_encode($euser . chr(0) . $user . chr(0) . $pass)
-            )
-        );
-    }
-
-    /**
-     * Authenticates the user using the LOGIN method.
-     *
-     * @param string $user  The userid to authenticate as.
-     * @param string $pass  The password to authenticate with.
-     * @param string $euser The effective uid to authenticate as.
-     *
-     * @return void
-     */
-    function _authLOGIN($user, $pass, $euser)
-    {
-        if (PEAR::isError($result = $this->_sendCmd('AUTHENTICATE "LOGIN"'))) {
-            return $result;
-        }
-        if (PEAR::isError($result = $this->_doCmd('"' . base64_encode($user) . '"', true))) {
-            return $result;
-        }
-        return $this->_doCmd('"' . base64_encode($pass) . '"', true);
-    }
-
-    /**
-     * Authenticates the user using the CRAM-MD5 method.
-     *
-     * @param string $user  The userid to authenticate as.
-     * @param string $pass  The password to authenticate with.
-     * @param string $euser The effective uid to authenticate as.
-     *
-     * @return void
-     */
-    function _authCRAMMD5($user, $pass, $euser)
-    {
-        if (PEAR::isError($challenge = $this->_doCmd('AUTHENTICATE "CRAM-MD5"', true))) {
-            return $challenge;
-        }
-
-        $challenge = base64_decode(trim($challenge));
-        $cram = Auth_SASL::factory('crammd5');
-        if (PEAR::isError($response = $cram->getResponse($user, $pass, $challenge))) {
-            return $response;
-        }
-
-        return $this->_sendStringResponse(base64_encode($response));
-    }
-
-    /**
-     * Authenticates the user using the DIGEST-MD5 method.
-     *
-     * @param string $user  The userid to authenticate as.
-     * @param string $pass  The password to authenticate with.
-     * @param string $euser The effective uid to authenticate as.
-     *
-     * @return void
-     */
-    function _authDigestMD5($user, $pass, $euser)
-    {
-        if (PEAR::isError($challenge = $this->_doCmd('AUTHENTICATE "DIGEST-MD5"', true))) {
-            return $challenge;
-        }
-
-        $challenge = base64_decode(trim($challenge));
-        $digest = Auth_SASL::factory('digestmd5');
-        // @todo Really 'localhost'?
-        if (PEAR::isError($response = $digest->getResponse($user, $pass, $challenge, 'localhost', 'sieve', $euser))) {
-            return $response;
-        }
-
-        if (PEAR::isError($result = $this->_sendStringResponse(base64_encode($response)))) {
-            return $result;
-        }
-        if (PEAR::isError($result = $this->_doCmd('', true))) {
-            return $result;
-        }
-        if ($this->_toUpper(substr($result, 0, 2)) == 'OK') {
-            return;
-        }
-
-        /* We don't use the protocol's third step because SIEVE doesn't allow
-         * subsequent authentication, so we just silently ignore it. */
-        if (PEAR::isError($result = $this->_sendStringResponse(''))) {
-            return $result;
-        }
-
-        return $this->_doCmd();
-    }
-
-    /**
-     * Authenticates the user using the EXTERNAL method.
-     *
-     * @param string $user  The userid to authenticate as.
-     * @param string $pass  The password to authenticate with.
-     * @param string $euser The effective uid to authenticate as.
-     *
-     * @return void
-     *
-     * @since  1.1.7
-     */
-    function _authEXTERNAL($user, $pass, $euser)
-    {
-        $cmd = sprintf(
-            'AUTHENTICATE "EXTERNAL" "%s"',
-            base64_encode(strlen($euser) ? $euser : $user)
-        );
-        return $this->_sendCmd($cmd);
-    }
-
-    /**
-     * Removes a script from the server.
-     *
-     * @param string $scriptname Name of the script to delete.
-     *
-     * @return boolean  True on success, PEAR_Error otherwise.
-     */
-    function _cmdDeleteScript($scriptname)
-    {
-        if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
-            return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
-        }
-
-        if (PEAR::isError($res = $this->_doCmd(sprintf('DELETESCRIPT %s', $this->_escape($scriptname))))) {
-            return $res;
-        }
-        return true;
-    }
-
-    /**
-     * Retrieves the contents of the named script.
-     *
-     * @param string $scriptname Name of the script to retrieve.
-     *
-     * @return string  The script if successful, PEAR_Error otherwise.
-     */
-    function _cmdGetScript($scriptname)
-    {
-        if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
-            return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
-        }
-
-        if (PEAR::isError($res = $this->_doCmd(sprintf('GETSCRIPT %s', $this->_escape($scriptname))))) {
-            return $res;
-        }
-
-        return preg_replace('/^{[0-9]+}\r\n/', '', $res);
-    }
-
-    /**
-     * Sets the active script, i.e. the one that gets run on new mail by the
-     * server.
-     *
-     * @param string $scriptname The name of the script to mark as active.
-     *
-     * @return boolean  True on success, PEAR_Error otherwise.
-    */
-    function _cmdSetActive($scriptname)
-    {
-        if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
-            return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
-        }
-
-        if (PEAR::isError($res = $this->_doCmd(sprintf('SETACTIVE %s', $this->_escape($scriptname))))) {
-            return $res;
-        }
-
-        $this->_activeScript = $scriptname;
-        return true;
-    }
-
-    /**
-     * Returns the list of scripts on the server.
-     *
-     * @return array  An array with the list of scripts in the first element
-     *                and the active script in the second element on success,
-     *                PEAR_Error otherwise.
-     */
-    function _cmdListScripts()
-    {
-        if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
-            return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
-        }
-
-        if (PEAR::isError($res = $this->_doCmd('LISTSCRIPTS'))) {
-            return $res;
-        }
-
-        $scripts = array();
-        $activescript = null;
-        $res = explode("\r\n", $res);
-        foreach ($res as $value) {
-            if (preg_match('/^"(.*)"( ACTIVE)?$/i', $value, $matches)) {
-                $script_name = stripslashes($matches[1]);
-                $scripts[] = $script_name;
-                if (!empty($matches[2])) {
-                    $activescript = $script_name;
-                }
-            }
-        }
-
-        return array($scripts, $activescript);
-    }
-
-    /**
-     * Adds a script to the server.
-     *
-     * @param string $scriptname Name of the new script.
-     * @param string $scriptdata The new script.
-     *
-     * @return boolean  True on success, PEAR_Error otherwise.
-     */
-    function _cmdPutScript($scriptname, $scriptdata)
-    {
-        if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
-            return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
-        }
-
-        $stringLength = $this->_getLineLength($scriptdata);
-        $command      = sprintf("PUTSCRIPT %s {%d+}\r\n%s",
-                                $this->_escape($scriptname),
-                                $stringLength,
-                                $scriptdata);
-        if (PEAR::isError($res = $this->_doCmd($command))) {
-            return $res;
-        }
-
-        return true;
-    }
-
-    /**
-     * Logs out of the server and terminates the connection.
-     *
-     * @param boolean $sendLogoutCMD Whether to send LOGOUT command before
-     *                               disconnecting.
-     *
-     * @return boolean  True on success, PEAR_Error otherwise.
-     */
-    function _cmdLogout($sendLogoutCMD = true)
-    {
-        if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
-            return PEAR::raiseError('Not currently connected', 1);
-        }
-
-        if ($sendLogoutCMD) {
-            if (PEAR::isError($res = $this->_doCmd('LOGOUT'))) {
-                return $res;
-            }
-        }
-
-        $this->_sock->disconnect();
-        $this->_state = NET_SIEVE_STATE_DISCONNECTED;
-
-        return true;
-    }
-
-    /**
-     * Sends the CAPABILITY command
-     *
-     * @return boolean  True on success, PEAR_Error otherwise.
-     */
-    function _cmdCapability()
-    {
-        if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
-            return PEAR::raiseError('Not currently connected', 1);
-        }
-        if (PEAR::isError($res = $this->_doCmd('CAPABILITY'))) {
-            return $res;
-        }
-        $this->_parseCapability($res);
-        return true;
-    }
-
-    /**
-     * Parses the response from the CAPABILITY command and stores the result
-     * in $_capability.
-     *
-     * @param string $data The response from the capability command.
-     *
-     * @return void
-     */
-    function _parseCapability($data)
-    {
-        // Clear the cached capabilities.
-        $this->_capability = array('sasl' => array(),
-                                   'extensions' => array());
-
-        $data = preg_split('/\r?\n/', $this->_toUpper($data), -1, PREG_SPLIT_NO_EMPTY);
-
-        for ($i = 0; $i < count($data); $i++) {
-            if (!preg_match('/^"([A-Z]+)"( "(.*)")?$/', $data[$i], $matches)) {
-                continue;
-            }
-            switch ($matches[1]) {
-            case 'IMPLEMENTATION':
-                $this->_capability['implementation'] = $matches[3];
-                break;
-
-            case 'SASL':
-                $this->_capability['sasl'] = preg_split('/\s+/', $matches[3]);
-                break;
-
-            case 'SIEVE':
-                $this->_capability['extensions'] = preg_split('/\s+/', $matches[3]);
-                break;
-
-            case 'STARTTLS':
-                $this->_capability['starttls'] = true;
-                break;
-            }
-        }
-    }
-
-    /**
-     * Sends a command to the server
-     *
-     * @param string $cmd The command to send.
-     *
-     * @return void
-     */
-    function _sendCmd($cmd)
-    {
-        $status = $this->_sock->getStatus();
-        if (PEAR::isError($status) || $status['eof']) {
-            return PEAR::raiseError('Failed to write to socket: connection lost');
-        }
-        if (PEAR::isError($error = $this->_sock->write($cmd . "\r\n"))) {
-            return PEAR::raiseError(
-                'Failed to write to socket: ' . $error->getMessage()
-            );
-        }
-        $this->_debug("C: $cmd");
-    }
-
-    /**
-     * Sends a string response to the server.
-     *
-     * @param string $str The string to send.
-     *
-     * @return void
-     */
-    function _sendStringResponse($str)
-    {
-        return $this->_sendCmd('{' . $this->_getLineLength($str) . "+}\r\n" . $str);
-    }
-
-    /**
-     * Receives a single line from the server.
-     *
-     * @return string  The server response line.
-     */
-    function _recvLn()
-    {
-        if (PEAR::isError($lastline = $this->_sock->gets(8192))) {
-            return PEAR::raiseError(
-                'Failed to read from socket: ' . $lastline->getMessage()
-            );
-        }
-
-        $lastline = rtrim($lastline);
-        $this->_debug("S: $lastline");
-
-        if ($lastline === '') {
-            return PEAR::raiseError('Failed to read from socket');
-        }
-
-        return $lastline;
-    }
-
-    /**
-     * Receives a number of bytes from the server.
-     *
-     * @param integer $length  Number of bytes to read.
-     *
-     * @return string  The server response.
-     */
-    function _recvBytes($length)
-    {
-        $response = '';
-        $response_length = 0;
-        while ($response_length < $length) {
-            $response .= $this->_sock->read($length - $response_length);
-            $response_length = $this->_getLineLength($response);
-        }
-        $this->_debug('S: ' . rtrim($response));
-        return $response;
-    }
-
-    /**
-     * Send a command and retrieves a response from the server.
-     *
-     * @param string $cmd   The command to send.
-     * @param boolean $auth Whether this is an authentication command.
-     *
-     * @return string|PEAR_Error  Reponse string if an OK response, PEAR_Error
-     *                            if a NO response.
-     */
-    function _doCmd($cmd = '', $auth = false)
-    {
-        $referralCount = 0;
-        while ($referralCount < $this->_maxReferralCount) {
-            if (strlen($cmd)) {
-                if (PEAR::isError($error = $this->_sendCmd($cmd))) {
-                    return $error;
-                }
-            }
-
-            $response = '';
-            while (true) {
-                if (PEAR::isError($line = $this->_recvLn())) {
-                    return $line;
-                }
-                $uc_line = $this->_toUpper($line);
-
-                if ('OK' == substr($uc_line, 0, 2)) {
-                    $response .= $line;
-                    return rtrim($response);
-                }
-
-                if ('NO' == substr($uc_line, 0, 2)) {
-                    // Check for string literal error message.
-                    if (preg_match('/{([0-9]+)}$/', $line, $matches)) {
-                        $line = substr($line, 0, -(strlen($matches[1])+2))
-                            . str_replace(
-                                "\r\n", ' ', $this->_recvBytes($matches[1] + 2)
-                            );
-                    }
-                    return PEAR::raiseError(trim($response . substr($line, 2)), 3);
-                }
-
-                if ('BYE' == substr($uc_line, 0, 3)) {
-                    if (PEAR::isError($error = $this->disconnect(false))) {
-                        return PEAR::raiseError(
-                            'Cannot handle BYE, the error was: '
-                            . $error->getMessage(),
-                            4
-                        );
-                    }
-                    // Check for referral, then follow it.  Otherwise, carp an
-                    // error.
-                    if (preg_match('/^bye \(referral "(sieve:\/\/)?([^"]+)/i', $line, $matches)) {
-                        // Replace the old host with the referral host
-                        // preserving any protocol prefix.
-                        $this->_data['host'] = preg_replace(
-                            '/\w+(?!(\w|\:\/\/)).*/', $matches[2],
-                            $this->_data['host']
-                        );
-                        if (PEAR::isError($error = $this->_handleConnectAndLogin())) {
-                            return PEAR::raiseError(
-                                'Cannot follow referral to '
-                                . $this->_data['host'] . ', the error was: '
-                                . $error->getMessage(),
-                                5
-                            );
-                        }
-                        break;
-                    }
-                    return PEAR::raiseError(trim($response . $line), 6);
-                }
-
-                if (preg_match('/^{([0-9]+)}/', $line, $matches)) {
-                    // Matches literal string responses.
-                    $line = $this->_recvBytes($matches[1] + 2);
-                    if (!$auth) {
-                        // Receive the pending OK only if we aren't
-                        // authenticating since string responses during
-                        // authentication don't need an OK.
-                        $this->_recvLn();
-                    }
-                    return $line;
-                }
-
-                if ($auth) {
-                    // String responses during authentication don't need an
-                    // OK.
-                    $response .= $line;
-                    return rtrim($response);
-                }
-
-                $response .= $line . "\r\n";
-                $referralCount++;
-            }
-        }
-
-        return PEAR::raiseError('Max referral count (' . $referralCount . ') reached. Cyrus murder loop error?', 7);
-    }
-
-    /**
-     * Returns the name of the best authentication method that the server
-     * has advertised.
-     *
-     * @param string $userMethod Only consider this method as available.
-     *
-     * @return string  The name of the best supported authentication method or
-     *                 a PEAR_Error object on failure.
-     */
-    function _getBestAuthMethod($userMethod = null)
-    {
-        if (!isset($this->_capability['sasl'])) {
-            return PEAR::raiseError('This server doesn\'t support any authentication methods. SASL problem?');
-        }
-        if (!$this->_capability['sasl']) {
-            return PEAR::raiseError('This server doesn\'t support any authentication methods.');
-        }
-
-        if ($userMethod) {
-            if (in_array($userMethod, $this->_capability['sasl'])) {
-                return $userMethod;
-            }
-            return PEAR::raiseError(
-                sprintf('No supported authentication method found. The server supports these methods: %s, but we want to use: %s',
-                        implode(', ', $this->_capability['sasl']),
-                        $userMethod));
-        }
-
-        foreach ($this->supportedAuthMethods as $method) {
-            if (in_array($method, $this->_capability['sasl'])) {
-                return $method;
-            }
-        }
-
-        return PEAR::raiseError(
-            sprintf('No supported authentication method found. The server supports these methods: %s, but we only support: %s',
-                    implode(', ', $this->_capability['sasl']),
-                    implode(', ', $this->supportedAuthMethods)));
-    }
-
-    /**
-     * Starts a TLS connection.
-     *
-     * @return boolean  True on success, PEAR_Error on failure.
-     */
-    function _startTLS()
-    {
-        if (PEAR::isError($res = $this->_doCmd('STARTTLS'))) {
-            return $res;
-        }
-
-        if (!stream_socket_enable_crypto($this->_sock->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
-            return PEAR::raiseError('Failed to establish TLS connection', 2);
-        }
-
-        $this->_debug('STARTTLS negotiation successful');
-
-        // The server should be sending a CAPABILITY response after
-        // negotiating TLS. Read it, and ignore if it doesn't.
-        // Unfortunately old Cyrus versions are broken and don't send a
-        // CAPABILITY response, thus we would wait here forever. Parse the
-        // Cyrus version and work around this broken behavior.
-        if (!preg_match('/^CYRUS TIMSIEVED V([0-9.]+)/', $this->_capability['implementation'], $matches) ||
-            version_compare($matches[1], '2.3.10', '>=')) {
-            $this->_doCmd();
-        }
-
-        // Query the server capabilities again now that we are under
-        // encryption.
-        if (PEAR::isError($res = $this->_cmdCapability())) {
-            return PEAR::raiseError(
-                'Failed to connect, server said: ' . $res->getMessage(), 2
-            );
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns the length of a string.
-     *
-     * @param string $string A string.
-     *
-     * @return integer  The length of the string.
-     */
-    function _getLineLength($string)
-    {
-        if (extension_loaded('mbstring')) {
-            return mb_strlen($string, 'latin1');
-        } else {
-            return strlen($string);
-        }
-    }
-
-    /**
-     * Locale independant strtoupper() implementation.
-     *
-     * @param string $string The string to convert to lowercase.
-     *
-     * @return string  The lowercased string, based on ASCII encoding.
-     */
-    function _toUpper($string)
-    {
-        $language = setlocale(LC_CTYPE, 0);
-        setlocale(LC_CTYPE, 'C');
-        $string = strtoupper($string);
-        setlocale(LC_CTYPE, $language);
-        return $string;
-    }
-
-    /**
-     * Converts strings into RFC's quoted-string or literal-c2s form.
-     *
-     * @param string $string  The string to convert.
-     *
-     * @return string  Result string.
-     */
-    function _escape($string)
-    {
-        // Some implementations don't allow UTF-8 characters in quoted-string,
-        // use literal-c2s.
-        if (preg_match('/[^\x01-\x09\x0B-\x0C\x0E-\x7F]/', $string)) {
-            return sprintf("{%d+}\r\n%s", $this->_getLineLength($string), $string);
-        }
-
-        return '"' . addcslashes($string, '\\"') . '"';
-    }
-
-    /**
-     * Write debug text to the current debug output handler.
-     *
-     * @param string $message Debug message text.
-     *
-     * @return void
-     */
-    function _debug($message)
-    {
-        if ($this->_debug) {
-            if ($this->_debug_handler) {
-                call_user_func_array($this->_debug_handler, array(&$this, $message));
-            } else {
-                echo "$message\n";
-            }
-        }
-    }
-}
diff --git a/program/lib/Net/Socket.php b/program/lib/Net/Socket.php
deleted file mode 100644
index bf1d1bb..0000000
--- a/program/lib/Net/Socket.php
+++ /dev/null
@@ -1,686 +0,0 @@
-<?php
-/**
- * Net_Socket
- *
- * PHP Version 4
- *
- * Copyright (c) 1997-2013 The PHP Group
- *
- * This source file is subject to version 2.0 of the PHP license,
- * that is bundled with this package in the file LICENSE, and is
- * available at through the world-wide-web at
- * http://www.php.net/license/2_02.txt.
- * If you did not receive a copy of the PHP license and are unable to
- * obtain it through the world-wide-web, please send a note to
- * license@php.net so we can mail you a copy immediately.
- *
- * Authors: Stig Bakken <ssb@php.net>
- *          Chuck Hagenbuch <chuck@horde.org>
- *
- * @category  Net
- * @package   Net_Socket
- * @author    Stig Bakken <ssb@php.net>
- * @author    Chuck Hagenbuch <chuck@horde.org>
- * @copyright 1997-2003 The PHP Group
- * @license   http://www.php.net/license/2_02.txt PHP 2.02
- * @link      http://pear.php.net/packages/Net_Socket
- */
-
-require_once 'PEAR.php';
-
-define('NET_SOCKET_READ', 1);
-define('NET_SOCKET_WRITE', 2);
-define('NET_SOCKET_ERROR', 4);
-
-/**
- * Generalized Socket class.
- *
- * @category  Net
- * @package   Net_Socket
- * @author    Stig Bakken <ssb@php.net>
- * @author    Chuck Hagenbuch <chuck@horde.org>
- * @copyright 1997-2003 The PHP Group
- * @license   http://www.php.net/license/2_02.txt PHP 2.02
- * @link      http://pear.php.net/packages/Net_Socket
- */
-class Net_Socket extends PEAR
-{
-    /**
-     * Socket file pointer.
-     * @var resource $fp
-     */
-    var $fp = null;
-
-    /**
-     * Whether the socket is blocking. Defaults to true.
-     * @var boolean $blocking
-     */
-    var $blocking = true;
-
-    /**
-     * Whether the socket is persistent. Defaults to false.
-     * @var boolean $persistent
-     */
-    var $persistent = false;
-
-    /**
-     * The IP address to connect to.
-     * @var string $addr
-     */
-    var $addr = '';
-
-    /**
-     * The port number to connect to.
-     * @var integer $port
-     */
-    var $port = 0;
-
-    /**
-     * Number of seconds to wait on socket operations before assuming
-     * there's no more data. Defaults to no timeout.
-     * @var integer|float $timeout
-     */
-    var $timeout = null;
-
-    /**
-     * Number of bytes to read at a time in readLine() and
-     * readAll(). Defaults to 2048.
-     * @var integer $lineLength
-     */
-    var $lineLength = 2048;
-
-    /**
-     * The string to use as a newline terminator. Usually "\r\n" or "\n".
-     * @var string $newline
-     */
-    var $newline = "\r\n";
-
-    /**
-     * Connect to the specified port. If called when the socket is
-     * already connected, it disconnects and connects again.
-     *
-     * @param string  $addr       IP address or host name (may be with protocol prefix).
-     * @param integer $port       TCP port number.
-     * @param boolean $persistent (optional) Whether the connection is
-     *                            persistent (kept open between requests
-     *                            by the web server).
-     * @param integer $timeout    (optional) Connection socket timeout.
-     * @param array   $options    See options for stream_context_create.
-     *
-     * @access public
-     *
-     * @return boolean|PEAR_Error  True on success or a PEAR_Error on failure.
-     */
-    function connect($addr, $port = 0, $persistent = null,
-                     $timeout = null, $options = null)
-    {
-        if (is_resource($this->fp)) {
-            @fclose($this->fp);
-            $this->fp = null;
-        }
-
-        if (!$addr) {
-            return $this->raiseError('$addr cannot be empty');
-        } else if (strspn($addr, ':.0123456789') == strlen($addr)) {
-            $this->addr = strpos($addr, ':') !== false ? '['.$addr.']' : $addr;
-        } else {
-            $this->addr = $addr;
-        }
-
-        $this->port = $port % 65536;
-
-        if ($persistent !== null) {
-            $this->persistent = $persistent;
-        }
-
-        $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen';
-        $errno    = 0;
-        $errstr   = '';
-
-        $old_track_errors = @ini_set('track_errors', 1);
-
-        if ($timeout <= 0) {
-            $timeout = @ini_get('default_socket_timeout');
-        }
-
-        if ($options && function_exists('stream_context_create')) {
-            $context = stream_context_create($options);
-
-            // Since PHP 5 fsockopen doesn't allow context specification
-            if (function_exists('stream_socket_client')) {
-                $flags = STREAM_CLIENT_CONNECT;
-
-                if ($this->persistent) {
-                    $flags = STREAM_CLIENT_PERSISTENT;
-                }
-
-                $addr = $this->addr . ':' . $this->port;
-                $fp   = stream_socket_client($addr, $errno, $errstr,
-                                             $timeout, $flags, $context);
-            } else {
-                $fp = @$openfunc($this->addr, $this->port, $errno,
-                                 $errstr, $timeout, $context);
-            }
-        } else {
-            $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout);
-        }
-
-        if (!$fp) {
-            if ($errno == 0 && !strlen($errstr) && isset($php_errormsg)) {
-                $errstr = $php_errormsg;
-            }
-            @ini_set('track_errors', $old_track_errors);
-            return $this->raiseError($errstr, $errno);
-        }
-
-        @ini_set('track_errors', $old_track_errors);
-        $this->fp = $fp;
-        $this->setTimeout();
-        return $this->setBlocking($this->blocking);
-    }
-
-    /**
-     * Disconnects from the peer, closes the socket.
-     *
-     * @access public
-     * @return mixed true on success or a PEAR_Error instance otherwise
-     */
-    function disconnect()
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        @fclose($this->fp);
-        $this->fp = null;
-        return true;
-    }
-
-    /**
-     * Set the newline character/sequence to use.
-     *
-     * @param string $newline  Newline character(s)
-     * @return boolean True
-     */
-    function setNewline($newline)
-    {
-        $this->newline = $newline;
-        return true;
-    }
-
-    /**
-     * Find out if the socket is in blocking mode.
-     *
-     * @access public
-     * @return boolean  The current blocking mode.
-     */
-    function isBlocking()
-    {
-        return $this->blocking;
-    }
-
-    /**
-     * Sets whether the socket connection should be blocking or
-     * not. A read call to a non-blocking socket will return immediately
-     * if there is no data available, whereas it will block until there
-     * is data for blocking sockets.
-     *
-     * @param boolean $mode True for blocking sockets, false for nonblocking.
-     *
-     * @access public
-     * @return mixed true on success or a PEAR_Error instance otherwise
-     */
-    function setBlocking($mode)
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        $this->blocking = $mode;
-        stream_set_blocking($this->fp, (int)$this->blocking);
-        return true;
-    }
-
-    /**
-     * Sets the timeout value on socket descriptor,
-     * expressed in the sum of seconds and microseconds
-     *
-     * @param integer $seconds      Seconds.
-     * @param integer $microseconds Microseconds, optional.
-     *
-     * @access public
-     * @return mixed True on success or false on failure or
-     *               a PEAR_Error instance when not connected
-     */
-    function setTimeout($seconds = null, $microseconds = null)
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        if ($seconds === null && $microseconds === null) {
-            $seconds      = (int) $this->timeout;
-            $microseconds = (int) (($this->timeout - $seconds) * 1000000);
-        } else {
-            $this->timeout = $seconds + $microseconds/1000000;
-        }
-
-        if ($this->timeout > 0) {
-            return stream_set_timeout($this->fp, (int) $seconds, (int) $microseconds);
-        }
-        else {
-            return false;
-        }
-    }
-
-    /**
-     * Sets the file buffering size on the stream.
-     * See php's stream_set_write_buffer for more information.
-     *
-     * @param integer $size Write buffer size.
-     *
-     * @access public
-     * @return mixed on success or an PEAR_Error object otherwise
-     */
-    function setWriteBuffer($size)
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        $returned = stream_set_write_buffer($this->fp, $size);
-        if ($returned == 0) {
-            return true;
-        }
-        return $this->raiseError('Cannot set write buffer.');
-    }
-
-    /**
-     * Returns information about an existing socket resource.
-     * Currently returns four entries in the result array:
-     *
-     * <p>
-     * timed_out (bool) - The socket timed out waiting for data<br>
-     * blocked (bool) - The socket was blocked<br>
-     * eof (bool) - Indicates EOF event<br>
-     * unread_bytes (int) - Number of bytes left in the socket buffer<br>
-     * </p>
-     *
-     * @access public
-     * @return mixed Array containing information about existing socket
-     *               resource or a PEAR_Error instance otherwise
-     */
-    function getStatus()
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        return stream_get_meta_data($this->fp);
-    }
-
-    /**
-     * Get a specified line of data
-     *
-     * @param int $size Reading ends when size - 1 bytes have been read,
-     *                  or a newline or an EOF (whichever comes first).
-     *                  If no size is specified, it will keep reading from
-     *                  the stream until it reaches the end of the line.
-     *
-     * @access public
-     * @return mixed $size bytes of data from the socket, or a PEAR_Error if
-     *         not connected. If an error occurs, FALSE is returned.
-     */
-    function gets($size = null)
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        if (is_null($size)) {
-            return @fgets($this->fp);
-        } else {
-            return @fgets($this->fp, $size);
-        }
-    }
-
-    /**
-     * Read a specified amount of data. This is guaranteed to return,
-     * and has the added benefit of getting everything in one fread()
-     * chunk; if you know the size of the data you're getting
-     * beforehand, this is definitely the way to go.
-     *
-     * @param integer $size The number of bytes to read from the socket.
-     *
-     * @access public
-     * @return $size bytes of data from the socket, or a PEAR_Error if
-     *         not connected.
-     */
-    function read($size)
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        return @fread($this->fp, $size);
-    }
-
-    /**
-     * Write a specified amount of data.
-     *
-     * @param string  $data      Data to write.
-     * @param integer $blocksize Amount of data to write at once.
-     *                           NULL means all at once.
-     *
-     * @access public
-     * @return mixed If the socket is not connected, returns an instance of
-     *               PEAR_Error.
-     *               If the write succeeds, returns the number of bytes written.
-     *               If the write fails, returns false.
-     *               If the socket times out, returns an instance of PEAR_Error.
-     */
-    function write($data, $blocksize = null)
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        if (is_null($blocksize) && !OS_WINDOWS) {
-            $written = @fwrite($this->fp, $data);
-
-            // Check for timeout or lost connection
-            if (!$written) {
-                $meta_data = $this->getStatus();
-
-                if (!is_array($meta_data)) {
-                    return $meta_data; // PEAR_Error
-                }
-
-                if (!empty($meta_data['timed_out'])) {
-                    return $this->raiseError('timed out');
-                }
-            }
-
-            return $written;
-        } else {
-            if (is_null($blocksize)) {
-                $blocksize = 1024;
-            }
-
-            $pos  = 0;
-            $size = strlen($data);
-            while ($pos < $size) {
-                $written = @fwrite($this->fp, substr($data, $pos, $blocksize));
-
-                // Check for timeout or lost connection
-                if (!$written) {
-                    $meta_data = $this->getStatus();
-
-                    if (!is_array($meta_data)) {
-                        return $meta_data; // PEAR_Error
-                    }
-
-                    if (!empty($meta_data['timed_out'])) {
-                        return $this->raiseError('timed out');
-                    }
-
-                    return $written;
-                }
-
-                $pos += $written;
-            }
-
-            return $pos;
-        }
-    }
-
-    /**
-     * Write a line of data to the socket, followed by a trailing newline.
-     *
-     * @param string $data Data to write
-     *
-     * @access public
-     * @return mixed fwrite() result, or PEAR_Error when not connected
-     */
-    function writeLine($data)
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        return fwrite($this->fp, $data . $this->newline);
-    }
-
-    /**
-     * Tests for end-of-file on a socket descriptor.
-     *
-     * Also returns true if the socket is disconnected.
-     *
-     * @access public
-     * @return bool
-     */
-    function eof()
-    {
-        return (!is_resource($this->fp) || feof($this->fp));
-    }
-
-    /**
-     * Reads a byte of data
-     *
-     * @access public
-     * @return 1 byte of data from the socket, or a PEAR_Error if
-     *         not connected.
-     */
-    function readByte()
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        return ord(@fread($this->fp, 1));
-    }
-
-    /**
-     * Reads a word of data
-     *
-     * @access public
-     * @return 1 word of data from the socket, or a PEAR_Error if
-     *         not connected.
-     */
-    function readWord()
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        $buf = @fread($this->fp, 2);
-        return (ord($buf[0]) + (ord($buf[1]) << 8));
-    }
-
-    /**
-     * Reads an int of data
-     *
-     * @access public
-     * @return integer  1 int of data from the socket, or a PEAR_Error if
-     *                  not connected.
-     */
-    function readInt()
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        $buf = @fread($this->fp, 4);
-        return (ord($buf[0]) + (ord($buf[1]) << 8) +
-                (ord($buf[2]) << 16) + (ord($buf[3]) << 24));
-    }
-
-    /**
-     * Reads a zero-terminated string of data
-     *
-     * @access public
-     * @return string, or a PEAR_Error if
-     *         not connected.
-     */
-    function readString()
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        $string = '';
-        while (($char = @fread($this->fp, 1)) != "\x00") {
-            $string .= $char;
-        }
-        return $string;
-    }
-
-    /**
-     * Reads an IP Address and returns it in a dot formatted string
-     *
-     * @access public
-     * @return Dot formatted string, or a PEAR_Error if
-     *         not connected.
-     */
-    function readIPAddress()
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        $buf = @fread($this->fp, 4);
-        return sprintf('%d.%d.%d.%d', ord($buf[0]), ord($buf[1]),
-                       ord($buf[2]), ord($buf[3]));
-    }
-
-    /**
-     * Read until either the end of the socket or a newline, whichever
-     * comes first. Strips the trailing newline from the returned data.
-     *
-     * @access public
-     * @return All available data up to a newline, without that
-     *         newline, or until the end of the socket, or a PEAR_Error if
-     *         not connected.
-     */
-    function readLine()
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        $line = '';
-
-        $timeout = time() + $this->timeout;
-
-        while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) {
-            $line .= @fgets($this->fp, $this->lineLength);
-            if (substr($line, -1) == "\n") {
-                return rtrim($line, $this->newline);
-            }
-        }
-        return $line;
-    }
-
-    /**
-     * Read until the socket closes, or until there is no more data in
-     * the inner PHP buffer. If the inner buffer is empty, in blocking
-     * mode we wait for at least 1 byte of data. Therefore, in
-     * blocking mode, if there is no data at all to be read, this
-     * function will never exit (unless the socket is closed on the
-     * remote end).
-     *
-     * @access public
-     *
-     * @return string  All data until the socket closes, or a PEAR_Error if
-     *                 not connected.
-     */
-    function readAll()
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        $data = '';
-        while (!feof($this->fp)) {
-            $data .= @fread($this->fp, $this->lineLength);
-        }
-        return $data;
-    }
-
-    /**
-     * Runs the equivalent of the select() system call on the socket
-     * with a timeout specified by tv_sec and tv_usec.
-     *
-     * @param integer $state   Which of read/write/error to check for.
-     * @param integer $tv_sec  Number of seconds for timeout.
-     * @param integer $tv_usec Number of microseconds for timeout.
-     *
-     * @access public
-     * @return False if select fails, integer describing which of read/write/error
-     *         are ready, or PEAR_Error if not connected.
-     */
-    function select($state, $tv_sec, $tv_usec = 0)
-    {
-        if (!is_resource($this->fp)) {
-            return $this->raiseError('not connected');
-        }
-
-        $read   = null;
-        $write  = null;
-        $except = null;
-        if ($state & NET_SOCKET_READ) {
-            $read[] = $this->fp;
-        }
-        if ($state & NET_SOCKET_WRITE) {
-            $write[] = $this->fp;
-        }
-        if ($state & NET_SOCKET_ERROR) {
-            $except[] = $this->fp;
-        }
-        if (false === ($sr = stream_select($read, $write, $except,
-                                          $tv_sec, $tv_usec))) {
-            return false;
-        }
-
-        $result = 0;
-        if (count($read)) {
-            $result |= NET_SOCKET_READ;
-        }
-        if (count($write)) {
-            $result |= NET_SOCKET_WRITE;
-        }
-        if (count($except)) {
-            $result |= NET_SOCKET_ERROR;
-        }
-        return $result;
-    }
-
-    /**
-     * Turns encryption on/off on a connected socket.
-     *
-     * @param bool    $enabled Set this parameter to true to enable encryption
-     *                         and false to disable encryption.
-     * @param integer $type    Type of encryption. See stream_socket_enable_crypto()
-     *                         for values.
-     *
-     * @see    http://se.php.net/manual/en/function.stream-socket-enable-crypto.php
-     * @access public
-     * @return false on error, true on success and 0 if there isn't enough data
-     *         and the user should try again (non-blocking sockets only).
-     *         A PEAR_Error object is returned if the socket is not
-     *         connected
-     */
-    function enableCrypto($enabled, $type)
-    {
-        if (version_compare(phpversion(), "5.1.0", ">=")) {
-            if (!is_resource($this->fp)) {
-                return $this->raiseError('not connected');
-            }
-            return @stream_socket_enable_crypto($this->fp, $enabled, $type);
-        } else {
-            $msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0';
-            return $this->raiseError($msg);
-        }
-    }
-
-}
diff --git a/program/lib/PEAR.php b/program/lib/PEAR.php
deleted file mode 100644
index f4dfd96..0000000
--- a/program/lib/PEAR.php
+++ /dev/null
@@ -1,1137 +0,0 @@
-<?php
-/**
- * PEAR, the PHP Extension and Application Repository
- *
- * PEAR class and PEAR_Error class
- *
- * PHP versions 4 and 5
- *
- * @category   pear
- * @package    PEAR
- * @author     Sterling Hughes <sterling@php.net>
- * @author     Stig Bakken <ssb@php.net>
- * @author     Tomas V.V.Cox <cox@idecnet.com>
- * @author     Greg Beaver <cellog@php.net>
- * @copyright  1997-2009 The Authors
- * @license    http://opensource.org/licenses/bsd-license.php New BSD License
- * @version    CVS: $Id$
- * @link       http://pear.php.net/package/PEAR
- * @since      File available since Release 0.1
- */
-
-/**#@+
- * ERROR constants
- */
-define('PEAR_ERROR_RETURN',     1);
-define('PEAR_ERROR_PRINT',      2);
-define('PEAR_ERROR_TRIGGER',    4);
-define('PEAR_ERROR_DIE',        8);
-define('PEAR_ERROR_CALLBACK',  16);
-/**
- * WARNING: obsolete
- * @deprecated
- */
-define('PEAR_ERROR_EXCEPTION', 32);
-/**#@-*/
-define('PEAR_ZE2', (function_exists('version_compare') &&
-                    version_compare(zend_version(), "2-dev", "ge")));
-
-if (substr(PHP_OS, 0, 3) == 'WIN') {
-    define('OS_WINDOWS', true);
-    define('OS_UNIX',    false);
-    define('PEAR_OS',    'Windows');
-} else {
-    define('OS_WINDOWS', false);
-    define('OS_UNIX',    true);
-    define('PEAR_OS',    'Unix'); // blatant assumption
-}
-
-$GLOBALS['_PEAR_default_error_mode']     = PEAR_ERROR_RETURN;
-$GLOBALS['_PEAR_default_error_options']  = E_USER_NOTICE;
-$GLOBALS['_PEAR_destructor_object_list'] = array();
-$GLOBALS['_PEAR_shutdown_funcs']         = array();
-$GLOBALS['_PEAR_error_handler_stack']    = array();
-
-@ini_set('track_errors', true);
-
-/**
- * Base class for other PEAR classes.  Provides rudimentary
- * emulation of destructors.
- *
- * If you want a destructor in your class, inherit PEAR and make a
- * destructor method called _yourclassname (same name as the
- * constructor, but with a "_" prefix).  Also, in your constructor you
- * have to call the PEAR constructor: $this->PEAR();.
- * The destructor method will be called without parameters.  Note that
- * at in some SAPI implementations (such as Apache), any output during
- * the request shutdown (in which destructors are called) seems to be
- * discarded.  If you need to get any debug information from your
- * destructor, use error_log(), syslog() or something similar.
- *
- * IMPORTANT! To use the emulated destructors you need to create the
- * objects by reference: $obj =& new PEAR_child;
- *
- * @category   pear
- * @package    PEAR
- * @author     Stig Bakken <ssb@php.net>
- * @author     Tomas V.V. Cox <cox@idecnet.com>
- * @author     Greg Beaver <cellog@php.net>
- * @copyright  1997-2006 The PHP Group
- * @license    http://opensource.org/licenses/bsd-license.php New BSD License
- * @version    Release: 1.9.0
- * @link       http://pear.php.net/package/PEAR
- * @see        PEAR_Error
- * @since      Class available since PHP 4.0.2
- * @link        http://pear.php.net/manual/en/core.pear.php#core.pear.pear
- */
-class PEAR
-{
-    // {{{ properties
-
-    /**
-     * Whether to enable internal debug messages.
-     *
-     * @var     bool
-     * @access  private
-     */
-    var $_debug = false;
-
-    /**
-     * Default error mode for this object.
-     *
-     * @var     int
-     * @access  private
-     */
-    var $_default_error_mode = null;
-
-    /**
-     * Default error options used for this object when error mode
-     * is PEAR_ERROR_TRIGGER.
-     *
-     * @var     int
-     * @access  private
-     */
-    var $_default_error_options = null;
-
-    /**
-     * Default error handler (callback) for this object, if error mode is
-     * PEAR_ERROR_CALLBACK.
-     *
-     * @var     string
-     * @access  private
-     */
-    var $_default_error_handler = '';
-
-    /**
-     * Which class to use for error objects.
-     *
-     * @var     string
-     * @access  private
-     */
-    var $_error_class = 'PEAR_Error';
-
-    /**
-     * An array of expected errors.
-     *
-     * @var     array
-     * @access  private
-     */
-    var $_expected_errors = array();
-
-    // }}}
-
-    // {{{ constructor
-
-    /**
-     * Constructor.  Registers this object in
-     * $_PEAR_destructor_object_list for destructor emulation if a
-     * destructor object exists.
-     *
-     * @param string $error_class  (optional) which class to use for
-     *        error objects, defaults to PEAR_Error.
-     * @access public
-     * @return void
-     */
-    function PEAR($error_class = null)
-    {
-        $classname = strtolower(get_class($this));
-        if ($this->_debug) {
-            print "PEAR constructor called, class=$classname\n";
-        }
-        if ($error_class !== null) {
-            $this->_error_class = $error_class;
-        }
-        while ($classname && strcasecmp($classname, "pear")) {
-            $destructor = "_$classname";
-            if (method_exists($this, $destructor)) {
-                global $_PEAR_destructor_object_list;
-                $_PEAR_destructor_object_list[] = &$this;
-                if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
-                    register_shutdown_function("_PEAR_call_destructors");
-                    $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
-                }
-                break;
-            } else {
-                $classname = get_parent_class($classname);
-            }
-        }
-    }
-
-    // }}}
-    // {{{ destructor
-
-    /**
-     * Destructor (the emulated type of...).  Does nothing right now,
-     * but is included for forward compatibility, so subclass
-     * destructors should always call it.
-     *
-     * See the note in the class desciption about output from
-     * destructors.
-     *
-     * @access public
-     * @return void
-     */
-    function _PEAR() {
-        if ($this->_debug) {
-            printf("PEAR destructor called, class=%s\n", strtolower(get_class($this)));
-        }
-    }
-
-    // }}}
-    // {{{ getStaticProperty()
-
-    /**
-    * If you have a class that's mostly/entirely static, and you need static
-    * properties, you can use this method to simulate them. Eg. in your method(s)
-    * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar');
-    * You MUST use a reference, or they will not persist!
-    *
-    * @access public
-    * @param  string $class  The calling classname, to prevent clashes
-    * @param  string $var    The variable to retrieve.
-    * @return mixed   A reference to the variable. If not set it will be
-    *                 auto initialised to NULL.
-    */
-    function &getStaticProperty($class, $var)
-    {
-        static $properties;
-        if (!isset($properties[$class])) {
-            $properties[$class] = array();
-        }
-
-        if (!array_key_exists($var, $properties[$class])) {
-            $properties[$class][$var] = null;
-        }
-
-        return $properties[$class][$var];
-    }
-
-    // }}}
-    // {{{ registerShutdownFunc()
-
-    /**
-    * Use this function to register a shutdown method for static
-    * classes.
-    *
-    * @access public
-    * @param  mixed $func  The function name (or array of class/method) to call
-    * @param  mixed $args  The arguments to pass to the function
-    * @return void
-    */
-    function registerShutdownFunc($func, $args = array())
-    {
-        // if we are called statically, there is a potential
-        // that no shutdown func is registered.  Bug #6445
-        if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
-            register_shutdown_function("_PEAR_call_destructors");
-            $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
-        }
-        $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args);
-    }
-
-    // }}}
-    // {{{ isError()
-
-    /**
-     * Tell whether a value is a PEAR error.
-     *
-     * @param   mixed $data   the value to test
-     * @param   int   $code   if $data is an error object, return true
-     *                        only if $code is a string and
-     *                        $obj->getMessage() == $code or
-     *                        $code is an integer and $obj->getCode() == $code
-     * @access  public
-     * @return  bool    true if parameter is an error
-     */
-    static function isError($data, $code = null)
-    {
-        if (!is_object($data) || !is_a($data, 'PEAR_Error')) {
-            return false;
-        }
-
-        if (is_null($code)) {
-            return true;
-        } elseif (is_string($code)) {
-            return $data->getMessage() == $code;
-        }
-
-        return $data->getCode() == $code;
-    }
-
-    // }}}
-    // {{{ setErrorHandling()
-
-    /**
-     * Sets how errors generated by this object should be handled.
-     * Can be invoked both in objects and statically.  If called
-     * statically, setErrorHandling sets the default behaviour for all
-     * PEAR objects.  If called in an object, setErrorHandling sets
-     * the default behaviour for that object.
-     *
-     * @param int $mode
-     *        One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
-     *        PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
-     *        PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION.
-     *
-     * @param mixed $options
-     *        When $mode is PEAR_ERROR_TRIGGER, this is the error level (one
-     *        of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
-     *
-     *        When $mode is PEAR_ERROR_CALLBACK, this parameter is expected
-     *        to be the callback function or method.  A callback
-     *        function is a string with the name of the function, a
-     *        callback method is an array of two elements: the element
-     *        at index 0 is the object, and the element at index 1 is
-     *        the name of the method to call in the object.
-     *
-     *        When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is
-     *        a printf format string used when printing the error
-     *        message.
-     *
-     * @access public
-     * @return void
-     * @see PEAR_ERROR_RETURN
-     * @see PEAR_ERROR_PRINT
-     * @see PEAR_ERROR_TRIGGER
-     * @see PEAR_ERROR_DIE
-     * @see PEAR_ERROR_CALLBACK
-     * @see PEAR_ERROR_EXCEPTION
-     *
-     * @since PHP 4.0.5
-     */
-
-    function setErrorHandling($mode = null, $options = null)
-    {
-        if (isset($this) && is_a($this, 'PEAR')) {
-            $setmode     = &$this->_default_error_mode;
-            $setoptions  = &$this->_default_error_options;
-        } else {
-            $setmode     = &$GLOBALS['_PEAR_default_error_mode'];
-            $setoptions  = &$GLOBALS['_PEAR_default_error_options'];
-        }
-
-        switch ($mode) {
-            case PEAR_ERROR_EXCEPTION:
-            case PEAR_ERROR_RETURN:
-            case PEAR_ERROR_PRINT:
-            case PEAR_ERROR_TRIGGER:
-            case PEAR_ERROR_DIE:
-            case null:
-                $setmode = $mode;
-                $setoptions = $options;
-                break;
-
-            case PEAR_ERROR_CALLBACK:
-                $setmode = $mode;
-                // class/object method callback
-                if (is_callable($options)) {
-                    $setoptions = $options;
-                } else {
-                    trigger_error("invalid error callback", E_USER_WARNING);
-                }
-                break;
-
-            default:
-                trigger_error("invalid error mode", E_USER_WARNING);
-                break;
-        }
-    }
-
-    // }}}
-    // {{{ expectError()
-
-    /**
-     * This method is used to tell which errors you expect to get.
-     * Expected errors are always returned with error mode
-     * PEAR_ERROR_RETURN.  Expected error codes are stored in a stack,
-     * and this method pushes a new element onto it.  The list of
-     * expected errors are in effect until they are popped off the
-     * stack with the popExpect() method.
-     *
-     * Note that this method can not be called statically
-     *
-     * @param mixed $code a single error code or an array of error codes to expect
-     *
-     * @return int     the new depth of the "expected errors" stack
-     * @access public
-     */
-    function expectError($code = '*')
-    {
-        if (is_array($code)) {
-            array_push($this->_expected_errors, $code);
-        } else {
-            array_push($this->_expected_errors, array($code));
-        }
-        return sizeof($this->_expected_errors);
-    }
-
-    // }}}
-    // {{{ popExpect()
-
-    /**
-     * This method pops one element off the expected error codes
-     * stack.
-     *
-     * @return array   the list of error codes that were popped
-     */
-    function popExpect()
-    {
-        return array_pop($this->_expected_errors);
-    }
-
-    // }}}
-    // {{{ _checkDelExpect()
-
-    /**
-     * This method checks unsets an error code if available
-     *
-     * @param mixed error code
-     * @return bool true if the error code was unset, false otherwise
-     * @access private
-     * @since PHP 4.3.0
-     */
-    function _checkDelExpect($error_code)
-    {
-        $deleted = false;
-
-        foreach ($this->_expected_errors AS $key => $error_array) {
-            if (in_array($error_code, $error_array)) {
-                unset($this->_expected_errors[$key][array_search($error_code, $error_array)]);
-                $deleted = true;
-            }
-
-            // clean up empty arrays
-            if (0 == count($this->_expected_errors[$key])) {
-                unset($this->_expected_errors[$key]);
-            }
-        }
-        return $deleted;
-    }
-
-    // }}}
-    // {{{ delExpect()
-
-    /**
-     * This method deletes all occurences of the specified element from
-     * the expected error codes stack.
-     *
-     * @param  mixed $error_code error code that should be deleted
-     * @return mixed list of error codes that were deleted or error
-     * @access public
-     * @since PHP 4.3.0
-     */
-    function delExpect($error_code)
-    {
-        $deleted = false;
-        if ((is_array($error_code) && (0 != count($error_code)))) {
-            // $error_code is a non-empty array here;
-            // we walk through it trying to unset all
-            // values
-            foreach($error_code as $key => $error) {
-                if ($this->_checkDelExpect($error)) {
-                    $deleted =  true;
-                } else {
-                    $deleted = false;
-                }
-            }
-            return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
-        } elseif (!empty($error_code)) {
-            // $error_code comes alone, trying to unset it
-            if ($this->_checkDelExpect($error_code)) {
-                return true;
-            } else {
-                return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
-            }
-        }
-
-        // $error_code is empty
-        return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME
-    }
-
-    // }}}
-    // {{{ raiseError()
-
-    /**
-     * This method is a wrapper that returns an instance of the
-     * configured error class with this object's default error
-     * handling applied.  If the $mode and $options parameters are not
-     * specified, the object's defaults are used.
-     *
-     * @param mixed $message a text error message or a PEAR error object
-     *
-     * @param int $code      a numeric error code (it is up to your class
-     *                  to define these if you want to use codes)
-     *
-     * @param int $mode      One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
-     *                  PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
-     *                  PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION.
-     *
-     * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter
-     *                  specifies the PHP-internal error level (one of
-     *                  E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
-     *                  If $mode is PEAR_ERROR_CALLBACK, this
-     *                  parameter specifies the callback function or
-     *                  method.  In other error modes this parameter
-     *                  is ignored.
-     *
-     * @param string $userinfo If you need to pass along for example debug
-     *                  information, this parameter is meant for that.
-     *
-     * @param string $error_class The returned error object will be
-     *                  instantiated from this class, if specified.
-     *
-     * @param bool $skipmsg If true, raiseError will only pass error codes,
-     *                  the error message parameter will be dropped.
-     *
-     * @access public
-     * @return object   a PEAR error object
-     * @see PEAR::setErrorHandling
-     * @since PHP 4.0.5
-     */
-    function &raiseError($message = null,
-                         $code = null,
-                         $mode = null,
-                         $options = null,
-                         $userinfo = null,
-                         $error_class = null,
-                         $skipmsg = false)
-    {
-        // The error is yet a PEAR error object
-        if (is_object($message)) {
-            $code        = $message->getCode();
-            $userinfo    = $message->getUserInfo();
-            $error_class = $message->getType();
-            $message->error_message_prefix = '';
-            $message     = $message->getMessage();
-        }
-
-        if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) {
-            if ($exp[0] == "*" ||
-                (is_int(reset($exp)) && in_array($code, $exp)) ||
-                (is_string(reset($exp)) && in_array($message, $exp))) {
-                $mode = PEAR_ERROR_RETURN;
-            }
-        }
-
-        // No mode given, try global ones
-        if ($mode === null) {
-            // Class error handler
-            if (isset($this) && isset($this->_default_error_mode)) {
-                $mode    = $this->_default_error_mode;
-                $options = $this->_default_error_options;
-            // Global error handler
-            } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) {
-                $mode    = $GLOBALS['_PEAR_default_error_mode'];
-                $options = $GLOBALS['_PEAR_default_error_options'];
-            }
-        }
-
-        if ($error_class !== null) {
-            $ec = $error_class;
-        } elseif (isset($this) && isset($this->_error_class)) {
-            $ec = $this->_error_class;
-        } else {
-            $ec = 'PEAR_Error';
-        }
-
-        if (intval(PHP_VERSION) < 5) {
-            // little non-eval hack to fix bug #12147
-            include 'PEAR/FixPHP5PEARWarnings.php';
-            return $a;
-        }
-
-        if ($skipmsg) {
-            $a = new $ec($code, $mode, $options, $userinfo);
-        } else {
-            $a = new $ec($message, $code, $mode, $options, $userinfo);
-        }
-
-        return $a;
-    }
-
-    // }}}
-    // {{{ throwError()
-
-    /**
-     * Simpler form of raiseError with fewer options.  In most cases
-     * message, code and userinfo are enough.
-     *
-     * @param string $message
-     *
-     */
-    function &throwError($message = null,
-                         $code = null,
-                         $userinfo = null)
-    {
-        if (isset($this) && is_a($this, 'PEAR')) {
-            $a = &$this->raiseError($message, $code, null, null, $userinfo);
-            return $a;
-        }
-
-        $a = &PEAR::raiseError($message, $code, null, null, $userinfo);
-        return $a;
-    }
-
-    // }}}
-    function staticPushErrorHandling($mode, $options = null)
-    {
-        $stack = &$GLOBALS['_PEAR_error_handler_stack'];
-        $def_mode    = &$GLOBALS['_PEAR_default_error_mode'];
-        $def_options = &$GLOBALS['_PEAR_default_error_options'];
-        $stack[] = array($def_mode, $def_options);
-        switch ($mode) {
-            case PEAR_ERROR_EXCEPTION:
-            case PEAR_ERROR_RETURN:
-            case PEAR_ERROR_PRINT:
-            case PEAR_ERROR_TRIGGER:
-            case PEAR_ERROR_DIE:
-            case null:
-                $def_mode = $mode;
-                $def_options = $options;
-                break;
-
-            case PEAR_ERROR_CALLBACK:
-                $def_mode = $mode;
-                // class/object method callback
-                if (is_callable($options)) {
-                    $def_options = $options;
-                } else {
-                    trigger_error("invalid error callback", E_USER_WARNING);
-                }
-                break;
-
-            default:
-                trigger_error("invalid error mode", E_USER_WARNING);
-                break;
-        }
-        $stack[] = array($mode, $options);
-        return true;
-    }
-
-    function staticPopErrorHandling()
-    {
-        $stack = &$GLOBALS['_PEAR_error_handler_stack'];
-        $setmode     = &$GLOBALS['_PEAR_default_error_mode'];
-        $setoptions  = &$GLOBALS['_PEAR_default_error_options'];
-        array_pop($stack);
-        list($mode, $options) = $stack[sizeof($stack) - 1];
-        array_pop($stack);
-        switch ($mode) {
-            case PEAR_ERROR_EXCEPTION:
-            case PEAR_ERROR_RETURN:
-            case PEAR_ERROR_PRINT:
-            case PEAR_ERROR_TRIGGER:
-            case PEAR_ERROR_DIE:
-            case null:
-                $setmode = $mode;
-                $setoptions = $options;
-                break;
-
-            case PEAR_ERROR_CALLBACK:
-                $setmode = $mode;
-                // class/object method callback
-                if (is_callable($options)) {
-                    $setoptions = $options;
-                } else {
-                    trigger_error("invalid error callback", E_USER_WARNING);
-                }
-                break;
-
-            default:
-                trigger_error("invalid error mode", E_USER_WARNING);
-                break;
-        }
-        return true;
-    }
-
-    // {{{ pushErrorHandling()
-
-    /**
-     * Push a new error handler on top of the error handler options stack. With this
-     * you can easily override the actual error handler for some code and restore
-     * it later with popErrorHandling.
-     *
-     * @param mixed $mode (same as setErrorHandling)
-     * @param mixed $options (same as setErrorHandling)
-     *
-     * @return bool Always true
-     *
-     * @see PEAR::setErrorHandling
-     */
-    function pushErrorHandling($mode, $options = null)
-    {
-        $stack = &$GLOBALS['_PEAR_error_handler_stack'];
-        if (isset($this) && is_a($this, 'PEAR')) {
-            $def_mode    = &$this->_default_error_mode;
-            $def_options = &$this->_default_error_options;
-        } else {
-            $def_mode    = &$GLOBALS['_PEAR_default_error_mode'];
-            $def_options = &$GLOBALS['_PEAR_default_error_options'];
-        }
-        $stack[] = array($def_mode, $def_options);
-
-        if (isset($this) && is_a($this, 'PEAR')) {
-            $this->setErrorHandling($mode, $options);
-        } else {
-            PEAR::setErrorHandling($mode, $options);
-        }
-        $stack[] = array($mode, $options);
-        return true;
-    }
-
-    // }}}
-    // {{{ popErrorHandling()
-
-    /**
-    * Pop the last error handler used
-    *
-    * @return bool Always true
-    *
-    * @see PEAR::pushErrorHandling
-    */
-    function popErrorHandling()
-    {
-        $stack = &$GLOBALS['_PEAR_error_handler_stack'];
-        array_pop($stack);
-        list($mode, $options) = $stack[sizeof($stack) - 1];
-        array_pop($stack);
-        if (isset($this) && is_a($this, 'PEAR')) {
-            $this->setErrorHandling($mode, $options);
-        } else {
-            PEAR::setErrorHandling($mode, $options);
-        }
-        return true;
-    }
-
-    // }}}
-    // {{{ loadExtension()
-
-    /**
-    * OS independant PHP extension load. Remember to take care
-    * on the correct extension name for case sensitive OSes.
-    *
-    * @param string $ext The extension name
-    * @return bool Success or not on the dl() call
-    */
-    function loadExtension($ext)
-    {
-        if (!extension_loaded($ext)) {
-            // if either returns true dl() will produce a FATAL error, stop that
-            if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) {
-                return false;
-            }
-
-            if (OS_WINDOWS) {
-                $suffix = '.dll';
-            } elseif (PHP_OS == 'HP-UX') {
-                $suffix = '.sl';
-            } elseif (PHP_OS == 'AIX') {
-                $suffix = '.a';
-            } elseif (PHP_OS == 'OSX') {
-                $suffix = '.bundle';
-            } else {
-                $suffix = '.so';
-            }
-
-            return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix);
-        }
-
-        return true;
-    }
-
-    // }}}
-}
-
-if (PEAR_ZE2) {
-    include_once 'PEAR5.php';
-}
-
-// {{{ _PEAR_call_destructors()
-
-function _PEAR_call_destructors()
-{
-    global $_PEAR_destructor_object_list;
-    if (is_array($_PEAR_destructor_object_list) &&
-        sizeof($_PEAR_destructor_object_list))
-    {
-        reset($_PEAR_destructor_object_list);
-        if (PEAR_ZE2) {
-            $destructLifoExists = PEAR5::getStaticProperty('PEAR', 'destructlifo');
-        } else {
-            $destructLifoExists = PEAR::getStaticProperty('PEAR', 'destructlifo');
-        }
-
-        if ($destructLifoExists) {
-            $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list);
-        }
-
-        while (list($k, $objref) = each($_PEAR_destructor_object_list)) {
-            $classname = get_class($objref);
-            while ($classname) {
-                $destructor = "_$classname";
-                if (method_exists($objref, $destructor)) {
-                    $objref->$destructor();
-                    break;
-                } else {
-                    $classname = get_parent_class($classname);
-                }
-            }
-        }
-        // Empty the object list to ensure that destructors are
-        // not called more than once.
-        $_PEAR_destructor_object_list = array();
-    }
-
-    // Now call the shutdown functions
-    if (isset($GLOBALS['_PEAR_shutdown_funcs']) AND is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) {
-        foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) {
-            call_user_func_array($value[0], $value[1]);
-        }
-    }
-}
-
-// }}}
-/**
- * Standard PEAR error class for PHP 4
- *
- * This class is supserseded by {@link PEAR_Exception} in PHP 5
- *
- * @category   pear
- * @package    PEAR
- * @author     Stig Bakken <ssb@php.net>
- * @author     Tomas V.V. Cox <cox@idecnet.com>
- * @author     Gregory Beaver <cellog@php.net>
- * @copyright  1997-2006 The PHP Group
- * @license    http://opensource.org/licenses/bsd-license.php New BSD License
- * @version    Release: 1.9.0
- * @link       http://pear.php.net/manual/en/core.pear.pear-error.php
- * @see        PEAR::raiseError(), PEAR::throwError()
- * @since      Class available since PHP 4.0.2
- */
-class PEAR_Error
-{
-    // {{{ properties
-
-    var $error_message_prefix = '';
-    var $mode                 = PEAR_ERROR_RETURN;
-    var $level                = E_USER_NOTICE;
-    var $code                 = -1;
-    var $message              = '';
-    var $userinfo             = '';
-    var $backtrace            = null;
-
-    // }}}
-    // {{{ constructor
-
-    /**
-     * PEAR_Error constructor
-     *
-     * @param string $message  message
-     *
-     * @param int $code     (optional) error code
-     *
-     * @param int $mode     (optional) error mode, one of: PEAR_ERROR_RETURN,
-     * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER,
-     * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION
-     *
-     * @param mixed $options   (optional) error level, _OR_ in the case of
-     * PEAR_ERROR_CALLBACK, the callback function or object/method
-     * tuple.
-     *
-     * @param string $userinfo (optional) additional user/debug info
-     *
-     * @access public
-     *
-     */
-    function PEAR_Error($message = 'unknown error', $code = null,
-                        $mode = null, $options = null, $userinfo = null)
-    {
-        if ($mode === null) {
-            $mode = PEAR_ERROR_RETURN;
-        }
-        $this->message   = $message;
-        $this->code      = $code;
-        $this->mode      = $mode;
-        $this->userinfo  = $userinfo;
-
-        if (PEAR_ZE2) {
-            $skiptrace = PEAR5::getStaticProperty('PEAR_Error', 'skiptrace');
-        } else {
-            $skiptrace = PEAR::getStaticProperty('PEAR_Error', 'skiptrace');
-        }
-
-        if (!$skiptrace) {
-            $this->backtrace = debug_backtrace();
-            if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) {
-                unset($this->backtrace[0]['object']);
-            }
-        }
-
-        if ($mode & PEAR_ERROR_CALLBACK) {
-            $this->level = E_USER_NOTICE;
-            $this->callback = $options;
-        } else {
-            if ($options === null) {
-                $options = E_USER_NOTICE;
-            }
-
-            $this->level = $options;
-            $this->callback = null;
-        }
-
-        if ($this->mode & PEAR_ERROR_PRINT) {
-            if (is_null($options) || is_int($options)) {
-                $format = "%s";
-            } else {
-                $format = $options;
-            }
-
-            printf($format, $this->getMessage());
-        }
-
-        if ($this->mode & PEAR_ERROR_TRIGGER) {
-            trigger_error($this->getMessage(), $this->level);
-        }
-
-        if ($this->mode & PEAR_ERROR_DIE) {
-            $msg = $this->getMessage();
-            if (is_null($options) || is_int($options)) {
-                $format = "%s";
-                if (substr($msg, -1) != "\n") {
-                    $msg .= "\n";
-                }
-            } else {
-                $format = $options;
-            }
-            die(sprintf($format, $msg));
-        }
-
-        if ($this->mode & PEAR_ERROR_CALLBACK) {
-            if (is_callable($this->callback)) {
-                call_user_func($this->callback, $this);
-            }
-        }
-
-        if ($this->mode & PEAR_ERROR_EXCEPTION) {
-            trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING);
-            eval('$e = new Exception($this->message, $this->code);throw($e);');
-        }
-    }
-
-    // }}}
-    // {{{ getMode()
-
-    /**
-     * Get the error mode from an error object.
-     *
-     * @return int error mode
-     * @access public
-     */
-    function getMode() {
-        return $this->mode;
-    }
-
-    // }}}
-    // {{{ getCallback()
-
-    /**
-     * Get the callback function/method from an error object.
-     *
-     * @return mixed callback function or object/method array
-     * @access public
-     */
-    function getCallback() {
-        return $this->callback;
-    }
-
-    // }}}
-    // {{{ getMessage()
-
-
-    /**
-     * Get the error message from an error object.
-     *
-     * @return  string  full error message
-     * @access public
-     */
-    function getMessage()
-    {
-        return ($this->error_message_prefix . $this->message);
-    }
-
-
-    // }}}
-    // {{{ getCode()
-
-    /**
-     * Get error code from an error object
-     *
-     * @return int error code
-     * @access public
-     */
-     function getCode()
-     {
-        return $this->code;
-     }
-
-    // }}}
-    // {{{ getType()
-
-    /**
-     * Get the name of this error/exception.
-     *
-     * @return string error/exception name (type)
-     * @access public
-     */
-    function getType()
-    {
-        return get_class($this);
-    }
-
-    // }}}
-    // {{{ getUserInfo()
-
-    /**
-     * Get additional user-supplied information.
-     *
-     * @return string user-supplied information
-     * @access public
-     */
-    function getUserInfo()
-    {
-        return $this->userinfo;
-    }
-
-    // }}}
-    // {{{ getDebugInfo()
-
-    /**
-     * Get additional debug information supplied by the application.
-     *
-     * @return string debug information
-     * @access public
-     */
-    function getDebugInfo()
-    {
-        return $this->getUserInfo();
-    }
-
-    // }}}
-    // {{{ getBacktrace()
-
-    /**
-     * Get the call backtrace from where the error was generated.
-     * Supported with PHP 4.3.0 or newer.
-     *
-     * @param int $frame (optional) what frame to fetch
-     * @return array Backtrace, or NULL if not available.
-     * @access public
-     */
-    function getBacktrace($frame = null)
-    {
-        if (defined('PEAR_IGNORE_BACKTRACE')) {
-            return null;
-        }
-        if ($frame === null) {
-            return $this->backtrace;
-        }
-        return $this->backtrace[$frame];
-    }
-
-    // }}}
-    // {{{ addUserInfo()
-
-    function addUserInfo($info)
-    {
-        if (empty($this->userinfo)) {
-            $this->userinfo = $info;
-        } else {
-            $this->userinfo .= " ** $info";
-        }
-    }
-
-    // }}}
-    // {{{ toString()
-    function __toString()
-    {
-        return $this->getMessage();
-    }
-    // }}}
-    // {{{ toString()
-
-    /**
-     * Make a string representation of this object.
-     *
-     * @return string a string with an object summary
-     * @access public
-     */
-    function toString() {
-        $modes = array();
-        $levels = array(E_USER_NOTICE  => 'notice',
-                        E_USER_WARNING => 'warning',
-                        E_USER_ERROR   => 'error');
-        if ($this->mode & PEAR_ERROR_CALLBACK) {
-            if (is_array($this->callback)) {
-                $callback = (is_object($this->callback[0]) ?
-                    strtolower(get_class($this->callback[0])) :
-                    $this->callback[0]) . '::' .
-                    $this->callback[1];
-            } else {
-                $callback = $this->callback;
-            }
-            return sprintf('[%s: message="%s" code=%d mode=callback '.
-                           'callback=%s prefix="%s" info="%s"]',
-                           strtolower(get_class($this)), $this->message, $this->code,
-                           $callback, $this->error_message_prefix,
-                           $this->userinfo);
-        }
-        if ($this->mode & PEAR_ERROR_PRINT) {
-            $modes[] = 'print';
-        }
-        if ($this->mode & PEAR_ERROR_TRIGGER) {
-            $modes[] = 'trigger';
-        }
-        if ($this->mode & PEAR_ERROR_DIE) {
-            $modes[] = 'die';
-        }
-        if ($this->mode & PEAR_ERROR_RETURN) {
-            $modes[] = 'return';
-        }
-        return sprintf('[%s: message="%s" code=%d mode=%s level=%s '.
-                       'prefix="%s" info="%s"]',
-                       strtolower(get_class($this)), $this->message, $this->code,
-                       implode("|", $modes), $levels[$this->level],
-                       $this->error_message_prefix,
-                       $this->userinfo);
-    }
-
-    // }}}
-}
-
-/*
- * Local Variables:
- * mode: php
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- */
diff --git a/program/lib/PEAR5.php b/program/lib/PEAR5.php
deleted file mode 100644
index 4286067..0000000
--- a/program/lib/PEAR5.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * This is only meant for PHP 5 to get rid of certain strict warning
- * that doesn't get hidden since it's in the shutdown function
- */
-class PEAR5
-{
-    /**
-    * If you have a class that's mostly/entirely static, and you need static
-    * properties, you can use this method to simulate them. Eg. in your method(s)
-    * do this: $myVar = &PEAR5::getStaticProperty('myclass', 'myVar');
-    * You MUST use a reference, or they will not persist!
-    *
-    * @access public
-    * @param  string $class  The calling classname, to prevent clashes
-    * @param  string $var    The variable to retrieve.
-    * @return mixed   A reference to the variable. If not set it will be
-    *                 auto initialised to NULL.
-    */
-    static function &getStaticProperty($class, $var)
-    {
-        static $properties;
-        if (!isset($properties[$class])) {
-            $properties[$class] = array();
-        }
-
-        if (!array_key_exists($var, $properties[$class])) {
-            $properties[$class][$var] = null;
-        }
-
-        return $properties[$class][$var];
-    }
-}
\ No newline at end of file
diff --git a/program/lib/Roundcube/bootstrap.php b/program/lib/Roundcube/bootstrap.php
index 65ef98e..0aa5cb1 100644
--- a/program/lib/Roundcube/bootstrap.php
+++ b/program/lib/Roundcube/bootstrap.php
@@ -464,16 +464,14 @@
             '/Net_(.+)/',
             '/Auth_(.+)/',
             '/^html_.+/',
-            '/^rcube(.*)/',
-            '/^utf8$/',
+            '/^rcube(.*)/'
         ),
         array(
             'Mail/\\1',
             'Net/\\1',
             'Auth/\\1',
             'Roundcube/html',
-            'Roundcube/rcube\\1',
-            'utf8.class',
+            'Roundcube/rcube\\1'
         ),
         $classname
     );
diff --git a/program/lib/Roundcube/rcube_charset.php b/program/lib/Roundcube/rcube_charset.php
index ffec673..d6ca3c0 100644
--- a/program/lib/Roundcube/rcube_charset.php
+++ b/program/lib/Roundcube/rcube_charset.php
@@ -273,17 +273,8 @@
             else if ($from == 'ISO-8859-1' && function_exists('utf8_encode')) {
                 return utf8_encode($str);
             }
-            else if (class_exists('utf8')) {
-                if (!$conv) {
-                    $conv = new utf8($from);
-                }
-                else {
-                    $conv->loadCharset($from);
-                }
-
-                if ($_str = $conv->strToUtf8($str)) {
-                    return $_str;
-                }
+            else  {
+                user_error("No suitable function found for UTF-8 encoding", E_USER_WARNING);
             }
         }
 
@@ -298,17 +289,8 @@
             else if ($to == 'ISO-8859-1' && function_exists('utf8_decode')) {
                 return utf8_decode($str);
             }
-            else if (class_exists('utf8')) {
-                if (!$conv) {
-                    $conv = new utf8($to);
-                }
-                else {
-                    $conv->loadCharset($from);
-                }
-
-                if ($_str = $conv->strToUtf8($str)) {
-                    return $_str;
-                }
+            else {
+                user_error("No suitable function found for UTF-8 decoding", E_USER_WARNING);
             }
         }
 
diff --git a/program/lib/encoding/CP1250.map b/program/lib/encoding/CP1250.map
deleted file mode 100644
index 081d776..0000000
--- a/program/lib/encoding/CP1250.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-#    Name:     cp1250 to Unicode table
-#    Unicode version: 2.0
-#    Table version: 2.01
-#    Table format:  Format A
-#    Date:          04/15/98
-#
-#    Contact:       cpxlate@microsoft.com
-#
-#    General notes: none
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp1250 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in cp1250 order
-#
-0x00	0x0000	#NULL
-0x01	0x0001	#START OF HEADING
-0x02	0x0002	#START OF TEXT
-0x03	0x0003	#END OF TEXT
-0x04	0x0004	#END OF TRANSMISSION
-0x05	0x0005	#ENQUIRY
-0x06	0x0006	#ACKNOWLEDGE
-0x07	0x0007	#BELL
-0x08	0x0008	#BACKSPACE
-0x09	0x0009	#HORIZONTAL TABULATION
-0x0A	0x000A	#LINE FEED
-0x0B	0x000B	#VERTICAL TABULATION
-0x0C	0x000C	#FORM FEED
-0x0D	0x000D	#CARRIAGE RETURN
-0x0E	0x000E	#SHIFT OUT
-0x0F	0x000F	#SHIFT IN
-0x10	0x0010	#DATA LINK ESCAPE
-0x11	0x0011	#DEVICE CONTROL ONE
-0x12	0x0012	#DEVICE CONTROL TWO
-0x13	0x0013	#DEVICE CONTROL THREE
-0x14	0x0014	#DEVICE CONTROL FOUR
-0x15	0x0015	#NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#SYNCHRONOUS IDLE
-0x17	0x0017	#END OF TRANSMISSION BLOCK
-0x18	0x0018	#CANCEL
-0x19	0x0019	#END OF MEDIUM
-0x1A	0x001A	#SUBSTITUTE
-0x1B	0x001B	#ESCAPE
-0x1C	0x001C	#FILE SEPARATOR
-0x1D	0x001D	#GROUP SEPARATOR
-0x1E	0x001E	#RECORD SEPARATOR
-0x1F	0x001F	#UNIT SEPARATOR
-0x20	0x0020	#SPACE
-0x21	0x0021	#EXCLAMATION MARK
-0x22	0x0022	#QUOTATION MARK
-0x23	0x0023	#NUMBER SIGN
-0x24	0x0024	#DOLLAR SIGN
-0x25	0x0025	#PERCENT SIGN
-0x26	0x0026	#AMPERSAND
-0x27	0x0027	#APOSTROPHE
-0x28	0x0028	#LEFT PARENTHESIS
-0x29	0x0029	#RIGHT PARENTHESIS
-0x2A	0x002A	#ASTERISK
-0x2B	0x002B	#PLUS SIGN
-0x2C	0x002C	#COMMA
-0x2D	0x002D	#HYPHEN-MINUS
-0x2E	0x002E	#FULL STOP
-0x2F	0x002F	#SOLIDUS
-0x30	0x0030	#DIGIT ZERO
-0x31	0x0031	#DIGIT ONE
-0x32	0x0032	#DIGIT TWO
-0x33	0x0033	#DIGIT THREE
-0x34	0x0034	#DIGIT FOUR
-0x35	0x0035	#DIGIT FIVE
-0x36	0x0036	#DIGIT SIX
-0x37	0x0037	#DIGIT SEVEN
-0x38	0x0038	#DIGIT EIGHT
-0x39	0x0039	#DIGIT NINE
-0x3A	0x003A	#COLON
-0x3B	0x003B	#SEMICOLON
-0x3C	0x003C	#LESS-THAN SIGN
-0x3D	0x003D	#EQUALS SIGN
-0x3E	0x003E	#GREATER-THAN SIGN
-0x3F	0x003F	#QUESTION MARK
-0x40	0x0040	#COMMERCIAL AT
-0x41	0x0041	#LATIN CAPITAL LETTER A
-0x42	0x0042	#LATIN CAPITAL LETTER B
-0x43	0x0043	#LATIN CAPITAL LETTER C
-0x44	0x0044	#LATIN CAPITAL LETTER D
-0x45	0x0045	#LATIN CAPITAL LETTER E
-0x46	0x0046	#LATIN CAPITAL LETTER F
-0x47	0x0047	#LATIN CAPITAL LETTER G
-0x48	0x0048	#LATIN CAPITAL LETTER H
-0x49	0x0049	#LATIN CAPITAL LETTER I
-0x4A	0x004A	#LATIN CAPITAL LETTER J
-0x4B	0x004B	#LATIN CAPITAL LETTER K
-0x4C	0x004C	#LATIN CAPITAL LETTER L
-0x4D	0x004D	#LATIN CAPITAL LETTER M
-0x4E	0x004E	#LATIN CAPITAL LETTER N
-0x4F	0x004F	#LATIN CAPITAL LETTER O
-0x50	0x0050	#LATIN CAPITAL LETTER P
-0x51	0x0051	#LATIN CAPITAL LETTER Q
-0x52	0x0052	#LATIN CAPITAL LETTER R
-0x53	0x0053	#LATIN CAPITAL LETTER S
-0x54	0x0054	#LATIN CAPITAL LETTER T
-0x55	0x0055	#LATIN CAPITAL LETTER U
-0x56	0x0056	#LATIN CAPITAL LETTER V
-0x57	0x0057	#LATIN CAPITAL LETTER W
-0x58	0x0058	#LATIN CAPITAL LETTER X
-0x59	0x0059	#LATIN CAPITAL LETTER Y
-0x5A	0x005A	#LATIN CAPITAL LETTER Z
-0x5B	0x005B	#LEFT SQUARE BRACKET
-0x5C	0x005C	#REVERSE SOLIDUS
-0x5D	0x005D	#RIGHT SQUARE BRACKET
-0x5E	0x005E	#CIRCUMFLEX ACCENT
-0x5F	0x005F	#LOW LINE
-0x60	0x0060	#GRAVE ACCENT
-0x61	0x0061	#LATIN SMALL LETTER A
-0x62	0x0062	#LATIN SMALL LETTER B
-0x63	0x0063	#LATIN SMALL LETTER C
-0x64	0x0064	#LATIN SMALL LETTER D
-0x65	0x0065	#LATIN SMALL LETTER E
-0x66	0x0066	#LATIN SMALL LETTER F
-0x67	0x0067	#LATIN SMALL LETTER G
-0x68	0x0068	#LATIN SMALL LETTER H
-0x69	0x0069	#LATIN SMALL LETTER I
-0x6A	0x006A	#LATIN SMALL LETTER J
-0x6B	0x006B	#LATIN SMALL LETTER K
-0x6C	0x006C	#LATIN SMALL LETTER L
-0x6D	0x006D	#LATIN SMALL LETTER M
-0x6E	0x006E	#LATIN SMALL LETTER N
-0x6F	0x006F	#LATIN SMALL LETTER O
-0x70	0x0070	#LATIN SMALL LETTER P
-0x71	0x0071	#LATIN SMALL LETTER Q
-0x72	0x0072	#LATIN SMALL LETTER R
-0x73	0x0073	#LATIN SMALL LETTER S
-0x74	0x0074	#LATIN SMALL LETTER T
-0x75	0x0075	#LATIN SMALL LETTER U
-0x76	0x0076	#LATIN SMALL LETTER V
-0x77	0x0077	#LATIN SMALL LETTER W
-0x78	0x0078	#LATIN SMALL LETTER X
-0x79	0x0079	#LATIN SMALL LETTER Y
-0x7A	0x007A	#LATIN SMALL LETTER Z
-0x7B	0x007B	#LEFT CURLY BRACKET
-0x7C	0x007C	#VERTICAL LINE
-0x7D	0x007D	#RIGHT CURLY BRACKET
-0x7E	0x007E	#TILDE
-0x7F	0x007F	#DELETE
-0x80	0x20AC	#EURO SIGN
-0x81	      	#UNDEFINED
-0x82	0x201A	#SINGLE LOW-9 QUOTATION MARK
-0x83	      	#UNDEFINED
-0x84	0x201E	#DOUBLE LOW-9 QUOTATION MARK
-0x85	0x2026	#HORIZONTAL ELLIPSIS
-0x86	0x2020	#DAGGER
-0x87	0x2021	#DOUBLE DAGGER
-0x88	      	#UNDEFINED
-0x89	0x2030	#PER MILLE SIGN
-0x8A	0x0160	#LATIN CAPITAL LETTER S WITH CARON
-0x8B	0x2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C	0x015A	#LATIN CAPITAL LETTER S WITH ACUTE
-0x8D	0x0164	#LATIN CAPITAL LETTER T WITH CARON
-0x8E	0x017D	#LATIN CAPITAL LETTER Z WITH CARON
-0x8F	0x0179	#LATIN CAPITAL LETTER Z WITH ACUTE
-0x90	      	#UNDEFINED
-0x91	0x2018	#LEFT SINGLE QUOTATION MARK
-0x92	0x2019	#RIGHT SINGLE QUOTATION MARK
-0x93	0x201C	#LEFT DOUBLE QUOTATION MARK
-0x94	0x201D	#RIGHT DOUBLE QUOTATION MARK
-0x95	0x2022	#BULLET
-0x96	0x2013	#EN DASH
-0x97	0x2014	#EM DASH
-0x98	      	#UNDEFINED
-0x99	0x2122	#TRADE MARK SIGN
-0x9A	0x0161	#LATIN SMALL LETTER S WITH CARON
-0x9B	0x203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C	0x015B	#LATIN SMALL LETTER S WITH ACUTE
-0x9D	0x0165	#LATIN SMALL LETTER T WITH CARON
-0x9E	0x017E	#LATIN SMALL LETTER Z WITH CARON
-0x9F	0x017A	#LATIN SMALL LETTER Z WITH ACUTE
-0xA0	0x00A0	#NO-BREAK SPACE
-0xA1	0x02C7	#CARON
-0xA2	0x02D8	#BREVE
-0xA3	0x0141	#LATIN CAPITAL LETTER L WITH STROKE
-0xA4	0x00A4	#CURRENCY SIGN
-0xA5	0x0104	#LATIN CAPITAL LETTER A WITH OGONEK
-0xA6	0x00A6	#BROKEN BAR
-0xA7	0x00A7	#SECTION SIGN
-0xA8	0x00A8	#DIAERESIS
-0xA9	0x00A9	#COPYRIGHT SIGN
-0xAA	0x015E	#LATIN CAPITAL LETTER S WITH CEDILLA
-0xAB	0x00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#NOT SIGN
-0xAD	0x00AD	#SOFT HYPHEN
-0xAE	0x00AE	#REGISTERED SIGN
-0xAF	0x017B	#LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xB0	0x00B0	#DEGREE SIGN
-0xB1	0x00B1	#PLUS-MINUS SIGN
-0xB2	0x02DB	#OGONEK
-0xB3	0x0142	#LATIN SMALL LETTER L WITH STROKE
-0xB4	0x00B4	#ACUTE ACCENT
-0xB5	0x00B5	#MICRO SIGN
-0xB6	0x00B6	#PILCROW SIGN
-0xB7	0x00B7	#MIDDLE DOT
-0xB8	0x00B8	#CEDILLA
-0xB9	0x0105	#LATIN SMALL LETTER A WITH OGONEK
-0xBA	0x015F	#LATIN SMALL LETTER S WITH CEDILLA
-0xBB	0x00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x013D	#LATIN CAPITAL LETTER L WITH CARON
-0xBD	0x02DD	#DOUBLE ACUTE ACCENT
-0xBE	0x013E	#LATIN SMALL LETTER L WITH CARON
-0xBF	0x017C	#LATIN SMALL LETTER Z WITH DOT ABOVE
-0xC0	0x0154	#LATIN CAPITAL LETTER R WITH ACUTE
-0xC1	0x00C1	#LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x0102	#LATIN CAPITAL LETTER A WITH BREVE
-0xC4	0x00C4	#LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x0139	#LATIN CAPITAL LETTER L WITH ACUTE
-0xC6	0x0106	#LATIN CAPITAL LETTER C WITH ACUTE
-0xC7	0x00C7	#LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x010C	#LATIN CAPITAL LETTER C WITH CARON
-0xC9	0x00C9	#LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x0118	#LATIN CAPITAL LETTER E WITH OGONEK
-0xCB	0x00CB	#LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x011A	#LATIN CAPITAL LETTER E WITH CARON
-0xCD	0x00CD	#LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x010E	#LATIN CAPITAL LETTER D WITH CARON
-0xD0	0x0110	#LATIN CAPITAL LETTER D WITH STROKE
-0xD1	0x0143	#LATIN CAPITAL LETTER N WITH ACUTE
-0xD2	0x0147	#LATIN CAPITAL LETTER N WITH CARON
-0xD3	0x00D3	#LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x0150	#LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0xD6	0x00D6	#LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#MULTIPLICATION SIGN
-0xD8	0x0158	#LATIN CAPITAL LETTER R WITH CARON
-0xD9	0x016E	#LATIN CAPITAL LETTER U WITH RING ABOVE
-0xDA	0x00DA	#LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x0170	#LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0xDC	0x00DC	#LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x00DD	#LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE	0x0162	#LATIN CAPITAL LETTER T WITH CEDILLA
-0xDF	0x00DF	#LATIN SMALL LETTER SHARP S
-0xE0	0x0155	#LATIN SMALL LETTER R WITH ACUTE
-0xE1	0x00E1	#LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x0103	#LATIN SMALL LETTER A WITH BREVE
-0xE4	0x00E4	#LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x013A	#LATIN SMALL LETTER L WITH ACUTE
-0xE6	0x0107	#LATIN SMALL LETTER C WITH ACUTE
-0xE7	0x00E7	#LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x010D	#LATIN SMALL LETTER C WITH CARON
-0xE9	0x00E9	#LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x0119	#LATIN SMALL LETTER E WITH OGONEK
-0xEB	0x00EB	#LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x011B	#LATIN SMALL LETTER E WITH CARON
-0xED	0x00ED	#LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x010F	#LATIN SMALL LETTER D WITH CARON
-0xF0	0x0111	#LATIN SMALL LETTER D WITH STROKE
-0xF1	0x0144	#LATIN SMALL LETTER N WITH ACUTE
-0xF2	0x0148	#LATIN SMALL LETTER N WITH CARON
-0xF3	0x00F3	#LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x0151	#LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0xF6	0x00F6	#LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#DIVISION SIGN
-0xF8	0x0159	#LATIN SMALL LETTER R WITH CARON
-0xF9	0x016F	#LATIN SMALL LETTER U WITH RING ABOVE
-0xFA	0x00FA	#LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x0171	#LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0xFC	0x00FC	#LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x00FD	#LATIN SMALL LETTER Y WITH ACUTE
-0xFE	0x0163	#LATIN SMALL LETTER T WITH CEDILLA
-0xFF	0x02D9	#DOT ABOVE
diff --git a/program/lib/encoding/CP1251.map b/program/lib/encoding/CP1251.map
deleted file mode 100644
index e7d4f2c..0000000
--- a/program/lib/encoding/CP1251.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-#    Name:     cp1251 to Unicode table
-#    Unicode version: 2.0
-#    Table version: 2.01
-#    Table format:  Format A
-#    Date:          04/15/98
-#
-#    Contact:       cpxlate@microsoft.com
-#
-#    General notes: none
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp1251 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in cp1251 order
-#
-0x00    0x0000  #NULL
-0x01    0x0001  #START OF HEADING
-0x02    0x0002  #START OF TEXT
-0x03    0x0003  #END OF TEXT
-0x04    0x0004  #END OF TRANSMISSION
-0x05    0x0005  #ENQUIRY
-0x06    0x0006  #ACKNOWLEDGE
-0x07    0x0007  #BELL
-0x08    0x0008  #BACKSPACE
-0x09    0x0009  #HORIZONTAL TABULATION
-0x0A    0x000A  #LINE FEED
-0x0B    0x000B  #VERTICAL TABULATION
-0x0C    0x000C  #FORM FEED
-0x0D    0x000D  #CARRIAGE RETURN
-0x0E    0x000E  #SHIFT OUT
-0x0F    0x000F  #SHIFT IN
-0x10    0x0010  #DATA LINK ESCAPE
-0x11    0x0011  #DEVICE CONTROL ONE
-0x12    0x0012  #DEVICE CONTROL TWO
-0x13    0x0013  #DEVICE CONTROL THREE
-0x14    0x0014  #DEVICE CONTROL FOUR
-0x15    0x0015  #NEGATIVE ACKNOWLEDGE
-0x16    0x0016  #SYNCHRONOUS IDLE
-0x17    0x0017  #END OF TRANSMISSION BLOCK
-0x18    0x0018  #CANCEL
-0x19    0x0019  #END OF MEDIUM
-0x1A    0x001A  #SUBSTITUTE
-0x1B    0x001B  #ESCAPE
-0x1C    0x001C  #FILE SEPARATOR
-0x1D    0x001D  #GROUP SEPARATOR
-0x1E    0x001E  #RECORD SEPARATOR
-0x1F    0x001F  #UNIT SEPARATOR
-0x20    0x0020  #SPACE
-0x21    0x0021  #EXCLAMATION MARK
-0x22    0x0022  #QUOTATION MARK
-0x23    0x0023  #NUMBER SIGN
-0x24    0x0024  #DOLLAR SIGN
-0x25    0x0025  #PERCENT SIGN
-0x26    0x0026  #AMPERSAND
-0x27    0x0027  #APOSTROPHE
-0x28    0x0028  #LEFT PARENTHESIS
-0x29    0x0029  #RIGHT PARENTHESIS
-0x2A    0x002A  #ASTERISK
-0x2B    0x002B  #PLUS SIGN
-0x2C    0x002C  #COMMA
-0x2D    0x002D  #HYPHEN-MINUS
-0x2E    0x002E  #FULL STOP
-0x2F    0x002F  #SOLIDUS
-0x30    0x0030  #DIGIT ZERO
-0x31    0x0031  #DIGIT ONE
-0x32    0x0032  #DIGIT TWO
-0x33    0x0033  #DIGIT THREE
-0x34    0x0034  #DIGIT FOUR
-0x35    0x0035  #DIGIT FIVE
-0x36    0x0036  #DIGIT SIX
-0x37    0x0037  #DIGIT SEVEN
-0x38    0x0038  #DIGIT EIGHT
-0x39    0x0039  #DIGIT NINE
-0x3A    0x003A  #COLON
-0x3B    0x003B  #SEMICOLON
-0x3C    0x003C  #LESS-THAN SIGN
-0x3D    0x003D  #EQUALS SIGN
-0x3E    0x003E  #GREATER-THAN SIGN
-0x3F    0x003F  #QUESTION MARK
-0x40    0x0040  #COMMERCIAL AT
-0x41    0x0041  #LATIN CAPITAL LETTER A
-0x42    0x0042  #LATIN CAPITAL LETTER B
-0x43    0x0043  #LATIN CAPITAL LETTER C
-0x44    0x0044  #LATIN CAPITAL LETTER D
-0x45    0x0045  #LATIN CAPITAL LETTER E
-0x46    0x0046  #LATIN CAPITAL LETTER F
-0x47    0x0047  #LATIN CAPITAL LETTER G
-0x48    0x0048  #LATIN CAPITAL LETTER H
-0x49    0x0049  #LATIN CAPITAL LETTER I
-0x4A    0x004A  #LATIN CAPITAL LETTER J
-0x4B    0x004B  #LATIN CAPITAL LETTER K
-0x4C    0x004C  #LATIN CAPITAL LETTER L
-0x4D    0x004D  #LATIN CAPITAL LETTER M
-0x4E    0x004E  #LATIN CAPITAL LETTER N
-0x4F    0x004F  #LATIN CAPITAL LETTER O
-0x50    0x0050  #LATIN CAPITAL LETTER P
-0x51    0x0051  #LATIN CAPITAL LETTER Q
-0x52    0x0052  #LATIN CAPITAL LETTER R
-0x53    0x0053  #LATIN CAPITAL LETTER S
-0x54    0x0054  #LATIN CAPITAL LETTER T
-0x55    0x0055  #LATIN CAPITAL LETTER U
-0x56    0x0056  #LATIN CAPITAL LETTER V
-0x57    0x0057  #LATIN CAPITAL LETTER W
-0x58    0x0058  #LATIN CAPITAL LETTER X
-0x59    0x0059  #LATIN CAPITAL LETTER Y
-0x5A    0x005A  #LATIN CAPITAL LETTER Z
-0x5B    0x005B  #LEFT SQUARE BRACKET
-0x5C    0x005C  #REVERSE SOLIDUS
-0x5D    0x005D  #RIGHT SQUARE BRACKET
-0x5E    0x005E  #CIRCUMFLEX ACCENT
-0x5F    0x005F  #LOW LINE
-0x60    0x0060  #GRAVE ACCENT
-0x61    0x0061  #LATIN SMALL LETTER A
-0x62    0x0062  #LATIN SMALL LETTER B
-0x63    0x0063  #LATIN SMALL LETTER C
-0x64    0x0064  #LATIN SMALL LETTER D
-0x65    0x0065  #LATIN SMALL LETTER E
-0x66    0x0066  #LATIN SMALL LETTER F
-0x67    0x0067  #LATIN SMALL LETTER G
-0x68    0x0068  #LATIN SMALL LETTER H
-0x69    0x0069  #LATIN SMALL LETTER I
-0x6A    0x006A  #LATIN SMALL LETTER J
-0x6B    0x006B  #LATIN SMALL LETTER K
-0x6C    0x006C  #LATIN SMALL LETTER L
-0x6D    0x006D  #LATIN SMALL LETTER M
-0x6E    0x006E  #LATIN SMALL LETTER N
-0x6F    0x006F  #LATIN SMALL LETTER O
-0x70    0x0070  #LATIN SMALL LETTER P
-0x71    0x0071  #LATIN SMALL LETTER Q
-0x72    0x0072  #LATIN SMALL LETTER R
-0x73    0x0073  #LATIN SMALL LETTER S
-0x74    0x0074  #LATIN SMALL LETTER T
-0x75    0x0075  #LATIN SMALL LETTER U
-0x76    0x0076  #LATIN SMALL LETTER V
-0x77    0x0077  #LATIN SMALL LETTER W
-0x78    0x0078  #LATIN SMALL LETTER X
-0x79    0x0079  #LATIN SMALL LETTER Y
-0x7A    0x007A  #LATIN SMALL LETTER Z
-0x7B    0x007B  #LEFT CURLY BRACKET
-0x7C    0x007C  #VERTICAL LINE
-0x7D    0x007D  #RIGHT CURLY BRACKET
-0x7E    0x007E  #TILDE
-0x7F    0x007F  #DELETE
-0x80    0x0402  #CYRILLIC CAPITAL LETTER DJE
-0x81    0x0403  #CYRILLIC CAPITAL LETTER GJE
-0x82    0x201A  #SINGLE LOW-9 QUOTATION MARK
-0x83    0x0453  #CYRILLIC SMALL LETTER GJE
-0x84    0x201E  #DOUBLE LOW-9 QUOTATION MARK
-0x85    0x2026  #HORIZONTAL ELLIPSIS
-0x86    0x2020  #DAGGER
-0x87    0x2021  #DOUBLE DAGGER
-0x88    0x20AC  #EURO SIGN
-0x89    0x2030  #PER MILLE SIGN
-0x8A    0x0409  #CYRILLIC CAPITAL LETTER LJE
-0x8B    0x2039  #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C    0x040A  #CYRILLIC CAPITAL LETTER NJE
-0x8D    0x040C  #CYRILLIC CAPITAL LETTER KJE
-0x8E    0x040B  #CYRILLIC CAPITAL LETTER TSHE
-0x8F    0x040F  #CYRILLIC CAPITAL LETTER DZHE
-0x90    0x0452  #CYRILLIC SMALL LETTER DJE
-0x91    0x2018  #LEFT SINGLE QUOTATION MARK
-0x92    0x2019  #RIGHT SINGLE QUOTATION MARK
-0x93    0x201C  #LEFT DOUBLE QUOTATION MARK
-0x94    0x201D  #RIGHT DOUBLE QUOTATION MARK
-0x95    0x2022  #BULLET
-0x96    0x2013  #EN DASH
-0x97    0x2014  #EM DASH
-0x98            #UNDEFINED
-0x99    0x2122  #TRADE MARK SIGN
-0x9A    0x0459  #CYRILLIC SMALL LETTER LJE
-0x9B    0x203A  #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C    0x045A  #CYRILLIC SMALL LETTER NJE
-0x9D    0x045C  #CYRILLIC SMALL LETTER KJE
-0x9E    0x045B  #CYRILLIC SMALL LETTER TSHE
-0x9F    0x045F  #CYRILLIC SMALL LETTER DZHE
-0xA0    0x00A0  #NO-BREAK SPACE
-0xA1    0x040E  #CYRILLIC CAPITAL LETTER SHORT U
-0xA2    0x045E  #CYRILLIC SMALL LETTER SHORT U
-0xA3    0x0408  #CYRILLIC CAPITAL LETTER JE
-0xA4    0x00A4  #CURRENCY SIGN
-0xA5    0x0490  #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0xA6    0x00A6  #BROKEN BAR
-0xA7    0x00A7  #SECTION SIGN
-0xA8    0x0401  #CYRILLIC CAPITAL LETTER IO
-0xA9    0x00A9  #COPYRIGHT SIGN
-0xAA    0x0404  #CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0xAB    0x00AB  #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC    0x00AC  #NOT SIGN
-0xAD    0x00AD  #SOFT HYPHEN
-0xAE    0x00AE  #REGISTERED SIGN
-0xAF    0x0407  #CYRILLIC CAPITAL LETTER YI
-0xB0    0x00B0  #DEGREE SIGN
-0xB1    0x00B1  #PLUS-MINUS SIGN
-0xB2    0x0406  #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0xB3    0x0456  #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0xB4    0x0491  #CYRILLIC SMALL LETTER GHE WITH UPTURN
-0xB5    0x00B5  #MICRO SIGN
-0xB6    0x00B6  #PILCROW SIGN
-0xB7    0x00B7  #MIDDLE DOT
-0xB8    0x0451  #CYRILLIC SMALL LETTER IO
-0xB9    0x2116  #NUMERO SIGN
-0xBA    0x0454  #CYRILLIC SMALL LETTER UKRAINIAN IE
-0xBB    0x00BB  #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC    0x0458  #CYRILLIC SMALL LETTER JE
-0xBD    0x0405  #CYRILLIC CAPITAL LETTER DZE
-0xBE    0x0455  #CYRILLIC SMALL LETTER DZE
-0xBF    0x0457  #CYRILLIC SMALL LETTER YI
-0xC0    0x0410  #CYRILLIC CAPITAL LETTER A
-0xC1    0x0411  #CYRILLIC CAPITAL LETTER BE
-0xC2    0x0412  #CYRILLIC CAPITAL LETTER VE
-0xC3    0x0413  #CYRILLIC CAPITAL LETTER GHE
-0xC4    0x0414  #CYRILLIC CAPITAL LETTER DE
-0xC5    0x0415  #CYRILLIC CAPITAL LETTER IE
-0xC6    0x0416  #CYRILLIC CAPITAL LETTER ZHE
-0xC7    0x0417  #CYRILLIC CAPITAL LETTER ZE
-0xC8    0x0418  #CYRILLIC CAPITAL LETTER I
-0xC9    0x0419  #CYRILLIC CAPITAL LETTER SHORT I
-0xCA    0x041A  #CYRILLIC CAPITAL LETTER KA
-0xCB    0x041B  #CYRILLIC CAPITAL LETTER EL
-0xCC    0x041C  #CYRILLIC CAPITAL LETTER EM
-0xCD    0x041D  #CYRILLIC CAPITAL LETTER EN
-0xCE    0x041E  #CYRILLIC CAPITAL LETTER O
-0xCF    0x041F  #CYRILLIC CAPITAL LETTER PE
-0xD0    0x0420  #CYRILLIC CAPITAL LETTER ER
-0xD1    0x0421  #CYRILLIC CAPITAL LETTER ES
-0xD2    0x0422  #CYRILLIC CAPITAL LETTER TE
-0xD3    0x0423  #CYRILLIC CAPITAL LETTER U
-0xD4    0x0424  #CYRILLIC CAPITAL LETTER EF
-0xD5    0x0425  #CYRILLIC CAPITAL LETTER HA
-0xD6    0x0426  #CYRILLIC CAPITAL LETTER TSE
-0xD7    0x0427  #CYRILLIC CAPITAL LETTER CHE
-0xD8    0x0428  #CYRILLIC CAPITAL LETTER SHA
-0xD9    0x0429  #CYRILLIC CAPITAL LETTER SHCHA
-0xDA    0x042A  #CYRILLIC CAPITAL LETTER HARD SIGN
-0xDB    0x042B  #CYRILLIC CAPITAL LETTER YERU
-0xDC    0x042C  #CYRILLIC CAPITAL LETTER SOFT SIGN
-0xDD    0x042D  #CYRILLIC CAPITAL LETTER E
-0xDE    0x042E  #CYRILLIC CAPITAL LETTER YU
-0xDF    0x042F  #CYRILLIC CAPITAL LETTER YA
-0xE0    0x0430  #CYRILLIC SMALL LETTER A
-0xE1    0x0431  #CYRILLIC SMALL LETTER BE
-0xE2    0x0432  #CYRILLIC SMALL LETTER VE
-0xE3    0x0433  #CYRILLIC SMALL LETTER GHE
-0xE4    0x0434  #CYRILLIC SMALL LETTER DE
-0xE5    0x0435  #CYRILLIC SMALL LETTER IE
-0xE6    0x0436  #CYRILLIC SMALL LETTER ZHE
-0xE7    0x0437  #CYRILLIC SMALL LETTER ZE
-0xE8    0x0438  #CYRILLIC SMALL LETTER I
-0xE9    0x0439  #CYRILLIC SMALL LETTER SHORT I
-0xEA    0x043A  #CYRILLIC SMALL LETTER KA
-0xEB    0x043B  #CYRILLIC SMALL LETTER EL
-0xEC    0x043C  #CYRILLIC SMALL LETTER EM
-0xED    0x043D  #CYRILLIC SMALL LETTER EN
-0xEE    0x043E  #CYRILLIC SMALL LETTER O
-0xEF    0x043F  #CYRILLIC SMALL LETTER PE
-0xF0    0x0440  #CYRILLIC SMALL LETTER ER
-0xF1    0x0441  #CYRILLIC SMALL LETTER ES
-0xF2    0x0442  #CYRILLIC SMALL LETTER TE
-0xF3    0x0443  #CYRILLIC SMALL LETTER U
-0xF4    0x0444  #CYRILLIC SMALL LETTER EF
-0xF5    0x0445  #CYRILLIC SMALL LETTER HA
-0xF6    0x0446  #CYRILLIC SMALL LETTER TSE
-0xF7    0x0447  #CYRILLIC SMALL LETTER CHE
-0xF8    0x0448  #CYRILLIC SMALL LETTER SHA
-0xF9    0x0449  #CYRILLIC SMALL LETTER SHCHA
-0xFA    0x044A  #CYRILLIC SMALL LETTER HARD SIGN
-0xFB    0x044B  #CYRILLIC SMALL LETTER YERU
-0xFC    0x044C  #CYRILLIC SMALL LETTER SOFT SIGN
-0xFD    0x044D  #CYRILLIC SMALL LETTER E
-0xFE    0x044E  #CYRILLIC SMALL LETTER YU
-0xFF    0x044F  #CYRILLIC SMALL LETTER YA
diff --git a/program/lib/encoding/CP1252.map b/program/lib/encoding/CP1252.map
deleted file mode 100644
index 2ca4486..0000000
--- a/program/lib/encoding/CP1252.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-#    Name:     cp1252 to Unicode table
-#    Unicode version: 2.0
-#    Table version: 2.01
-#    Table format:  Format A
-#    Date:          04/15/98
-#
-#    Contact:       cpxlate@microsoft.com
-#
-#    General notes: none
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp1252 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in cp1252 order
-#
-0x00	0x0000	#NULL
-0x01	0x0001	#START OF HEADING
-0x02	0x0002	#START OF TEXT
-0x03	0x0003	#END OF TEXT
-0x04	0x0004	#END OF TRANSMISSION
-0x05	0x0005	#ENQUIRY
-0x06	0x0006	#ACKNOWLEDGE
-0x07	0x0007	#BELL
-0x08	0x0008	#BACKSPACE
-0x09	0x0009	#HORIZONTAL TABULATION
-0x0A	0x000A	#LINE FEED
-0x0B	0x000B	#VERTICAL TABULATION
-0x0C	0x000C	#FORM FEED
-0x0D	0x000D	#CARRIAGE RETURN
-0x0E	0x000E	#SHIFT OUT
-0x0F	0x000F	#SHIFT IN
-0x10	0x0010	#DATA LINK ESCAPE
-0x11	0x0011	#DEVICE CONTROL ONE
-0x12	0x0012	#DEVICE CONTROL TWO
-0x13	0x0013	#DEVICE CONTROL THREE
-0x14	0x0014	#DEVICE CONTROL FOUR
-0x15	0x0015	#NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#SYNCHRONOUS IDLE
-0x17	0x0017	#END OF TRANSMISSION BLOCK
-0x18	0x0018	#CANCEL
-0x19	0x0019	#END OF MEDIUM
-0x1A	0x001A	#SUBSTITUTE
-0x1B	0x001B	#ESCAPE
-0x1C	0x001C	#FILE SEPARATOR
-0x1D	0x001D	#GROUP SEPARATOR
-0x1E	0x001E	#RECORD SEPARATOR
-0x1F	0x001F	#UNIT SEPARATOR
-0x20	0x0020	#SPACE
-0x21	0x0021	#EXCLAMATION MARK
-0x22	0x0022	#QUOTATION MARK
-0x23	0x0023	#NUMBER SIGN
-0x24	0x0024	#DOLLAR SIGN
-0x25	0x0025	#PERCENT SIGN
-0x26	0x0026	#AMPERSAND
-0x27	0x0027	#APOSTROPHE
-0x28	0x0028	#LEFT PARENTHESIS
-0x29	0x0029	#RIGHT PARENTHESIS
-0x2A	0x002A	#ASTERISK
-0x2B	0x002B	#PLUS SIGN
-0x2C	0x002C	#COMMA
-0x2D	0x002D	#HYPHEN-MINUS
-0x2E	0x002E	#FULL STOP
-0x2F	0x002F	#SOLIDUS
-0x30	0x0030	#DIGIT ZERO
-0x31	0x0031	#DIGIT ONE
-0x32	0x0032	#DIGIT TWO
-0x33	0x0033	#DIGIT THREE
-0x34	0x0034	#DIGIT FOUR
-0x35	0x0035	#DIGIT FIVE
-0x36	0x0036	#DIGIT SIX
-0x37	0x0037	#DIGIT SEVEN
-0x38	0x0038	#DIGIT EIGHT
-0x39	0x0039	#DIGIT NINE
-0x3A	0x003A	#COLON
-0x3B	0x003B	#SEMICOLON
-0x3C	0x003C	#LESS-THAN SIGN
-0x3D	0x003D	#EQUALS SIGN
-0x3E	0x003E	#GREATER-THAN SIGN
-0x3F	0x003F	#QUESTION MARK
-0x40	0x0040	#COMMERCIAL AT
-0x41	0x0041	#LATIN CAPITAL LETTER A
-0x42	0x0042	#LATIN CAPITAL LETTER B
-0x43	0x0043	#LATIN CAPITAL LETTER C
-0x44	0x0044	#LATIN CAPITAL LETTER D
-0x45	0x0045	#LATIN CAPITAL LETTER E
-0x46	0x0046	#LATIN CAPITAL LETTER F
-0x47	0x0047	#LATIN CAPITAL LETTER G
-0x48	0x0048	#LATIN CAPITAL LETTER H
-0x49	0x0049	#LATIN CAPITAL LETTER I
-0x4A	0x004A	#LATIN CAPITAL LETTER J
-0x4B	0x004B	#LATIN CAPITAL LETTER K
-0x4C	0x004C	#LATIN CAPITAL LETTER L
-0x4D	0x004D	#LATIN CAPITAL LETTER M
-0x4E	0x004E	#LATIN CAPITAL LETTER N
-0x4F	0x004F	#LATIN CAPITAL LETTER O
-0x50	0x0050	#LATIN CAPITAL LETTER P
-0x51	0x0051	#LATIN CAPITAL LETTER Q
-0x52	0x0052	#LATIN CAPITAL LETTER R
-0x53	0x0053	#LATIN CAPITAL LETTER S
-0x54	0x0054	#LATIN CAPITAL LETTER T
-0x55	0x0055	#LATIN CAPITAL LETTER U
-0x56	0x0056	#LATIN CAPITAL LETTER V
-0x57	0x0057	#LATIN CAPITAL LETTER W
-0x58	0x0058	#LATIN CAPITAL LETTER X
-0x59	0x0059	#LATIN CAPITAL LETTER Y
-0x5A	0x005A	#LATIN CAPITAL LETTER Z
-0x5B	0x005B	#LEFT SQUARE BRACKET
-0x5C	0x005C	#REVERSE SOLIDUS
-0x5D	0x005D	#RIGHT SQUARE BRACKET
-0x5E	0x005E	#CIRCUMFLEX ACCENT
-0x5F	0x005F	#LOW LINE
-0x60	0x0060	#GRAVE ACCENT
-0x61	0x0061	#LATIN SMALL LETTER A
-0x62	0x0062	#LATIN SMALL LETTER B
-0x63	0x0063	#LATIN SMALL LETTER C
-0x64	0x0064	#LATIN SMALL LETTER D
-0x65	0x0065	#LATIN SMALL LETTER E
-0x66	0x0066	#LATIN SMALL LETTER F
-0x67	0x0067	#LATIN SMALL LETTER G
-0x68	0x0068	#LATIN SMALL LETTER H
-0x69	0x0069	#LATIN SMALL LETTER I
-0x6A	0x006A	#LATIN SMALL LETTER J
-0x6B	0x006B	#LATIN SMALL LETTER K
-0x6C	0x006C	#LATIN SMALL LETTER L
-0x6D	0x006D	#LATIN SMALL LETTER M
-0x6E	0x006E	#LATIN SMALL LETTER N
-0x6F	0x006F	#LATIN SMALL LETTER O
-0x70	0x0070	#LATIN SMALL LETTER P
-0x71	0x0071	#LATIN SMALL LETTER Q
-0x72	0x0072	#LATIN SMALL LETTER R
-0x73	0x0073	#LATIN SMALL LETTER S
-0x74	0x0074	#LATIN SMALL LETTER T
-0x75	0x0075	#LATIN SMALL LETTER U
-0x76	0x0076	#LATIN SMALL LETTER V
-0x77	0x0077	#LATIN SMALL LETTER W
-0x78	0x0078	#LATIN SMALL LETTER X
-0x79	0x0079	#LATIN SMALL LETTER Y
-0x7A	0x007A	#LATIN SMALL LETTER Z
-0x7B	0x007B	#LEFT CURLY BRACKET
-0x7C	0x007C	#VERTICAL LINE
-0x7D	0x007D	#RIGHT CURLY BRACKET
-0x7E	0x007E	#TILDE
-0x7F	0x007F	#DELETE
-0x80	0x20AC	#EURO SIGN
-0x81	      	#UNDEFINED
-0x82	0x201A	#SINGLE LOW-9 QUOTATION MARK
-0x83	0x0192	#LATIN SMALL LETTER F WITH HOOK
-0x84	0x201E	#DOUBLE LOW-9 QUOTATION MARK
-0x85	0x2026	#HORIZONTAL ELLIPSIS
-0x86	0x2020	#DAGGER
-0x87	0x2021	#DOUBLE DAGGER
-0x88	0x02C6	#MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89	0x2030	#PER MILLE SIGN
-0x8A	0x0160	#LATIN CAPITAL LETTER S WITH CARON
-0x8B	0x2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C	0x0152	#LATIN CAPITAL LIGATURE OE
-0x8D	      	#UNDEFINED
-0x8E	0x017D	#LATIN CAPITAL LETTER Z WITH CARON
-0x8F	      	#UNDEFINED
-0x90	      	#UNDEFINED
-0x91	0x2018	#LEFT SINGLE QUOTATION MARK
-0x92	0x2019	#RIGHT SINGLE QUOTATION MARK
-0x93	0x201C	#LEFT DOUBLE QUOTATION MARK
-0x94	0x201D	#RIGHT DOUBLE QUOTATION MARK
-0x95	0x2022	#BULLET
-0x96	0x2013	#EN DASH
-0x97	0x2014	#EM DASH
-0x98	0x02DC	#SMALL TILDE
-0x99	0x2122	#TRADE MARK SIGN
-0x9A	0x0161	#LATIN SMALL LETTER S WITH CARON
-0x9B	0x203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C	0x0153	#LATIN SMALL LIGATURE OE
-0x9D	      	#UNDEFINED
-0x9E	0x017E	#LATIN SMALL LETTER Z WITH CARON
-0x9F	0x0178	#LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xA0	0x00A0	#NO-BREAK SPACE
-0xA1	0x00A1	#INVERTED EXCLAMATION MARK
-0xA2	0x00A2	#CENT SIGN
-0xA3	0x00A3	#POUND SIGN
-0xA4	0x00A4	#CURRENCY SIGN
-0xA5	0x00A5	#YEN SIGN
-0xA6	0x00A6	#BROKEN BAR
-0xA7	0x00A7	#SECTION SIGN
-0xA8	0x00A8	#DIAERESIS
-0xA9	0x00A9	#COPYRIGHT SIGN
-0xAA	0x00AA	#FEMININE ORDINAL INDICATOR
-0xAB	0x00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#NOT SIGN
-0xAD	0x00AD	#SOFT HYPHEN
-0xAE	0x00AE	#REGISTERED SIGN
-0xAF	0x00AF	#MACRON
-0xB0	0x00B0	#DEGREE SIGN
-0xB1	0x00B1	#PLUS-MINUS SIGN
-0xB2	0x00B2	#SUPERSCRIPT TWO
-0xB3	0x00B3	#SUPERSCRIPT THREE
-0xB4	0x00B4	#ACUTE ACCENT
-0xB5	0x00B5	#MICRO SIGN
-0xB6	0x00B6	#PILCROW SIGN
-0xB7	0x00B7	#MIDDLE DOT
-0xB8	0x00B8	#CEDILLA
-0xB9	0x00B9	#SUPERSCRIPT ONE
-0xBA	0x00BA	#MASCULINE ORDINAL INDICATOR
-0xBB	0x00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#VULGAR FRACTION THREE QUARTERS
-0xBF	0x00BF	#INVERTED QUESTION MARK
-0xC0	0x00C0	#LATIN CAPITAL LETTER A WITH GRAVE
-0xC1	0x00C1	#LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x00C3	#LATIN CAPITAL LETTER A WITH TILDE
-0xC4	0x00C4	#LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x00C6	#LATIN CAPITAL LETTER AE
-0xC7	0x00C7	#LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x00C8	#LATIN CAPITAL LETTER E WITH GRAVE
-0xC9	0x00C9	#LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x00CA	#LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB	0x00CB	#LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x00CC	#LATIN CAPITAL LETTER I WITH GRAVE
-0xCD	0x00CD	#LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0	0x00D0	#LATIN CAPITAL LETTER ETH
-0xD1	0x00D1	#LATIN CAPITAL LETTER N WITH TILDE
-0xD2	0x00D2	#LATIN CAPITAL LETTER O WITH GRAVE
-0xD3	0x00D3	#LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x00D5	#LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#MULTIPLICATION SIGN
-0xD8	0x00D8	#LATIN CAPITAL LETTER O WITH STROKE
-0xD9	0x00D9	#LATIN CAPITAL LETTER U WITH GRAVE
-0xDA	0x00DA	#LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x00DD	#LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE	0x00DE	#LATIN CAPITAL LETTER THORN
-0xDF	0x00DF	#LATIN SMALL LETTER SHARP S
-0xE0	0x00E0	#LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x00E1	#LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x00E3	#LATIN SMALL LETTER A WITH TILDE
-0xE4	0x00E4	#LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x00E6	#LATIN SMALL LETTER AE
-0xE7	0x00E7	#LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x00EC	#LATIN SMALL LETTER I WITH GRAVE
-0xED	0x00ED	#LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x00F0	#LATIN SMALL LETTER ETH
-0xF1	0x00F1	#LATIN SMALL LETTER N WITH TILDE
-0xF2	0x00F2	#LATIN SMALL LETTER O WITH GRAVE
-0xF3	0x00F3	#LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x00F5	#LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#DIVISION SIGN
-0xF8	0x00F8	#LATIN SMALL LETTER O WITH STROKE
-0xF9	0x00F9	#LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x00FA	#LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x00FD	#LATIN SMALL LETTER Y WITH ACUTE
-0xFE	0x00FE	#LATIN SMALL LETTER THORN
-0xFF	0x00FF	#LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/CP1253.map b/program/lib/encoding/CP1253.map
deleted file mode 100644
index 2ba51a0..0000000
--- a/program/lib/encoding/CP1253.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-#    Name:     cp1253 to Unicode table
-#    Unicode version: 2.0
-#    Table version: 2.01
-#    Table format:  Format A
-#    Date:          04/15/98
-#
-#    Contact:       cpxlate@microsoft.com
-#
-#    General notes: none
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp1253 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in cp1253 order
-#
-0x00	0x0000	#NULL
-0x01	0x0001	#START OF HEADING
-0x02	0x0002	#START OF TEXT
-0x03	0x0003	#END OF TEXT
-0x04	0x0004	#END OF TRANSMISSION
-0x05	0x0005	#ENQUIRY
-0x06	0x0006	#ACKNOWLEDGE
-0x07	0x0007	#BELL
-0x08	0x0008	#BACKSPACE
-0x09	0x0009	#HORIZONTAL TABULATION
-0x0A	0x000A	#LINE FEED
-0x0B	0x000B	#VERTICAL TABULATION
-0x0C	0x000C	#FORM FEED
-0x0D	0x000D	#CARRIAGE RETURN
-0x0E	0x000E	#SHIFT OUT
-0x0F	0x000F	#SHIFT IN
-0x10	0x0010	#DATA LINK ESCAPE
-0x11	0x0011	#DEVICE CONTROL ONE
-0x12	0x0012	#DEVICE CONTROL TWO
-0x13	0x0013	#DEVICE CONTROL THREE
-0x14	0x0014	#DEVICE CONTROL FOUR
-0x15	0x0015	#NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#SYNCHRONOUS IDLE
-0x17	0x0017	#END OF TRANSMISSION BLOCK
-0x18	0x0018	#CANCEL
-0x19	0x0019	#END OF MEDIUM
-0x1A	0x001A	#SUBSTITUTE
-0x1B	0x001B	#ESCAPE
-0x1C	0x001C	#FILE SEPARATOR
-0x1D	0x001D	#GROUP SEPARATOR
-0x1E	0x001E	#RECORD SEPARATOR
-0x1F	0x001F	#UNIT SEPARATOR
-0x20	0x0020	#SPACE
-0x21	0x0021	#EXCLAMATION MARK
-0x22	0x0022	#QUOTATION MARK
-0x23	0x0023	#NUMBER SIGN
-0x24	0x0024	#DOLLAR SIGN
-0x25	0x0025	#PERCENT SIGN
-0x26	0x0026	#AMPERSAND
-0x27	0x0027	#APOSTROPHE
-0x28	0x0028	#LEFT PARENTHESIS
-0x29	0x0029	#RIGHT PARENTHESIS
-0x2A	0x002A	#ASTERISK
-0x2B	0x002B	#PLUS SIGN
-0x2C	0x002C	#COMMA
-0x2D	0x002D	#HYPHEN-MINUS
-0x2E	0x002E	#FULL STOP
-0x2F	0x002F	#SOLIDUS
-0x30	0x0030	#DIGIT ZERO
-0x31	0x0031	#DIGIT ONE
-0x32	0x0032	#DIGIT TWO
-0x33	0x0033	#DIGIT THREE
-0x34	0x0034	#DIGIT FOUR
-0x35	0x0035	#DIGIT FIVE
-0x36	0x0036	#DIGIT SIX
-0x37	0x0037	#DIGIT SEVEN
-0x38	0x0038	#DIGIT EIGHT
-0x39	0x0039	#DIGIT NINE
-0x3A	0x003A	#COLON
-0x3B	0x003B	#SEMICOLON
-0x3C	0x003C	#LESS-THAN SIGN
-0x3D	0x003D	#EQUALS SIGN
-0x3E	0x003E	#GREATER-THAN SIGN
-0x3F	0x003F	#QUESTION MARK
-0x40	0x0040	#COMMERCIAL AT
-0x41	0x0041	#LATIN CAPITAL LETTER A
-0x42	0x0042	#LATIN CAPITAL LETTER B
-0x43	0x0043	#LATIN CAPITAL LETTER C
-0x44	0x0044	#LATIN CAPITAL LETTER D
-0x45	0x0045	#LATIN CAPITAL LETTER E
-0x46	0x0046	#LATIN CAPITAL LETTER F
-0x47	0x0047	#LATIN CAPITAL LETTER G
-0x48	0x0048	#LATIN CAPITAL LETTER H
-0x49	0x0049	#LATIN CAPITAL LETTER I
-0x4A	0x004A	#LATIN CAPITAL LETTER J
-0x4B	0x004B	#LATIN CAPITAL LETTER K
-0x4C	0x004C	#LATIN CAPITAL LETTER L
-0x4D	0x004D	#LATIN CAPITAL LETTER M
-0x4E	0x004E	#LATIN CAPITAL LETTER N
-0x4F	0x004F	#LATIN CAPITAL LETTER O
-0x50	0x0050	#LATIN CAPITAL LETTER P
-0x51	0x0051	#LATIN CAPITAL LETTER Q
-0x52	0x0052	#LATIN CAPITAL LETTER R
-0x53	0x0053	#LATIN CAPITAL LETTER S
-0x54	0x0054	#LATIN CAPITAL LETTER T
-0x55	0x0055	#LATIN CAPITAL LETTER U
-0x56	0x0056	#LATIN CAPITAL LETTER V
-0x57	0x0057	#LATIN CAPITAL LETTER W
-0x58	0x0058	#LATIN CAPITAL LETTER X
-0x59	0x0059	#LATIN CAPITAL LETTER Y
-0x5A	0x005A	#LATIN CAPITAL LETTER Z
-0x5B	0x005B	#LEFT SQUARE BRACKET
-0x5C	0x005C	#REVERSE SOLIDUS
-0x5D	0x005D	#RIGHT SQUARE BRACKET
-0x5E	0x005E	#CIRCUMFLEX ACCENT
-0x5F	0x005F	#LOW LINE
-0x60	0x0060	#GRAVE ACCENT
-0x61	0x0061	#LATIN SMALL LETTER A
-0x62	0x0062	#LATIN SMALL LETTER B
-0x63	0x0063	#LATIN SMALL LETTER C
-0x64	0x0064	#LATIN SMALL LETTER D
-0x65	0x0065	#LATIN SMALL LETTER E
-0x66	0x0066	#LATIN SMALL LETTER F
-0x67	0x0067	#LATIN SMALL LETTER G
-0x68	0x0068	#LATIN SMALL LETTER H
-0x69	0x0069	#LATIN SMALL LETTER I
-0x6A	0x006A	#LATIN SMALL LETTER J
-0x6B	0x006B	#LATIN SMALL LETTER K
-0x6C	0x006C	#LATIN SMALL LETTER L
-0x6D	0x006D	#LATIN SMALL LETTER M
-0x6E	0x006E	#LATIN SMALL LETTER N
-0x6F	0x006F	#LATIN SMALL LETTER O
-0x70	0x0070	#LATIN SMALL LETTER P
-0x71	0x0071	#LATIN SMALL LETTER Q
-0x72	0x0072	#LATIN SMALL LETTER R
-0x73	0x0073	#LATIN SMALL LETTER S
-0x74	0x0074	#LATIN SMALL LETTER T
-0x75	0x0075	#LATIN SMALL LETTER U
-0x76	0x0076	#LATIN SMALL LETTER V
-0x77	0x0077	#LATIN SMALL LETTER W
-0x78	0x0078	#LATIN SMALL LETTER X
-0x79	0x0079	#LATIN SMALL LETTER Y
-0x7A	0x007A	#LATIN SMALL LETTER Z
-0x7B	0x007B	#LEFT CURLY BRACKET
-0x7C	0x007C	#VERTICAL LINE
-0x7D	0x007D	#RIGHT CURLY BRACKET
-0x7E	0x007E	#TILDE
-0x7F	0x007F	#DELETE
-0x80	0x20AC	#EURO SIGN
-0x81	      	#UNDEFINED
-0x82	0x201A	#SINGLE LOW-9 QUOTATION MARK
-0x83	0x0192	#LATIN SMALL LETTER F WITH HOOK
-0x84	0x201E	#DOUBLE LOW-9 QUOTATION MARK
-0x85	0x2026	#HORIZONTAL ELLIPSIS
-0x86	0x2020	#DAGGER
-0x87	0x2021	#DOUBLE DAGGER
-0x88	      	#UNDEFINED
-0x89	0x2030	#PER MILLE SIGN
-0x8A	      	#UNDEFINED
-0x8B	0x2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C	      	#UNDEFINED
-0x8D	      	#UNDEFINED
-0x8E	      	#UNDEFINED
-0x8F	      	#UNDEFINED
-0x90	      	#UNDEFINED
-0x91	0x2018	#LEFT SINGLE QUOTATION MARK
-0x92	0x2019	#RIGHT SINGLE QUOTATION MARK
-0x93	0x201C	#LEFT DOUBLE QUOTATION MARK
-0x94	0x201D	#RIGHT DOUBLE QUOTATION MARK
-0x95	0x2022	#BULLET
-0x96	0x2013	#EN DASH
-0x97	0x2014	#EM DASH
-0x98	      	#UNDEFINED
-0x99	0x2122	#TRADE MARK SIGN
-0x9A	      	#UNDEFINED
-0x9B	0x203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C	      	#UNDEFINED
-0x9D	      	#UNDEFINED
-0x9E	      	#UNDEFINED
-0x9F	      	#UNDEFINED
-0xA0	0x00A0	#NO-BREAK SPACE
-0xA1	0x0385	#GREEK DIALYTIKA TONOS
-0xA2	0x0386	#GREEK CAPITAL LETTER ALPHA WITH TONOS
-0xA3	0x00A3	#POUND SIGN
-0xA4	0x00A4	#CURRENCY SIGN
-0xA5	0x00A5	#YEN SIGN
-0xA6	0x00A6	#BROKEN BAR
-0xA7	0x00A7	#SECTION SIGN
-0xA8	0x00A8	#DIAERESIS
-0xA9	0x00A9	#COPYRIGHT SIGN
-0xAA	      	#UNDEFINED
-0xAB	0x00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#NOT SIGN
-0xAD	0x00AD	#SOFT HYPHEN
-0xAE	0x00AE	#REGISTERED SIGN
-0xAF	0x2015	#HORIZONTAL BAR
-0xB0	0x00B0	#DEGREE SIGN
-0xB1	0x00B1	#PLUS-MINUS SIGN
-0xB2	0x00B2	#SUPERSCRIPT TWO
-0xB3	0x00B3	#SUPERSCRIPT THREE
-0xB4	0x0384	#GREEK TONOS
-0xB5	0x00B5	#MICRO SIGN
-0xB6	0x00B6	#PILCROW SIGN
-0xB7	0x00B7	#MIDDLE DOT
-0xB8	0x0388	#GREEK CAPITAL LETTER EPSILON WITH TONOS
-0xB9	0x0389	#GREEK CAPITAL LETTER ETA WITH TONOS
-0xBA	0x038A	#GREEK CAPITAL LETTER IOTA WITH TONOS
-0xBB	0x00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x038C	#GREEK CAPITAL LETTER OMICRON WITH TONOS
-0xBD	0x00BD	#VULGAR FRACTION ONE HALF
-0xBE	0x038E	#GREEK CAPITAL LETTER UPSILON WITH TONOS
-0xBF	0x038F	#GREEK CAPITAL LETTER OMEGA WITH TONOS
-0xC0	0x0390	#GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0xC1	0x0391	#GREEK CAPITAL LETTER ALPHA
-0xC2	0x0392	#GREEK CAPITAL LETTER BETA
-0xC3	0x0393	#GREEK CAPITAL LETTER GAMMA
-0xC4	0x0394	#GREEK CAPITAL LETTER DELTA
-0xC5	0x0395	#GREEK CAPITAL LETTER EPSILON
-0xC6	0x0396	#GREEK CAPITAL LETTER ZETA
-0xC7	0x0397	#GREEK CAPITAL LETTER ETA
-0xC8	0x0398	#GREEK CAPITAL LETTER THETA
-0xC9	0x0399	#GREEK CAPITAL LETTER IOTA
-0xCA	0x039A	#GREEK CAPITAL LETTER KAPPA
-0xCB	0x039B	#GREEK CAPITAL LETTER LAMDA
-0xCC	0x039C	#GREEK CAPITAL LETTER MU
-0xCD	0x039D	#GREEK CAPITAL LETTER NU
-0xCE	0x039E	#GREEK CAPITAL LETTER XI
-0xCF	0x039F	#GREEK CAPITAL LETTER OMICRON
-0xD0	0x03A0	#GREEK CAPITAL LETTER PI
-0xD1	0x03A1	#GREEK CAPITAL LETTER RHO
-0xD2	      	#UNDEFINED
-0xD3	0x03A3	#GREEK CAPITAL LETTER SIGMA
-0xD4	0x03A4	#GREEK CAPITAL LETTER TAU
-0xD5	0x03A5	#GREEK CAPITAL LETTER UPSILON
-0xD6	0x03A6	#GREEK CAPITAL LETTER PHI
-0xD7	0x03A7	#GREEK CAPITAL LETTER CHI
-0xD8	0x03A8	#GREEK CAPITAL LETTER PSI
-0xD9	0x03A9	#GREEK CAPITAL LETTER OMEGA
-0xDA	0x03AA	#GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-0xDB	0x03AB	#GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-0xDC	0x03AC	#GREEK SMALL LETTER ALPHA WITH TONOS
-0xDD	0x03AD	#GREEK SMALL LETTER EPSILON WITH TONOS
-0xDE	0x03AE	#GREEK SMALL LETTER ETA WITH TONOS
-0xDF	0x03AF	#GREEK SMALL LETTER IOTA WITH TONOS
-0xE0	0x03B0	#GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-0xE1	0x03B1	#GREEK SMALL LETTER ALPHA
-0xE2	0x03B2	#GREEK SMALL LETTER BETA
-0xE3	0x03B3	#GREEK SMALL LETTER GAMMA
-0xE4	0x03B4	#GREEK SMALL LETTER DELTA
-0xE5	0x03B5	#GREEK SMALL LETTER EPSILON
-0xE6	0x03B6	#GREEK SMALL LETTER ZETA
-0xE7	0x03B7	#GREEK SMALL LETTER ETA
-0xE8	0x03B8	#GREEK SMALL LETTER THETA
-0xE9	0x03B9	#GREEK SMALL LETTER IOTA
-0xEA	0x03BA	#GREEK SMALL LETTER KAPPA
-0xEB	0x03BB	#GREEK SMALL LETTER LAMDA
-0xEC	0x03BC	#GREEK SMALL LETTER MU
-0xED	0x03BD	#GREEK SMALL LETTER NU
-0xEE	0x03BE	#GREEK SMALL LETTER XI
-0xEF	0x03BF	#GREEK SMALL LETTER OMICRON
-0xF0	0x03C0	#GREEK SMALL LETTER PI
-0xF1	0x03C1	#GREEK SMALL LETTER RHO
-0xF2	0x03C2	#GREEK SMALL LETTER FINAL SIGMA
-0xF3	0x03C3	#GREEK SMALL LETTER SIGMA
-0xF4	0x03C4	#GREEK SMALL LETTER TAU
-0xF5	0x03C5	#GREEK SMALL LETTER UPSILON
-0xF6	0x03C6	#GREEK SMALL LETTER PHI
-0xF7	0x03C7	#GREEK SMALL LETTER CHI
-0xF8	0x03C8	#GREEK SMALL LETTER PSI
-0xF9	0x03C9	#GREEK SMALL LETTER OMEGA
-0xFA	0x03CA	#GREEK SMALL LETTER IOTA WITH DIALYTIKA
-0xFB	0x03CB	#GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-0xFC	0x03CC	#GREEK SMALL LETTER OMICRON WITH TONOS
-0xFD	0x03CD	#GREEK SMALL LETTER UPSILON WITH TONOS
-0xFE	0x03CE	#GREEK SMALL LETTER OMEGA WITH TONOS
-0xFF	      	#UNDEFINED
diff --git a/program/lib/encoding/CP1254.map b/program/lib/encoding/CP1254.map
deleted file mode 100644
index ca1a1eb..0000000
--- a/program/lib/encoding/CP1254.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-#    Name:     cp1254 to Unicode table
-#    Unicode version: 2.0
-#    Table version: 2.01
-#    Table format:  Format A
-#    Date:          04/15/98
-#
-#    Contact:       cpxlate@microsoft.com
-#
-#    General notes: none
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp1254 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in cp1254 order
-#
-0x00	0x0000	#NULL
-0x01	0x0001	#START OF HEADING
-0x02	0x0002	#START OF TEXT
-0x03	0x0003	#END OF TEXT
-0x04	0x0004	#END OF TRANSMISSION
-0x05	0x0005	#ENQUIRY
-0x06	0x0006	#ACKNOWLEDGE
-0x07	0x0007	#BELL
-0x08	0x0008	#BACKSPACE
-0x09	0x0009	#HORIZONTAL TABULATION
-0x0A	0x000A	#LINE FEED
-0x0B	0x000B	#VERTICAL TABULATION
-0x0C	0x000C	#FORM FEED
-0x0D	0x000D	#CARRIAGE RETURN
-0x0E	0x000E	#SHIFT OUT
-0x0F	0x000F	#SHIFT IN
-0x10	0x0010	#DATA LINK ESCAPE
-0x11	0x0011	#DEVICE CONTROL ONE
-0x12	0x0012	#DEVICE CONTROL TWO
-0x13	0x0013	#DEVICE CONTROL THREE
-0x14	0x0014	#DEVICE CONTROL FOUR
-0x15	0x0015	#NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#SYNCHRONOUS IDLE
-0x17	0x0017	#END OF TRANSMISSION BLOCK
-0x18	0x0018	#CANCEL
-0x19	0x0019	#END OF MEDIUM
-0x1A	0x001A	#SUBSTITUTE
-0x1B	0x001B	#ESCAPE
-0x1C	0x001C	#FILE SEPARATOR
-0x1D	0x001D	#GROUP SEPARATOR
-0x1E	0x001E	#RECORD SEPARATOR
-0x1F	0x001F	#UNIT SEPARATOR
-0x20	0x0020	#SPACE
-0x21	0x0021	#EXCLAMATION MARK
-0x22	0x0022	#QUOTATION MARK
-0x23	0x0023	#NUMBER SIGN
-0x24	0x0024	#DOLLAR SIGN
-0x25	0x0025	#PERCENT SIGN
-0x26	0x0026	#AMPERSAND
-0x27	0x0027	#APOSTROPHE
-0x28	0x0028	#LEFT PARENTHESIS
-0x29	0x0029	#RIGHT PARENTHESIS
-0x2A	0x002A	#ASTERISK
-0x2B	0x002B	#PLUS SIGN
-0x2C	0x002C	#COMMA
-0x2D	0x002D	#HYPHEN-MINUS
-0x2E	0x002E	#FULL STOP
-0x2F	0x002F	#SOLIDUS
-0x30	0x0030	#DIGIT ZERO
-0x31	0x0031	#DIGIT ONE
-0x32	0x0032	#DIGIT TWO
-0x33	0x0033	#DIGIT THREE
-0x34	0x0034	#DIGIT FOUR
-0x35	0x0035	#DIGIT FIVE
-0x36	0x0036	#DIGIT SIX
-0x37	0x0037	#DIGIT SEVEN
-0x38	0x0038	#DIGIT EIGHT
-0x39	0x0039	#DIGIT NINE
-0x3A	0x003A	#COLON
-0x3B	0x003B	#SEMICOLON
-0x3C	0x003C	#LESS-THAN SIGN
-0x3D	0x003D	#EQUALS SIGN
-0x3E	0x003E	#GREATER-THAN SIGN
-0x3F	0x003F	#QUESTION MARK
-0x40	0x0040	#COMMERCIAL AT
-0x41	0x0041	#LATIN CAPITAL LETTER A
-0x42	0x0042	#LATIN CAPITAL LETTER B
-0x43	0x0043	#LATIN CAPITAL LETTER C
-0x44	0x0044	#LATIN CAPITAL LETTER D
-0x45	0x0045	#LATIN CAPITAL LETTER E
-0x46	0x0046	#LATIN CAPITAL LETTER F
-0x47	0x0047	#LATIN CAPITAL LETTER G
-0x48	0x0048	#LATIN CAPITAL LETTER H
-0x49	0x0049	#LATIN CAPITAL LETTER I
-0x4A	0x004A	#LATIN CAPITAL LETTER J
-0x4B	0x004B	#LATIN CAPITAL LETTER K
-0x4C	0x004C	#LATIN CAPITAL LETTER L
-0x4D	0x004D	#LATIN CAPITAL LETTER M
-0x4E	0x004E	#LATIN CAPITAL LETTER N
-0x4F	0x004F	#LATIN CAPITAL LETTER O
-0x50	0x0050	#LATIN CAPITAL LETTER P
-0x51	0x0051	#LATIN CAPITAL LETTER Q
-0x52	0x0052	#LATIN CAPITAL LETTER R
-0x53	0x0053	#LATIN CAPITAL LETTER S
-0x54	0x0054	#LATIN CAPITAL LETTER T
-0x55	0x0055	#LATIN CAPITAL LETTER U
-0x56	0x0056	#LATIN CAPITAL LETTER V
-0x57	0x0057	#LATIN CAPITAL LETTER W
-0x58	0x0058	#LATIN CAPITAL LETTER X
-0x59	0x0059	#LATIN CAPITAL LETTER Y
-0x5A	0x005A	#LATIN CAPITAL LETTER Z
-0x5B	0x005B	#LEFT SQUARE BRACKET
-0x5C	0x005C	#REVERSE SOLIDUS
-0x5D	0x005D	#RIGHT SQUARE BRACKET
-0x5E	0x005E	#CIRCUMFLEX ACCENT
-0x5F	0x005F	#LOW LINE
-0x60	0x0060	#GRAVE ACCENT
-0x61	0x0061	#LATIN SMALL LETTER A
-0x62	0x0062	#LATIN SMALL LETTER B
-0x63	0x0063	#LATIN SMALL LETTER C
-0x64	0x0064	#LATIN SMALL LETTER D
-0x65	0x0065	#LATIN SMALL LETTER E
-0x66	0x0066	#LATIN SMALL LETTER F
-0x67	0x0067	#LATIN SMALL LETTER G
-0x68	0x0068	#LATIN SMALL LETTER H
-0x69	0x0069	#LATIN SMALL LETTER I
-0x6A	0x006A	#LATIN SMALL LETTER J
-0x6B	0x006B	#LATIN SMALL LETTER K
-0x6C	0x006C	#LATIN SMALL LETTER L
-0x6D	0x006D	#LATIN SMALL LETTER M
-0x6E	0x006E	#LATIN SMALL LETTER N
-0x6F	0x006F	#LATIN SMALL LETTER O
-0x70	0x0070	#LATIN SMALL LETTER P
-0x71	0x0071	#LATIN SMALL LETTER Q
-0x72	0x0072	#LATIN SMALL LETTER R
-0x73	0x0073	#LATIN SMALL LETTER S
-0x74	0x0074	#LATIN SMALL LETTER T
-0x75	0x0075	#LATIN SMALL LETTER U
-0x76	0x0076	#LATIN SMALL LETTER V
-0x77	0x0077	#LATIN SMALL LETTER W
-0x78	0x0078	#LATIN SMALL LETTER X
-0x79	0x0079	#LATIN SMALL LETTER Y
-0x7A	0x007A	#LATIN SMALL LETTER Z
-0x7B	0x007B	#LEFT CURLY BRACKET
-0x7C	0x007C	#VERTICAL LINE
-0x7D	0x007D	#RIGHT CURLY BRACKET
-0x7E	0x007E	#TILDE
-0x7F	0x007F	#DELETE
-0x80	0x20AC	#EURO SIGN
-0x81	      	#UNDEFINED
-0x82	0x201A	#SINGLE LOW-9 QUOTATION MARK
-0x83	0x0192	#LATIN SMALL LETTER F WITH HOOK
-0x84	0x201E	#DOUBLE LOW-9 QUOTATION MARK
-0x85	0x2026	#HORIZONTAL ELLIPSIS
-0x86	0x2020	#DAGGER
-0x87	0x2021	#DOUBLE DAGGER
-0x88	0x02C6	#MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89	0x2030	#PER MILLE SIGN
-0x8A	0x0160	#LATIN CAPITAL LETTER S WITH CARON
-0x8B	0x2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C	0x0152	#LATIN CAPITAL LIGATURE OE
-0x8D	      	#UNDEFINED
-0x8E	      	#UNDEFINED
-0x8F	      	#UNDEFINED
-0x90	      	#UNDEFINED
-0x91	0x2018	#LEFT SINGLE QUOTATION MARK
-0x92	0x2019	#RIGHT SINGLE QUOTATION MARK
-0x93	0x201C	#LEFT DOUBLE QUOTATION MARK
-0x94	0x201D	#RIGHT DOUBLE QUOTATION MARK
-0x95	0x2022	#BULLET
-0x96	0x2013	#EN DASH
-0x97	0x2014	#EM DASH
-0x98	0x02DC	#SMALL TILDE
-0x99	0x2122	#TRADE MARK SIGN
-0x9A	0x0161	#LATIN SMALL LETTER S WITH CARON
-0x9B	0x203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C	0x0153	#LATIN SMALL LIGATURE OE
-0x9D	      	#UNDEFINED
-0x9E	      	#UNDEFINED
-0x9F	0x0178	#LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xA0	0x00A0	#NO-BREAK SPACE
-0xA1	0x00A1	#INVERTED EXCLAMATION MARK
-0xA2	0x00A2	#CENT SIGN
-0xA3	0x00A3	#POUND SIGN
-0xA4	0x00A4	#CURRENCY SIGN
-0xA5	0x00A5	#YEN SIGN
-0xA6	0x00A6	#BROKEN BAR
-0xA7	0x00A7	#SECTION SIGN
-0xA8	0x00A8	#DIAERESIS
-0xA9	0x00A9	#COPYRIGHT SIGN
-0xAA	0x00AA	#FEMININE ORDINAL INDICATOR
-0xAB	0x00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#NOT SIGN
-0xAD	0x00AD	#SOFT HYPHEN
-0xAE	0x00AE	#REGISTERED SIGN
-0xAF	0x00AF	#MACRON
-0xB0	0x00B0	#DEGREE SIGN
-0xB1	0x00B1	#PLUS-MINUS SIGN
-0xB2	0x00B2	#SUPERSCRIPT TWO
-0xB3	0x00B3	#SUPERSCRIPT THREE
-0xB4	0x00B4	#ACUTE ACCENT
-0xB5	0x00B5	#MICRO SIGN
-0xB6	0x00B6	#PILCROW SIGN
-0xB7	0x00B7	#MIDDLE DOT
-0xB8	0x00B8	#CEDILLA
-0xB9	0x00B9	#SUPERSCRIPT ONE
-0xBA	0x00BA	#MASCULINE ORDINAL INDICATOR
-0xBB	0x00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#VULGAR FRACTION THREE QUARTERS
-0xBF	0x00BF	#INVERTED QUESTION MARK
-0xC0	0x00C0	#LATIN CAPITAL LETTER A WITH GRAVE
-0xC1	0x00C1	#LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x00C3	#LATIN CAPITAL LETTER A WITH TILDE
-0xC4	0x00C4	#LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x00C6	#LATIN CAPITAL LETTER AE
-0xC7	0x00C7	#LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x00C8	#LATIN CAPITAL LETTER E WITH GRAVE
-0xC9	0x00C9	#LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x00CA	#LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB	0x00CB	#LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x00CC	#LATIN CAPITAL LETTER I WITH GRAVE
-0xCD	0x00CD	#LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0	0x011E	#LATIN CAPITAL LETTER G WITH BREVE
-0xD1	0x00D1	#LATIN CAPITAL LETTER N WITH TILDE
-0xD2	0x00D2	#LATIN CAPITAL LETTER O WITH GRAVE
-0xD3	0x00D3	#LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x00D5	#LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#MULTIPLICATION SIGN
-0xD8	0x00D8	#LATIN CAPITAL LETTER O WITH STROKE
-0xD9	0x00D9	#LATIN CAPITAL LETTER U WITH GRAVE
-0xDA	0x00DA	#LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x0130	#LATIN CAPITAL LETTER I WITH DOT ABOVE
-0xDE	0x015E	#LATIN CAPITAL LETTER S WITH CEDILLA
-0xDF	0x00DF	#LATIN SMALL LETTER SHARP S
-0xE0	0x00E0	#LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x00E1	#LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x00E3	#LATIN SMALL LETTER A WITH TILDE
-0xE4	0x00E4	#LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x00E6	#LATIN SMALL LETTER AE
-0xE7	0x00E7	#LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x00EC	#LATIN SMALL LETTER I WITH GRAVE
-0xED	0x00ED	#LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x011F	#LATIN SMALL LETTER G WITH BREVE
-0xF1	0x00F1	#LATIN SMALL LETTER N WITH TILDE
-0xF2	0x00F2	#LATIN SMALL LETTER O WITH GRAVE
-0xF3	0x00F3	#LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x00F5	#LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#DIVISION SIGN
-0xF8	0x00F8	#LATIN SMALL LETTER O WITH STROKE
-0xF9	0x00F9	#LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x00FA	#LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x0131	#LATIN SMALL LETTER DOTLESS I
-0xFE	0x015F	#LATIN SMALL LETTER S WITH CEDILLA
-0xFF	0x00FF	#LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/CP1255.map b/program/lib/encoding/CP1255.map
deleted file mode 100644
index 341517f..0000000
--- a/program/lib/encoding/CP1255.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-#    Name:     cp1255 to Unicode table
-#    Unicode version: 2.0
-#    Table version: 2.01
-#    Table format:  Format A
-#    Date:          1/7/2000
-#
-#    Contact:       cpxlate@microsoft.com
-#
-#    General notes: none
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp1255 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in cp1255 order
-#
-0x00	0x0000	#NULL
-0x01	0x0001	#START OF HEADING
-0x02	0x0002	#START OF TEXT
-0x03	0x0003	#END OF TEXT
-0x04	0x0004	#END OF TRANSMISSION
-0x05	0x0005	#ENQUIRY
-0x06	0x0006	#ACKNOWLEDGE
-0x07	0x0007	#BELL
-0x08	0x0008	#BACKSPACE
-0x09	0x0009	#HORIZONTAL TABULATION
-0x0A	0x000A	#LINE FEED
-0x0B	0x000B	#VERTICAL TABULATION
-0x0C	0x000C	#FORM FEED
-0x0D	0x000D	#CARRIAGE RETURN
-0x0E	0x000E	#SHIFT OUT
-0x0F	0x000F	#SHIFT IN
-0x10	0x0010	#DATA LINK ESCAPE
-0x11	0x0011	#DEVICE CONTROL ONE
-0x12	0x0012	#DEVICE CONTROL TWO
-0x13	0x0013	#DEVICE CONTROL THREE
-0x14	0x0014	#DEVICE CONTROL FOUR
-0x15	0x0015	#NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#SYNCHRONOUS IDLE
-0x17	0x0017	#END OF TRANSMISSION BLOCK
-0x18	0x0018	#CANCEL
-0x19	0x0019	#END OF MEDIUM
-0x1A	0x001A	#SUBSTITUTE
-0x1B	0x001B	#ESCAPE
-0x1C	0x001C	#FILE SEPARATOR
-0x1D	0x001D	#GROUP SEPARATOR
-0x1E	0x001E	#RECORD SEPARATOR
-0x1F	0x001F	#UNIT SEPARATOR
-0x20	0x0020	#SPACE
-0x21	0x0021	#EXCLAMATION MARK
-0x22	0x0022	#QUOTATION MARK
-0x23	0x0023	#NUMBER SIGN
-0x24	0x0024	#DOLLAR SIGN
-0x25	0x0025	#PERCENT SIGN
-0x26	0x0026	#AMPERSAND
-0x27	0x0027	#APOSTROPHE
-0x28	0x0028	#LEFT PARENTHESIS
-0x29	0x0029	#RIGHT PARENTHESIS
-0x2A	0x002A	#ASTERISK
-0x2B	0x002B	#PLUS SIGN
-0x2C	0x002C	#COMMA
-0x2D	0x002D	#HYPHEN-MINUS
-0x2E	0x002E	#FULL STOP
-0x2F	0x002F	#SOLIDUS
-0x30	0x0030	#DIGIT ZERO
-0x31	0x0031	#DIGIT ONE
-0x32	0x0032	#DIGIT TWO
-0x33	0x0033	#DIGIT THREE
-0x34	0x0034	#DIGIT FOUR
-0x35	0x0035	#DIGIT FIVE
-0x36	0x0036	#DIGIT SIX
-0x37	0x0037	#DIGIT SEVEN
-0x38	0x0038	#DIGIT EIGHT
-0x39	0x0039	#DIGIT NINE
-0x3A	0x003A	#COLON
-0x3B	0x003B	#SEMICOLON
-0x3C	0x003C	#LESS-THAN SIGN
-0x3D	0x003D	#EQUALS SIGN
-0x3E	0x003E	#GREATER-THAN SIGN
-0x3F	0x003F	#QUESTION MARK
-0x40	0x0040	#COMMERCIAL AT
-0x41	0x0041	#LATIN CAPITAL LETTER A
-0x42	0x0042	#LATIN CAPITAL LETTER B
-0x43	0x0043	#LATIN CAPITAL LETTER C
-0x44	0x0044	#LATIN CAPITAL LETTER D
-0x45	0x0045	#LATIN CAPITAL LETTER E
-0x46	0x0046	#LATIN CAPITAL LETTER F
-0x47	0x0047	#LATIN CAPITAL LETTER G
-0x48	0x0048	#LATIN CAPITAL LETTER H
-0x49	0x0049	#LATIN CAPITAL LETTER I
-0x4A	0x004A	#LATIN CAPITAL LETTER J
-0x4B	0x004B	#LATIN CAPITAL LETTER K
-0x4C	0x004C	#LATIN CAPITAL LETTER L
-0x4D	0x004D	#LATIN CAPITAL LETTER M
-0x4E	0x004E	#LATIN CAPITAL LETTER N
-0x4F	0x004F	#LATIN CAPITAL LETTER O
-0x50	0x0050	#LATIN CAPITAL LETTER P
-0x51	0x0051	#LATIN CAPITAL LETTER Q
-0x52	0x0052	#LATIN CAPITAL LETTER R
-0x53	0x0053	#LATIN CAPITAL LETTER S
-0x54	0x0054	#LATIN CAPITAL LETTER T
-0x55	0x0055	#LATIN CAPITAL LETTER U
-0x56	0x0056	#LATIN CAPITAL LETTER V
-0x57	0x0057	#LATIN CAPITAL LETTER W
-0x58	0x0058	#LATIN CAPITAL LETTER X
-0x59	0x0059	#LATIN CAPITAL LETTER Y
-0x5A	0x005A	#LATIN CAPITAL LETTER Z
-0x5B	0x005B	#LEFT SQUARE BRACKET
-0x5C	0x005C	#REVERSE SOLIDUS
-0x5D	0x005D	#RIGHT SQUARE BRACKET
-0x5E	0x005E	#CIRCUMFLEX ACCENT
-0x5F	0x005F	#LOW LINE
-0x60	0x0060	#GRAVE ACCENT
-0x61	0x0061	#LATIN SMALL LETTER A
-0x62	0x0062	#LATIN SMALL LETTER B
-0x63	0x0063	#LATIN SMALL LETTER C
-0x64	0x0064	#LATIN SMALL LETTER D
-0x65	0x0065	#LATIN SMALL LETTER E
-0x66	0x0066	#LATIN SMALL LETTER F
-0x67	0x0067	#LATIN SMALL LETTER G
-0x68	0x0068	#LATIN SMALL LETTER H
-0x69	0x0069	#LATIN SMALL LETTER I
-0x6A	0x006A	#LATIN SMALL LETTER J
-0x6B	0x006B	#LATIN SMALL LETTER K
-0x6C	0x006C	#LATIN SMALL LETTER L
-0x6D	0x006D	#LATIN SMALL LETTER M
-0x6E	0x006E	#LATIN SMALL LETTER N
-0x6F	0x006F	#LATIN SMALL LETTER O
-0x70	0x0070	#LATIN SMALL LETTER P
-0x71	0x0071	#LATIN SMALL LETTER Q
-0x72	0x0072	#LATIN SMALL LETTER R
-0x73	0x0073	#LATIN SMALL LETTER S
-0x74	0x0074	#LATIN SMALL LETTER T
-0x75	0x0075	#LATIN SMALL LETTER U
-0x76	0x0076	#LATIN SMALL LETTER V
-0x77	0x0077	#LATIN SMALL LETTER W
-0x78	0x0078	#LATIN SMALL LETTER X
-0x79	0x0079	#LATIN SMALL LETTER Y
-0x7A	0x007A	#LATIN SMALL LETTER Z
-0x7B	0x007B	#LEFT CURLY BRACKET
-0x7C	0x007C	#VERTICAL LINE
-0x7D	0x007D	#RIGHT CURLY BRACKET
-0x7E	0x007E	#TILDE
-0x7F	0x007F	#DELETE
-0x80	0x20AC	#EURO SIGN
-0x81	      	#UNDEFINED
-0x82	0x201A	#SINGLE LOW-9 QUOTATION MARK
-0x83	0x0192	#LATIN SMALL LETTER F WITH HOOK
-0x84	0x201E	#DOUBLE LOW-9 QUOTATION MARK
-0x85	0x2026	#HORIZONTAL ELLIPSIS
-0x86	0x2020	#DAGGER
-0x87	0x2021	#DOUBLE DAGGER
-0x88	0x02C6	#MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89	0x2030	#PER MILLE SIGN
-0x8A	      	#UNDEFINED
-0x8B	0x2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C	      	#UNDEFINED
-0x8D	      	#UNDEFINED
-0x8E	      	#UNDEFINED
-0x8F	      	#UNDEFINED
-0x90	      	#UNDEFINED
-0x91	0x2018	#LEFT SINGLE QUOTATION MARK
-0x92	0x2019	#RIGHT SINGLE QUOTATION MARK
-0x93	0x201C	#LEFT DOUBLE QUOTATION MARK
-0x94	0x201D	#RIGHT DOUBLE QUOTATION MARK
-0x95	0x2022	#BULLET
-0x96	0x2013	#EN DASH
-0x97	0x2014	#EM DASH
-0x98	0x02DC	#SMALL TILDE
-0x99	0x2122	#TRADE MARK SIGN
-0x9A	      	#UNDEFINED
-0x9B	0x203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C	      	#UNDEFINED
-0x9D	      	#UNDEFINED
-0x9E	      	#UNDEFINED
-0x9F	      	#UNDEFINED
-0xA0	0x00A0	#NO-BREAK SPACE
-0xA1	0x00A1	#INVERTED EXCLAMATION MARK
-0xA2	0x00A2	#CENT SIGN
-0xA3	0x00A3	#POUND SIGN
-0xA4	0x20AA	#NEW SHEQEL SIGN
-0xA5	0x00A5	#YEN SIGN
-0xA6	0x00A6	#BROKEN BAR
-0xA7	0x00A7	#SECTION SIGN
-0xA8	0x00A8	#DIAERESIS
-0xA9	0x00A9	#COPYRIGHT SIGN
-0xAA	0x00D7	#MULTIPLICATION SIGN
-0xAB	0x00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#NOT SIGN
-0xAD	0x00AD	#SOFT HYPHEN
-0xAE	0x00AE	#REGISTERED SIGN
-0xAF	0x00AF	#MACRON
-0xB0	0x00B0	#DEGREE SIGN
-0xB1	0x00B1	#PLUS-MINUS SIGN
-0xB2	0x00B2	#SUPERSCRIPT TWO
-0xB3	0x00B3	#SUPERSCRIPT THREE
-0xB4	0x00B4	#ACUTE ACCENT
-0xB5	0x00B5	#MICRO SIGN
-0xB6	0x00B6	#PILCROW SIGN
-0xB7	0x00B7	#MIDDLE DOT
-0xB8	0x00B8	#CEDILLA
-0xB9	0x00B9	#SUPERSCRIPT ONE
-0xBA	0x00F7	#DIVISION SIGN
-0xBB	0x00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#VULGAR FRACTION THREE QUARTERS
-0xBF	0x00BF	#INVERTED QUESTION MARK
-0xC0	0x05B0	#HEBREW POINT SHEVA
-0xC1	0x05B1	#HEBREW POINT HATAF SEGOL
-0xC2	0x05B2	#HEBREW POINT HATAF PATAH
-0xC3	0x05B3	#HEBREW POINT HATAF QAMATS
-0xC4	0x05B4	#HEBREW POINT HIRIQ
-0xC5	0x05B5	#HEBREW POINT TSERE
-0xC6	0x05B6	#HEBREW POINT SEGOL
-0xC7	0x05B7	#HEBREW POINT PATAH
-0xC8	0x05B8	#HEBREW POINT QAMATS
-0xC9	0x05B9	#HEBREW POINT HOLAM
-0xCA		#UNDEFINED
-0xCB	0x05BB	#HEBREW POINT QUBUTS
-0xCC	0x05BC	#HEBREW POINT DAGESH OR MAPIQ
-0xCD	0x05BD	#HEBREW POINT METEG
-0xCE	0x05BE	#HEBREW PUNCTUATION MAQAF
-0xCF	0x05BF	#HEBREW POINT RAFE
-0xD0	0x05C0	#HEBREW PUNCTUATION PASEQ
-0xD1	0x05C1	#HEBREW POINT SHIN DOT
-0xD2	0x05C2	#HEBREW POINT SIN DOT
-0xD3	0x05C3	#HEBREW PUNCTUATION SOF PASUQ
-0xD4	0x05F0	#HEBREW LIGATURE YIDDISH DOUBLE VAV
-0xD5	0x05F1	#HEBREW LIGATURE YIDDISH VAV YOD
-0xD6	0x05F2	#HEBREW LIGATURE YIDDISH DOUBLE YOD
-0xD7	0x05F3	#HEBREW PUNCTUATION GERESH
-0xD8	0x05F4	#HEBREW PUNCTUATION GERSHAYIM
-0xD9	      	#UNDEFINED
-0xDA	      	#UNDEFINED
-0xDB	      	#UNDEFINED
-0xDC	      	#UNDEFINED
-0xDD	      	#UNDEFINED
-0xDE	      	#UNDEFINED
-0xDF	      	#UNDEFINED
-0xE0	0x05D0	#HEBREW LETTER ALEF
-0xE1	0x05D1	#HEBREW LETTER BET
-0xE2	0x05D2	#HEBREW LETTER GIMEL
-0xE3	0x05D3	#HEBREW LETTER DALET
-0xE4	0x05D4	#HEBREW LETTER HE
-0xE5	0x05D5	#HEBREW LETTER VAV
-0xE6	0x05D6	#HEBREW LETTER ZAYIN
-0xE7	0x05D7	#HEBREW LETTER HET
-0xE8	0x05D8	#HEBREW LETTER TET
-0xE9	0x05D9	#HEBREW LETTER YOD
-0xEA	0x05DA	#HEBREW LETTER FINAL KAF
-0xEB	0x05DB	#HEBREW LETTER KAF
-0xEC	0x05DC	#HEBREW LETTER LAMED
-0xED	0x05DD	#HEBREW LETTER FINAL MEM
-0xEE	0x05DE	#HEBREW LETTER MEM
-0xEF	0x05DF	#HEBREW LETTER FINAL NUN
-0xF0	0x05E0	#HEBREW LETTER NUN
-0xF1	0x05E1	#HEBREW LETTER SAMEKH
-0xF2	0x05E2	#HEBREW LETTER AYIN
-0xF3	0x05E3	#HEBREW LETTER FINAL PE
-0xF4	0x05E4	#HEBREW LETTER PE
-0xF5	0x05E5	#HEBREW LETTER FINAL TSADI
-0xF6	0x05E6	#HEBREW LETTER TSADI
-0xF7	0x05E7	#HEBREW LETTER QOF
-0xF8	0x05E8	#HEBREW LETTER RESH
-0xF9	0x05E9	#HEBREW LETTER SHIN
-0xFA	0x05EA	#HEBREW LETTER TAV
-0xFB	      	#UNDEFINED
-0xFC	      	#UNDEFINED
-0xFD	0x200E	#LEFT-TO-RIGHT MARK
-0xFE	0x200F	#RIGHT-TO-LEFT MARK
-0xFF	      	#UNDEFINED
diff --git a/program/lib/encoding/CP1256.map b/program/lib/encoding/CP1256.map
deleted file mode 100644
index 0edd081..0000000
--- a/program/lib/encoding/CP1256.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-#    Name:     cp1256 to Unicode table
-#    Unicode version: 2.1
-#    Table version: 2.01
-#    Table format:  Format A
-#    Date:          01/5/99
-#
-#    Contact:       cpxlate@microsoft.com
-#
-#    General notes: none
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp1256 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in cp1256 order
-#
-0x00	0x0000	#NULL
-0x01	0x0001	#START OF HEADING
-0x02	0x0002	#START OF TEXT
-0x03	0x0003	#END OF TEXT
-0x04	0x0004	#END OF TRANSMISSION
-0x05	0x0005	#ENQUIRY
-0x06	0x0006	#ACKNOWLEDGE
-0x07	0x0007	#BELL
-0x08	0x0008	#BACKSPACE
-0x09	0x0009	#HORIZONTAL TABULATION
-0x0A	0x000A	#LINE FEED
-0x0B	0x000B	#VERTICAL TABULATION
-0x0C	0x000C	#FORM FEED
-0x0D	0x000D	#CARRIAGE RETURN
-0x0E	0x000E	#SHIFT OUT
-0x0F	0x000F	#SHIFT IN
-0x10	0x0010	#DATA LINK ESCAPE
-0x11	0x0011	#DEVICE CONTROL ONE
-0x12	0x0012	#DEVICE CONTROL TWO
-0x13	0x0013	#DEVICE CONTROL THREE
-0x14	0x0014	#DEVICE CONTROL FOUR
-0x15	0x0015	#NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#SYNCHRONOUS IDLE
-0x17	0x0017	#END OF TRANSMISSION BLOCK
-0x18	0x0018	#CANCEL
-0x19	0x0019	#END OF MEDIUM
-0x1A	0x001A	#SUBSTITUTE
-0x1B	0x001B	#ESCAPE
-0x1C	0x001C	#FILE SEPARATOR
-0x1D	0x001D	#GROUP SEPARATOR
-0x1E	0x001E	#RECORD SEPARATOR
-0x1F	0x001F	#UNIT SEPARATOR
-0x20	0x0020	#SPACE
-0x21	0x0021	#EXCLAMATION MARK
-0x22	0x0022	#QUOTATION MARK
-0x23	0x0023	#NUMBER SIGN
-0x24	0x0024	#DOLLAR SIGN
-0x25	0x0025	#PERCENT SIGN
-0x26	0x0026	#AMPERSAND
-0x27	0x0027	#APOSTROPHE
-0x28	0x0028	#LEFT PARENTHESIS
-0x29	0x0029	#RIGHT PARENTHESIS
-0x2A	0x002A	#ASTERISK
-0x2B	0x002B	#PLUS SIGN
-0x2C	0x002C	#COMMA
-0x2D	0x002D	#HYPHEN-MINUS
-0x2E	0x002E	#FULL STOP
-0x2F	0x002F	#SOLIDUS
-0x30	0x0030	#DIGIT ZERO
-0x31	0x0031	#DIGIT ONE
-0x32	0x0032	#DIGIT TWO
-0x33	0x0033	#DIGIT THREE
-0x34	0x0034	#DIGIT FOUR
-0x35	0x0035	#DIGIT FIVE
-0x36	0x0036	#DIGIT SIX
-0x37	0x0037	#DIGIT SEVEN
-0x38	0x0038	#DIGIT EIGHT
-0x39	0x0039	#DIGIT NINE
-0x3A	0x003A	#COLON
-0x3B	0x003B	#SEMICOLON
-0x3C	0x003C	#LESS-THAN SIGN
-0x3D	0x003D	#EQUALS SIGN
-0x3E	0x003E	#GREATER-THAN SIGN
-0x3F	0x003F	#QUESTION MARK
-0x40	0x0040	#COMMERCIAL AT
-0x41	0x0041	#LATIN CAPITAL LETTER A
-0x42	0x0042	#LATIN CAPITAL LETTER B
-0x43	0x0043	#LATIN CAPITAL LETTER C
-0x44	0x0044	#LATIN CAPITAL LETTER D
-0x45	0x0045	#LATIN CAPITAL LETTER E
-0x46	0x0046	#LATIN CAPITAL LETTER F
-0x47	0x0047	#LATIN CAPITAL LETTER G
-0x48	0x0048	#LATIN CAPITAL LETTER H
-0x49	0x0049	#LATIN CAPITAL LETTER I
-0x4A	0x004A	#LATIN CAPITAL LETTER J
-0x4B	0x004B	#LATIN CAPITAL LETTER K
-0x4C	0x004C	#LATIN CAPITAL LETTER L
-0x4D	0x004D	#LATIN CAPITAL LETTER M
-0x4E	0x004E	#LATIN CAPITAL LETTER N
-0x4F	0x004F	#LATIN CAPITAL LETTER O
-0x50	0x0050	#LATIN CAPITAL LETTER P
-0x51	0x0051	#LATIN CAPITAL LETTER Q
-0x52	0x0052	#LATIN CAPITAL LETTER R
-0x53	0x0053	#LATIN CAPITAL LETTER S
-0x54	0x0054	#LATIN CAPITAL LETTER T
-0x55	0x0055	#LATIN CAPITAL LETTER U
-0x56	0x0056	#LATIN CAPITAL LETTER V
-0x57	0x0057	#LATIN CAPITAL LETTER W
-0x58	0x0058	#LATIN CAPITAL LETTER X
-0x59	0x0059	#LATIN CAPITAL LETTER Y
-0x5A	0x005A	#LATIN CAPITAL LETTER Z
-0x5B	0x005B	#LEFT SQUARE BRACKET
-0x5C	0x005C	#REVERSE SOLIDUS
-0x5D	0x005D	#RIGHT SQUARE BRACKET
-0x5E	0x005E	#CIRCUMFLEX ACCENT
-0x5F	0x005F	#LOW LINE
-0x60	0x0060	#GRAVE ACCENT
-0x61	0x0061	#LATIN SMALL LETTER A
-0x62	0x0062	#LATIN SMALL LETTER B
-0x63	0x0063	#LATIN SMALL LETTER C
-0x64	0x0064	#LATIN SMALL LETTER D
-0x65	0x0065	#LATIN SMALL LETTER E
-0x66	0x0066	#LATIN SMALL LETTER F
-0x67	0x0067	#LATIN SMALL LETTER G
-0x68	0x0068	#LATIN SMALL LETTER H
-0x69	0x0069	#LATIN SMALL LETTER I
-0x6A	0x006A	#LATIN SMALL LETTER J
-0x6B	0x006B	#LATIN SMALL LETTER K
-0x6C	0x006C	#LATIN SMALL LETTER L
-0x6D	0x006D	#LATIN SMALL LETTER M
-0x6E	0x006E	#LATIN SMALL LETTER N
-0x6F	0x006F	#LATIN SMALL LETTER O
-0x70	0x0070	#LATIN SMALL LETTER P
-0x71	0x0071	#LATIN SMALL LETTER Q
-0x72	0x0072	#LATIN SMALL LETTER R
-0x73	0x0073	#LATIN SMALL LETTER S
-0x74	0x0074	#LATIN SMALL LETTER T
-0x75	0x0075	#LATIN SMALL LETTER U
-0x76	0x0076	#LATIN SMALL LETTER V
-0x77	0x0077	#LATIN SMALL LETTER W
-0x78	0x0078	#LATIN SMALL LETTER X
-0x79	0x0079	#LATIN SMALL LETTER Y
-0x7A	0x007A	#LATIN SMALL LETTER Z
-0x7B	0x007B	#LEFT CURLY BRACKET
-0x7C	0x007C	#VERTICAL LINE
-0x7D	0x007D	#RIGHT CURLY BRACKET
-0x7E	0x007E	#TILDE
-0x7F	0x007F	#DELETE
-0x80	0x20AC	#EURO SIGN
-0x81	0x067E	#ARABIC LETTER PEH
-0x82	0x201A	#SINGLE LOW-9 QUOTATION MARK
-0x83	0x0192	#LATIN SMALL LETTER F WITH HOOK
-0x84	0x201E	#DOUBLE LOW-9 QUOTATION MARK
-0x85	0x2026	#HORIZONTAL ELLIPSIS
-0x86	0x2020	#DAGGER
-0x87	0x2021	#DOUBLE DAGGER
-0x88	0x02C6	#MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89	0x2030	#PER MILLE SIGN
-0x8A	0x0679	#ARABIC LETTER TTEH
-0x8B	0x2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C	0x0152	#LATIN CAPITAL LIGATURE OE
-0x8D	0x0686	#ARABIC LETTER TCHEH
-0x8E	0x0698	#ARABIC LETTER JEH
-0x8F	0x0688	#ARABIC LETTER DDAL
-0x90	0x06AF	#ARABIC LETTER GAF
-0x91	0x2018	#LEFT SINGLE QUOTATION MARK
-0x92	0x2019	#RIGHT SINGLE QUOTATION MARK
-0x93	0x201C	#LEFT DOUBLE QUOTATION MARK
-0x94	0x201D	#RIGHT DOUBLE QUOTATION MARK
-0x95	0x2022	#BULLET
-0x96	0x2013	#EN DASH
-0x97	0x2014	#EM DASH
-0x98	0x06A9	#ARABIC LETTER KEHEH
-0x99	0x2122	#TRADE MARK SIGN
-0x9A	0x0691	#ARABIC LETTER RREH
-0x9B	0x203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C	0x0153	#LATIN SMALL LIGATURE OE
-0x9D	0x200C	#ZERO WIDTH NON-JOINER
-0x9E	0x200D	#ZERO WIDTH JOINER
-0x9F	0x06BA	#ARABIC LETTER NOON GHUNNA
-0xA0	0x00A0	#NO-BREAK SPACE
-0xA1	0x060C	#ARABIC COMMA
-0xA2	0x00A2	#CENT SIGN
-0xA3	0x00A3	#POUND SIGN
-0xA4	0x00A4	#CURRENCY SIGN
-0xA5	0x00A5	#YEN SIGN
-0xA6	0x00A6	#BROKEN BAR
-0xA7	0x00A7	#SECTION SIGN
-0xA8	0x00A8	#DIAERESIS
-0xA9	0x00A9	#COPYRIGHT SIGN
-0xAA	0x06BE	#ARABIC LETTER HEH DOACHASHMEE
-0xAB	0x00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#NOT SIGN
-0xAD	0x00AD	#SOFT HYPHEN
-0xAE	0x00AE	#REGISTERED SIGN
-0xAF	0x00AF	#MACRON
-0xB0	0x00B0	#DEGREE SIGN
-0xB1	0x00B1	#PLUS-MINUS SIGN
-0xB2	0x00B2	#SUPERSCRIPT TWO
-0xB3	0x00B3	#SUPERSCRIPT THREE
-0xB4	0x00B4	#ACUTE ACCENT
-0xB5	0x00B5	#MICRO SIGN
-0xB6	0x00B6	#PILCROW SIGN
-0xB7	0x00B7	#MIDDLE DOT
-0xB8	0x00B8	#CEDILLA
-0xB9	0x00B9	#SUPERSCRIPT ONE
-0xBA	0x061B	#ARABIC SEMICOLON
-0xBB	0x00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#VULGAR FRACTION THREE QUARTERS
-0xBF	0x061F	#ARABIC QUESTION MARK
-0xC0	0x06C1	#ARABIC LETTER HEH GOAL
-0xC1	0x0621	#ARABIC LETTER HAMZA
-0xC2	0x0622	#ARABIC LETTER ALEF WITH MADDA ABOVE
-0xC3	0x0623	#ARABIC LETTER ALEF WITH HAMZA ABOVE
-0xC4	0x0624	#ARABIC LETTER WAW WITH HAMZA ABOVE
-0xC5	0x0625	#ARABIC LETTER ALEF WITH HAMZA BELOW
-0xC6	0x0626	#ARABIC LETTER YEH WITH HAMZA ABOVE
-0xC7	0x0627	#ARABIC LETTER ALEF
-0xC8	0x0628	#ARABIC LETTER BEH
-0xC9	0x0629	#ARABIC LETTER TEH MARBUTA
-0xCA	0x062A	#ARABIC LETTER TEH
-0xCB	0x062B	#ARABIC LETTER THEH
-0xCC	0x062C	#ARABIC LETTER JEEM
-0xCD	0x062D	#ARABIC LETTER HAH
-0xCE	0x062E	#ARABIC LETTER KHAH
-0xCF	0x062F	#ARABIC LETTER DAL
-0xD0	0x0630	#ARABIC LETTER THAL
-0xD1	0x0631	#ARABIC LETTER REH
-0xD2	0x0632	#ARABIC LETTER ZAIN
-0xD3	0x0633	#ARABIC LETTER SEEN
-0xD4	0x0634	#ARABIC LETTER SHEEN
-0xD5	0x0635	#ARABIC LETTER SAD
-0xD6	0x0636	#ARABIC LETTER DAD
-0xD7	0x00D7	#MULTIPLICATION SIGN
-0xD8	0x0637	#ARABIC LETTER TAH
-0xD9	0x0638	#ARABIC LETTER ZAH
-0xDA	0x0639	#ARABIC LETTER AIN
-0xDB	0x063A	#ARABIC LETTER GHAIN
-0xDC	0x0640	#ARABIC TATWEEL
-0xDD	0x0641	#ARABIC LETTER FEH
-0xDE	0x0642	#ARABIC LETTER QAF
-0xDF	0x0643	#ARABIC LETTER KAF
-0xE0	0x00E0	#LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x0644	#ARABIC LETTER LAM
-0xE2	0x00E2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x0645	#ARABIC LETTER MEEM
-0xE4	0x0646	#ARABIC LETTER NOON
-0xE5	0x0647	#ARABIC LETTER HEH
-0xE6	0x0648	#ARABIC LETTER WAW
-0xE7	0x00E7	#LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x0649	#ARABIC LETTER ALEF MAKSURA
-0xED	0x064A	#ARABIC LETTER YEH
-0xEE	0x00EE	#LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x064B	#ARABIC FATHATAN
-0xF1	0x064C	#ARABIC DAMMATAN
-0xF2	0x064D	#ARABIC KASRATAN
-0xF3	0x064E	#ARABIC FATHA
-0xF4	0x00F4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x064F	#ARABIC DAMMA
-0xF6	0x0650	#ARABIC KASRA
-0xF7	0x00F7	#DIVISION SIGN
-0xF8	0x0651	#ARABIC SHADDA
-0xF9	0x00F9	#LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x0652	#ARABIC SUKUN
-0xFB	0x00FB	#LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x200E	#LEFT-TO-RIGHT MARK
-0xFE	0x200F	#RIGHT-TO-LEFT MARK
-0xFF	0x06D2	#ARABIC LETTER YEH BARREE
diff --git a/program/lib/encoding/CP1257.map b/program/lib/encoding/CP1257.map
deleted file mode 100644
index 97979d9..0000000
--- a/program/lib/encoding/CP1257.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-#    Name:     cp1257 to Unicode table
-#    Unicode version: 2.0
-#    Table version: 2.01
-#    Table format:  Format A
-#    Date:          04/15/98
-#
-#    Contact:       cpxlate@microsoft.com
-#
-#    General notes: none
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp1257 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in cp1257 order
-#
-0x00	0x0000	#NULL
-0x01	0x0001	#START OF HEADING
-0x02	0x0002	#START OF TEXT
-0x03	0x0003	#END OF TEXT
-0x04	0x0004	#END OF TRANSMISSION
-0x05	0x0005	#ENQUIRY
-0x06	0x0006	#ACKNOWLEDGE
-0x07	0x0007	#BELL
-0x08	0x0008	#BACKSPACE
-0x09	0x0009	#HORIZONTAL TABULATION
-0x0A	0x000A	#LINE FEED
-0x0B	0x000B	#VERTICAL TABULATION
-0x0C	0x000C	#FORM FEED
-0x0D	0x000D	#CARRIAGE RETURN
-0x0E	0x000E	#SHIFT OUT
-0x0F	0x000F	#SHIFT IN
-0x10	0x0010	#DATA LINK ESCAPE
-0x11	0x0011	#DEVICE CONTROL ONE
-0x12	0x0012	#DEVICE CONTROL TWO
-0x13	0x0013	#DEVICE CONTROL THREE
-0x14	0x0014	#DEVICE CONTROL FOUR
-0x15	0x0015	#NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#SYNCHRONOUS IDLE
-0x17	0x0017	#END OF TRANSMISSION BLOCK
-0x18	0x0018	#CANCEL
-0x19	0x0019	#END OF MEDIUM
-0x1A	0x001A	#SUBSTITUTE
-0x1B	0x001B	#ESCAPE
-0x1C	0x001C	#FILE SEPARATOR
-0x1D	0x001D	#GROUP SEPARATOR
-0x1E	0x001E	#RECORD SEPARATOR
-0x1F	0x001F	#UNIT SEPARATOR
-0x20	0x0020	#SPACE
-0x21	0x0021	#EXCLAMATION MARK
-0x22	0x0022	#QUOTATION MARK
-0x23	0x0023	#NUMBER SIGN
-0x24	0x0024	#DOLLAR SIGN
-0x25	0x0025	#PERCENT SIGN
-0x26	0x0026	#AMPERSAND
-0x27	0x0027	#APOSTROPHE
-0x28	0x0028	#LEFT PARENTHESIS
-0x29	0x0029	#RIGHT PARENTHESIS
-0x2A	0x002A	#ASTERISK
-0x2B	0x002B	#PLUS SIGN
-0x2C	0x002C	#COMMA
-0x2D	0x002D	#HYPHEN-MINUS
-0x2E	0x002E	#FULL STOP
-0x2F	0x002F	#SOLIDUS
-0x30	0x0030	#DIGIT ZERO
-0x31	0x0031	#DIGIT ONE
-0x32	0x0032	#DIGIT TWO
-0x33	0x0033	#DIGIT THREE
-0x34	0x0034	#DIGIT FOUR
-0x35	0x0035	#DIGIT FIVE
-0x36	0x0036	#DIGIT SIX
-0x37	0x0037	#DIGIT SEVEN
-0x38	0x0038	#DIGIT EIGHT
-0x39	0x0039	#DIGIT NINE
-0x3A	0x003A	#COLON
-0x3B	0x003B	#SEMICOLON
-0x3C	0x003C	#LESS-THAN SIGN
-0x3D	0x003D	#EQUALS SIGN
-0x3E	0x003E	#GREATER-THAN SIGN
-0x3F	0x003F	#QUESTION MARK
-0x40	0x0040	#COMMERCIAL AT
-0x41	0x0041	#LATIN CAPITAL LETTER A
-0x42	0x0042	#LATIN CAPITAL LETTER B
-0x43	0x0043	#LATIN CAPITAL LETTER C
-0x44	0x0044	#LATIN CAPITAL LETTER D
-0x45	0x0045	#LATIN CAPITAL LETTER E
-0x46	0x0046	#LATIN CAPITAL LETTER F
-0x47	0x0047	#LATIN CAPITAL LETTER G
-0x48	0x0048	#LATIN CAPITAL LETTER H
-0x49	0x0049	#LATIN CAPITAL LETTER I
-0x4A	0x004A	#LATIN CAPITAL LETTER J
-0x4B	0x004B	#LATIN CAPITAL LETTER K
-0x4C	0x004C	#LATIN CAPITAL LETTER L
-0x4D	0x004D	#LATIN CAPITAL LETTER M
-0x4E	0x004E	#LATIN CAPITAL LETTER N
-0x4F	0x004F	#LATIN CAPITAL LETTER O
-0x50	0x0050	#LATIN CAPITAL LETTER P
-0x51	0x0051	#LATIN CAPITAL LETTER Q
-0x52	0x0052	#LATIN CAPITAL LETTER R
-0x53	0x0053	#LATIN CAPITAL LETTER S
-0x54	0x0054	#LATIN CAPITAL LETTER T
-0x55	0x0055	#LATIN CAPITAL LETTER U
-0x56	0x0056	#LATIN CAPITAL LETTER V
-0x57	0x0057	#LATIN CAPITAL LETTER W
-0x58	0x0058	#LATIN CAPITAL LETTER X
-0x59	0x0059	#LATIN CAPITAL LETTER Y
-0x5A	0x005A	#LATIN CAPITAL LETTER Z
-0x5B	0x005B	#LEFT SQUARE BRACKET
-0x5C	0x005C	#REVERSE SOLIDUS
-0x5D	0x005D	#RIGHT SQUARE BRACKET
-0x5E	0x005E	#CIRCUMFLEX ACCENT
-0x5F	0x005F	#LOW LINE
-0x60	0x0060	#GRAVE ACCENT
-0x61	0x0061	#LATIN SMALL LETTER A
-0x62	0x0062	#LATIN SMALL LETTER B
-0x63	0x0063	#LATIN SMALL LETTER C
-0x64	0x0064	#LATIN SMALL LETTER D
-0x65	0x0065	#LATIN SMALL LETTER E
-0x66	0x0066	#LATIN SMALL LETTER F
-0x67	0x0067	#LATIN SMALL LETTER G
-0x68	0x0068	#LATIN SMALL LETTER H
-0x69	0x0069	#LATIN SMALL LETTER I
-0x6A	0x006A	#LATIN SMALL LETTER J
-0x6B	0x006B	#LATIN SMALL LETTER K
-0x6C	0x006C	#LATIN SMALL LETTER L
-0x6D	0x006D	#LATIN SMALL LETTER M
-0x6E	0x006E	#LATIN SMALL LETTER N
-0x6F	0x006F	#LATIN SMALL LETTER O
-0x70	0x0070	#LATIN SMALL LETTER P
-0x71	0x0071	#LATIN SMALL LETTER Q
-0x72	0x0072	#LATIN SMALL LETTER R
-0x73	0x0073	#LATIN SMALL LETTER S
-0x74	0x0074	#LATIN SMALL LETTER T
-0x75	0x0075	#LATIN SMALL LETTER U
-0x76	0x0076	#LATIN SMALL LETTER V
-0x77	0x0077	#LATIN SMALL LETTER W
-0x78	0x0078	#LATIN SMALL LETTER X
-0x79	0x0079	#LATIN SMALL LETTER Y
-0x7A	0x007A	#LATIN SMALL LETTER Z
-0x7B	0x007B	#LEFT CURLY BRACKET
-0x7C	0x007C	#VERTICAL LINE
-0x7D	0x007D	#RIGHT CURLY BRACKET
-0x7E	0x007E	#TILDE
-0x7F	0x007F	#DELETE
-0x80	0x20AC	#EURO SIGN
-0x81	      	#UNDEFINED
-0x82	0x201A	#SINGLE LOW-9 QUOTATION MARK
-0x83	      	#UNDEFINED
-0x84	0x201E	#DOUBLE LOW-9 QUOTATION MARK
-0x85	0x2026	#HORIZONTAL ELLIPSIS
-0x86	0x2020	#DAGGER
-0x87	0x2021	#DOUBLE DAGGER
-0x88	      	#UNDEFINED
-0x89	0x2030	#PER MILLE SIGN
-0x8A	      	#UNDEFINED
-0x8B	0x2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C	      	#UNDEFINED
-0x8D	0x00A8	#DIAERESIS
-0x8E	0x02C7	#CARON
-0x8F	0x00B8	#CEDILLA
-0x90	      	#UNDEFINED
-0x91	0x2018	#LEFT SINGLE QUOTATION MARK
-0x92	0x2019	#RIGHT SINGLE QUOTATION MARK
-0x93	0x201C	#LEFT DOUBLE QUOTATION MARK
-0x94	0x201D	#RIGHT DOUBLE QUOTATION MARK
-0x95	0x2022	#BULLET
-0x96	0x2013	#EN DASH
-0x97	0x2014	#EM DASH
-0x98	      	#UNDEFINED
-0x99	0x2122	#TRADE MARK SIGN
-0x9A	      	#UNDEFINED
-0x9B	0x203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C	      	#UNDEFINED
-0x9D	0x00AF	#MACRON
-0x9E	0x02DB	#OGONEK
-0x9F	      	#UNDEFINED
-0xA0	0x00A0	#NO-BREAK SPACE
-0xA1	      	#UNDEFINED
-0xA2	0x00A2	#CENT SIGN
-0xA3	0x00A3	#POUND SIGN
-0xA4	0x00A4	#CURRENCY SIGN
-0xA5	      	#UNDEFINED
-0xA6	0x00A6	#BROKEN BAR
-0xA7	0x00A7	#SECTION SIGN
-0xA8	0x00D8	#LATIN CAPITAL LETTER O WITH STROKE
-0xA9	0x00A9	#COPYRIGHT SIGN
-0xAA	0x0156	#LATIN CAPITAL LETTER R WITH CEDILLA
-0xAB	0x00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#NOT SIGN
-0xAD	0x00AD	#SOFT HYPHEN
-0xAE	0x00AE	#REGISTERED SIGN
-0xAF	0x00C6	#LATIN CAPITAL LETTER AE
-0xB0	0x00B0	#DEGREE SIGN
-0xB1	0x00B1	#PLUS-MINUS SIGN
-0xB2	0x00B2	#SUPERSCRIPT TWO
-0xB3	0x00B3	#SUPERSCRIPT THREE
-0xB4	0x00B4	#ACUTE ACCENT
-0xB5	0x00B5	#MICRO SIGN
-0xB6	0x00B6	#PILCROW SIGN
-0xB7	0x00B7	#MIDDLE DOT
-0xB8	0x00F8	#LATIN SMALL LETTER O WITH STROKE
-0xB9	0x00B9	#SUPERSCRIPT ONE
-0xBA	0x0157	#LATIN SMALL LETTER R WITH CEDILLA
-0xBB	0x00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#VULGAR FRACTION THREE QUARTERS
-0xBF	0x00E6	#LATIN SMALL LETTER AE
-0xC0	0x0104	#LATIN CAPITAL LETTER A WITH OGONEK
-0xC1	0x012E	#LATIN CAPITAL LETTER I WITH OGONEK
-0xC2	0x0100	#LATIN CAPITAL LETTER A WITH MACRON
-0xC3	0x0106	#LATIN CAPITAL LETTER C WITH ACUTE
-0xC4	0x00C4	#LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x0118	#LATIN CAPITAL LETTER E WITH OGONEK
-0xC7	0x0112	#LATIN CAPITAL LETTER E WITH MACRON
-0xC8	0x010C	#LATIN CAPITAL LETTER C WITH CARON
-0xC9	0x00C9	#LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x0179	#LATIN CAPITAL LETTER Z WITH ACUTE
-0xCB	0x0116	#LATIN CAPITAL LETTER E WITH DOT ABOVE
-0xCC	0x0122	#LATIN CAPITAL LETTER G WITH CEDILLA
-0xCD	0x0136	#LATIN CAPITAL LETTER K WITH CEDILLA
-0xCE	0x012A	#LATIN CAPITAL LETTER I WITH MACRON
-0xCF	0x013B	#LATIN CAPITAL LETTER L WITH CEDILLA
-0xD0	0x0160	#LATIN CAPITAL LETTER S WITH CARON
-0xD1	0x0143	#LATIN CAPITAL LETTER N WITH ACUTE
-0xD2	0x0145	#LATIN CAPITAL LETTER N WITH CEDILLA
-0xD3	0x00D3	#LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x014C	#LATIN CAPITAL LETTER O WITH MACRON
-0xD5	0x00D5	#LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#MULTIPLICATION SIGN
-0xD8	0x0172	#LATIN CAPITAL LETTER U WITH OGONEK
-0xD9	0x0141	#LATIN CAPITAL LETTER L WITH STROKE
-0xDA	0x015A	#LATIN CAPITAL LETTER S WITH ACUTE
-0xDB	0x016A	#LATIN CAPITAL LETTER U WITH MACRON
-0xDC	0x00DC	#LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x017B	#LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xDE	0x017D	#LATIN CAPITAL LETTER Z WITH CARON
-0xDF	0x00DF	#LATIN SMALL LETTER SHARP S
-0xE0	0x0105	#LATIN SMALL LETTER A WITH OGONEK
-0xE1	0x012F	#LATIN SMALL LETTER I WITH OGONEK
-0xE2	0x0101	#LATIN SMALL LETTER A WITH MACRON
-0xE3	0x0107	#LATIN SMALL LETTER C WITH ACUTE
-0xE4	0x00E4	#LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x0119	#LATIN SMALL LETTER E WITH OGONEK
-0xE7	0x0113	#LATIN SMALL LETTER E WITH MACRON
-0xE8	0x010D	#LATIN SMALL LETTER C WITH CARON
-0xE9	0x00E9	#LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x017A	#LATIN SMALL LETTER Z WITH ACUTE
-0xEB	0x0117	#LATIN SMALL LETTER E WITH DOT ABOVE
-0xEC	0x0123	#LATIN SMALL LETTER G WITH CEDILLA
-0xED	0x0137	#LATIN SMALL LETTER K WITH CEDILLA
-0xEE	0x012B	#LATIN SMALL LETTER I WITH MACRON
-0xEF	0x013C	#LATIN SMALL LETTER L WITH CEDILLA
-0xF0	0x0161	#LATIN SMALL LETTER S WITH CARON
-0xF1	0x0144	#LATIN SMALL LETTER N WITH ACUTE
-0xF2	0x0146	#LATIN SMALL LETTER N WITH CEDILLA
-0xF3	0x00F3	#LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x014D	#LATIN SMALL LETTER O WITH MACRON
-0xF5	0x00F5	#LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#DIVISION SIGN
-0xF8	0x0173	#LATIN SMALL LETTER U WITH OGONEK
-0xF9	0x0142	#LATIN SMALL LETTER L WITH STROKE
-0xFA	0x015B	#LATIN SMALL LETTER S WITH ACUTE
-0xFB	0x016B	#LATIN SMALL LETTER U WITH MACRON
-0xFC	0x00FC	#LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x017C	#LATIN SMALL LETTER Z WITH DOT ABOVE
-0xFE	0x017E	#LATIN SMALL LETTER Z WITH CARON
-0xFF	0x02D9	#DOT ABOVE
diff --git a/program/lib/encoding/CP1258.map b/program/lib/encoding/CP1258.map
deleted file mode 100644
index 392310a..0000000
--- a/program/lib/encoding/CP1258.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-#    Name:     cp1258 to Unicode table
-#    Unicode version: 2.0
-#    Table version: 2.01
-#    Table format:  Format A
-#    Date:          04/15/98
-#
-#    Contact:       cpxlate@microsoft.com
-#
-#    General notes: none
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the cp1258 code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in cp1258 order
-#
-0x00	0x0000	#NULL
-0x01	0x0001	#START OF HEADING
-0x02	0x0002	#START OF TEXT
-0x03	0x0003	#END OF TEXT
-0x04	0x0004	#END OF TRANSMISSION
-0x05	0x0005	#ENQUIRY
-0x06	0x0006	#ACKNOWLEDGE
-0x07	0x0007	#BELL
-0x08	0x0008	#BACKSPACE
-0x09	0x0009	#HORIZONTAL TABULATION
-0x0A	0x000A	#LINE FEED
-0x0B	0x000B	#VERTICAL TABULATION
-0x0C	0x000C	#FORM FEED
-0x0D	0x000D	#CARRIAGE RETURN
-0x0E	0x000E	#SHIFT OUT
-0x0F	0x000F	#SHIFT IN
-0x10	0x0010	#DATA LINK ESCAPE
-0x11	0x0011	#DEVICE CONTROL ONE
-0x12	0x0012	#DEVICE CONTROL TWO
-0x13	0x0013	#DEVICE CONTROL THREE
-0x14	0x0014	#DEVICE CONTROL FOUR
-0x15	0x0015	#NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#SYNCHRONOUS IDLE
-0x17	0x0017	#END OF TRANSMISSION BLOCK
-0x18	0x0018	#CANCEL
-0x19	0x0019	#END OF MEDIUM
-0x1A	0x001A	#SUBSTITUTE
-0x1B	0x001B	#ESCAPE
-0x1C	0x001C	#FILE SEPARATOR
-0x1D	0x001D	#GROUP SEPARATOR
-0x1E	0x001E	#RECORD SEPARATOR
-0x1F	0x001F	#UNIT SEPARATOR
-0x20	0x0020	#SPACE
-0x21	0x0021	#EXCLAMATION MARK
-0x22	0x0022	#QUOTATION MARK
-0x23	0x0023	#NUMBER SIGN
-0x24	0x0024	#DOLLAR SIGN
-0x25	0x0025	#PERCENT SIGN
-0x26	0x0026	#AMPERSAND
-0x27	0x0027	#APOSTROPHE
-0x28	0x0028	#LEFT PARENTHESIS
-0x29	0x0029	#RIGHT PARENTHESIS
-0x2A	0x002A	#ASTERISK
-0x2B	0x002B	#PLUS SIGN
-0x2C	0x002C	#COMMA
-0x2D	0x002D	#HYPHEN-MINUS
-0x2E	0x002E	#FULL STOP
-0x2F	0x002F	#SOLIDUS
-0x30	0x0030	#DIGIT ZERO
-0x31	0x0031	#DIGIT ONE
-0x32	0x0032	#DIGIT TWO
-0x33	0x0033	#DIGIT THREE
-0x34	0x0034	#DIGIT FOUR
-0x35	0x0035	#DIGIT FIVE
-0x36	0x0036	#DIGIT SIX
-0x37	0x0037	#DIGIT SEVEN
-0x38	0x0038	#DIGIT EIGHT
-0x39	0x0039	#DIGIT NINE
-0x3A	0x003A	#COLON
-0x3B	0x003B	#SEMICOLON
-0x3C	0x003C	#LESS-THAN SIGN
-0x3D	0x003D	#EQUALS SIGN
-0x3E	0x003E	#GREATER-THAN SIGN
-0x3F	0x003F	#QUESTION MARK
-0x40	0x0040	#COMMERCIAL AT
-0x41	0x0041	#LATIN CAPITAL LETTER A
-0x42	0x0042	#LATIN CAPITAL LETTER B
-0x43	0x0043	#LATIN CAPITAL LETTER C
-0x44	0x0044	#LATIN CAPITAL LETTER D
-0x45	0x0045	#LATIN CAPITAL LETTER E
-0x46	0x0046	#LATIN CAPITAL LETTER F
-0x47	0x0047	#LATIN CAPITAL LETTER G
-0x48	0x0048	#LATIN CAPITAL LETTER H
-0x49	0x0049	#LATIN CAPITAL LETTER I
-0x4A	0x004A	#LATIN CAPITAL LETTER J
-0x4B	0x004B	#LATIN CAPITAL LETTER K
-0x4C	0x004C	#LATIN CAPITAL LETTER L
-0x4D	0x004D	#LATIN CAPITAL LETTER M
-0x4E	0x004E	#LATIN CAPITAL LETTER N
-0x4F	0x004F	#LATIN CAPITAL LETTER O
-0x50	0x0050	#LATIN CAPITAL LETTER P
-0x51	0x0051	#LATIN CAPITAL LETTER Q
-0x52	0x0052	#LATIN CAPITAL LETTER R
-0x53	0x0053	#LATIN CAPITAL LETTER S
-0x54	0x0054	#LATIN CAPITAL LETTER T
-0x55	0x0055	#LATIN CAPITAL LETTER U
-0x56	0x0056	#LATIN CAPITAL LETTER V
-0x57	0x0057	#LATIN CAPITAL LETTER W
-0x58	0x0058	#LATIN CAPITAL LETTER X
-0x59	0x0059	#LATIN CAPITAL LETTER Y
-0x5A	0x005A	#LATIN CAPITAL LETTER Z
-0x5B	0x005B	#LEFT SQUARE BRACKET
-0x5C	0x005C	#REVERSE SOLIDUS
-0x5D	0x005D	#RIGHT SQUARE BRACKET
-0x5E	0x005E	#CIRCUMFLEX ACCENT
-0x5F	0x005F	#LOW LINE
-0x60	0x0060	#GRAVE ACCENT
-0x61	0x0061	#LATIN SMALL LETTER A
-0x62	0x0062	#LATIN SMALL LETTER B
-0x63	0x0063	#LATIN SMALL LETTER C
-0x64	0x0064	#LATIN SMALL LETTER D
-0x65	0x0065	#LATIN SMALL LETTER E
-0x66	0x0066	#LATIN SMALL LETTER F
-0x67	0x0067	#LATIN SMALL LETTER G
-0x68	0x0068	#LATIN SMALL LETTER H
-0x69	0x0069	#LATIN SMALL LETTER I
-0x6A	0x006A	#LATIN SMALL LETTER J
-0x6B	0x006B	#LATIN SMALL LETTER K
-0x6C	0x006C	#LATIN SMALL LETTER L
-0x6D	0x006D	#LATIN SMALL LETTER M
-0x6E	0x006E	#LATIN SMALL LETTER N
-0x6F	0x006F	#LATIN SMALL LETTER O
-0x70	0x0070	#LATIN SMALL LETTER P
-0x71	0x0071	#LATIN SMALL LETTER Q
-0x72	0x0072	#LATIN SMALL LETTER R
-0x73	0x0073	#LATIN SMALL LETTER S
-0x74	0x0074	#LATIN SMALL LETTER T
-0x75	0x0075	#LATIN SMALL LETTER U
-0x76	0x0076	#LATIN SMALL LETTER V
-0x77	0x0077	#LATIN SMALL LETTER W
-0x78	0x0078	#LATIN SMALL LETTER X
-0x79	0x0079	#LATIN SMALL LETTER Y
-0x7A	0x007A	#LATIN SMALL LETTER Z
-0x7B	0x007B	#LEFT CURLY BRACKET
-0x7C	0x007C	#VERTICAL LINE
-0x7D	0x007D	#RIGHT CURLY BRACKET
-0x7E	0x007E	#TILDE
-0x7F	0x007F	#DELETE
-0x80	0x20AC	#EURO SIGN
-0x81	      	#UNDEFINED
-0x82	0x201A	#SINGLE LOW-9 QUOTATION MARK
-0x83	0x0192	#LATIN SMALL LETTER F WITH HOOK
-0x84	0x201E	#DOUBLE LOW-9 QUOTATION MARK
-0x85	0x2026	#HORIZONTAL ELLIPSIS
-0x86	0x2020	#DAGGER
-0x87	0x2021	#DOUBLE DAGGER
-0x88	0x02C6	#MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89	0x2030	#PER MILLE SIGN
-0x8A	      	#UNDEFINED
-0x8B	0x2039	#SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C	0x0152	#LATIN CAPITAL LIGATURE OE
-0x8D	      	#UNDEFINED
-0x8E	      	#UNDEFINED
-0x8F	      	#UNDEFINED
-0x90	      	#UNDEFINED
-0x91	0x2018	#LEFT SINGLE QUOTATION MARK
-0x92	0x2019	#RIGHT SINGLE QUOTATION MARK
-0x93	0x201C	#LEFT DOUBLE QUOTATION MARK
-0x94	0x201D	#RIGHT DOUBLE QUOTATION MARK
-0x95	0x2022	#BULLET
-0x96	0x2013	#EN DASH
-0x97	0x2014	#EM DASH
-0x98	0x02DC	#SMALL TILDE
-0x99	0x2122	#TRADE MARK SIGN
-0x9A	      	#UNDEFINED
-0x9B	0x203A	#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C	0x0153	#LATIN SMALL LIGATURE OE
-0x9D	      	#UNDEFINED
-0x9E	      	#UNDEFINED
-0x9F	0x0178	#LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xA0	0x00A0	#NO-BREAK SPACE
-0xA1	0x00A1	#INVERTED EXCLAMATION MARK
-0xA2	0x00A2	#CENT SIGN
-0xA3	0x00A3	#POUND SIGN
-0xA4	0x00A4	#CURRENCY SIGN
-0xA5	0x00A5	#YEN SIGN
-0xA6	0x00A6	#BROKEN BAR
-0xA7	0x00A7	#SECTION SIGN
-0xA8	0x00A8	#DIAERESIS
-0xA9	0x00A9	#COPYRIGHT SIGN
-0xAA	0x00AA	#FEMININE ORDINAL INDICATOR
-0xAB	0x00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#NOT SIGN
-0xAD	0x00AD	#SOFT HYPHEN
-0xAE	0x00AE	#REGISTERED SIGN
-0xAF	0x00AF	#MACRON
-0xB0	0x00B0	#DEGREE SIGN
-0xB1	0x00B1	#PLUS-MINUS SIGN
-0xB2	0x00B2	#SUPERSCRIPT TWO
-0xB3	0x00B3	#SUPERSCRIPT THREE
-0xB4	0x00B4	#ACUTE ACCENT
-0xB5	0x00B5	#MICRO SIGN
-0xB6	0x00B6	#PILCROW SIGN
-0xB7	0x00B7	#MIDDLE DOT
-0xB8	0x00B8	#CEDILLA
-0xB9	0x00B9	#SUPERSCRIPT ONE
-0xBA	0x00BA	#MASCULINE ORDINAL INDICATOR
-0xBB	0x00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#VULGAR FRACTION THREE QUARTERS
-0xBF	0x00BF	#INVERTED QUESTION MARK
-0xC0	0x00C0	#LATIN CAPITAL LETTER A WITH GRAVE
-0xC1	0x00C1	#LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x0102	#LATIN CAPITAL LETTER A WITH BREVE
-0xC4	0x00C4	#LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x00C6	#LATIN CAPITAL LETTER AE
-0xC7	0x00C7	#LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x00C8	#LATIN CAPITAL LETTER E WITH GRAVE
-0xC9	0x00C9	#LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x00CA	#LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB	0x00CB	#LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x0300	#COMBINING GRAVE ACCENT
-0xCD	0x00CD	#LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0	0x0110	#LATIN CAPITAL LETTER D WITH STROKE
-0xD1	0x00D1	#LATIN CAPITAL LETTER N WITH TILDE
-0xD2	0x0309	#COMBINING HOOK ABOVE
-0xD3	0x00D3	#LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x01A0	#LATIN CAPITAL LETTER O WITH HORN
-0xD6	0x00D6	#LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#MULTIPLICATION SIGN
-0xD8	0x00D8	#LATIN CAPITAL LETTER O WITH STROKE
-0xD9	0x00D9	#LATIN CAPITAL LETTER U WITH GRAVE
-0xDA	0x00DA	#LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x01AF	#LATIN CAPITAL LETTER U WITH HORN
-0xDE	0x0303	#COMBINING TILDE
-0xDF	0x00DF	#LATIN SMALL LETTER SHARP S
-0xE0	0x00E0	#LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x00E1	#LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x0103	#LATIN SMALL LETTER A WITH BREVE
-0xE4	0x00E4	#LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x00E6	#LATIN SMALL LETTER AE
-0xE7	0x00E7	#LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x0301	#COMBINING ACUTE ACCENT
-0xED	0x00ED	#LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x0111	#LATIN SMALL LETTER D WITH STROKE
-0xF1	0x00F1	#LATIN SMALL LETTER N WITH TILDE
-0xF2	0x0323	#COMBINING DOT BELOW
-0xF3	0x00F3	#LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x01A1	#LATIN SMALL LETTER O WITH HORN
-0xF6	0x00F6	#LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#DIVISION SIGN
-0xF8	0x00F8	#LATIN SMALL LETTER O WITH STROKE
-0xF9	0x00F9	#LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x00FA	#LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x01B0	#LATIN SMALL LETTER U WITH HORN
-0xFE	0x20AB	#DONG SIGN
-0xFF	0x00FF	#LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/ISO-8859-1.map b/program/lib/encoding/ISO-8859-1.map
deleted file mode 100644
index 473ecab..0000000
--- a/program/lib/encoding/ISO-8859-1.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-1:1998 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-1:1998 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-1 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-1 order.
-#
-#	Version history
-#	1.0 version updates 0.1 version by adding mappings for all
-#	control characters.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x00A1	#	INVERTED EXCLAMATION MARK
-0xA2	0x00A2	#	CENT SIGN
-0xA3	0x00A3	#	POUND SIGN
-0xA4	0x00A4	#	CURRENCY SIGN
-0xA5	0x00A5	#	YEN SIGN
-0xA6	0x00A6	#	BROKEN BAR
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x00A8	#	DIAERESIS
-0xA9	0x00A9	#	COPYRIGHT SIGN
-0xAA	0x00AA	#	FEMININE ORDINAL INDICATOR
-0xAB	0x00AB	#	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#	NOT SIGN
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x00AE	#	REGISTERED SIGN
-0xAF	0x00AF	#	MACRON
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x00B1	#	PLUS-MINUS SIGN
-0xB2	0x00B2	#	SUPERSCRIPT TWO
-0xB3	0x00B3	#	SUPERSCRIPT THREE
-0xB4	0x00B4	#	ACUTE ACCENT
-0xB5	0x00B5	#	MICRO SIGN
-0xB6	0x00B6	#	PILCROW SIGN
-0xB7	0x00B7	#	MIDDLE DOT
-0xB8	0x00B8	#	CEDILLA
-0xB9	0x00B9	#	SUPERSCRIPT ONE
-0xBA	0x00BA	#	MASCULINE ORDINAL INDICATOR
-0xBB	0x00BB	#	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#	VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#	VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#	VULGAR FRACTION THREE QUARTERS
-0xBF	0x00BF	#	INVERTED QUESTION MARK
-0xC0	0x00C0	#	LATIN CAPITAL LETTER A WITH GRAVE
-0xC1	0x00C1	#	LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x00C3	#	LATIN CAPITAL LETTER A WITH TILDE
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#	LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x00C6	#	LATIN CAPITAL LETTER AE
-0xC7	0x00C7	#	LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x00C8	#	LATIN CAPITAL LETTER E WITH GRAVE
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x00CA	#	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB	0x00CB	#	LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x00CC	#	LATIN CAPITAL LETTER I WITH GRAVE
-0xCD	0x00CD	#	LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#	LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0	0x00D0	#	LATIN CAPITAL LETTER ETH (Icelandic)
-0xD1	0x00D1	#	LATIN CAPITAL LETTER N WITH TILDE
-0xD2	0x00D2	#	LATIN CAPITAL LETTER O WITH GRAVE
-0xD3	0x00D3	#	LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x00D5	#	LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#	MULTIPLICATION SIGN
-0xD8	0x00D8	#	LATIN CAPITAL LETTER O WITH STROKE
-0xD9	0x00D9	#	LATIN CAPITAL LETTER U WITH GRAVE
-0xDA	0x00DA	#	LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x00DD	#	LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE	0x00DE	#	LATIN CAPITAL LETTER THORN (Icelandic)
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S (German)
-0xE0	0x00E0	#	LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x00E1	#	LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#	LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x00E3	#	LATIN SMALL LETTER A WITH TILDE
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#	LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x00E6	#	LATIN SMALL LETTER AE
-0xE7	0x00E7	#	LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#	LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#	LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#	LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x00EC	#	LATIN SMALL LETTER I WITH GRAVE
-0xED	0x00ED	#	LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#	LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#	LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x00F0	#	LATIN SMALL LETTER ETH (Icelandic)
-0xF1	0x00F1	#	LATIN SMALL LETTER N WITH TILDE
-0xF2	0x00F2	#	LATIN SMALL LETTER O WITH GRAVE
-0xF3	0x00F3	#	LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#	LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x00F5	#	LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#	DIVISION SIGN
-0xF8	0x00F8	#	LATIN SMALL LETTER O WITH STROKE
-0xF9	0x00F9	#	LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x00FA	#	LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#	LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x00FD	#	LATIN SMALL LETTER Y WITH ACUTE
-0xFE	0x00FE	#	LATIN SMALL LETTER THORN (Icelandic)
-0xFF	0x00FF	#	LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/ISO-8859-10.map b/program/lib/encoding/ISO-8859-10.map
deleted file mode 100644
index 374a42b..0000000
--- a/program/lib/encoding/ISO-8859-10.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-10:1998 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.1
-#	Table format:     Format A
-#	Date:             1999 October 11
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-10:1998 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-10 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-10 order.
-#
-#	Version history
-#	1.0 version new.
-#       1.1 corrected mistake in mapping of 0xA4
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x0104	#	LATIN CAPITAL LETTER A WITH OGONEK
-0xA2	0x0112	#	LATIN CAPITAL LETTER E WITH MACRON
-0xA3	0x0122	#	LATIN CAPITAL LETTER G WITH CEDILLA
-0xA4	0x012A	#	LATIN CAPITAL LETTER I WITH MACRON
-0xA5	0x0128	#	LATIN CAPITAL LETTER I WITH TILDE
-0xA6	0x0136	#	LATIN CAPITAL LETTER K WITH CEDILLA
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x013B	#	LATIN CAPITAL LETTER L WITH CEDILLA
-0xA9	0x0110	#	LATIN CAPITAL LETTER D WITH STROKE
-0xAA	0x0160	#	LATIN CAPITAL LETTER S WITH CARON
-0xAB	0x0166	#	LATIN CAPITAL LETTER T WITH STROKE
-0xAC	0x017D	#	LATIN CAPITAL LETTER Z WITH CARON
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x016A	#	LATIN CAPITAL LETTER U WITH MACRON
-0xAF	0x014A	#	LATIN CAPITAL LETTER ENG
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x0105	#	LATIN SMALL LETTER A WITH OGONEK
-0xB2	0x0113	#	LATIN SMALL LETTER E WITH MACRON
-0xB3	0x0123	#	LATIN SMALL LETTER G WITH CEDILLA
-0xB4	0x012B	#	LATIN SMALL LETTER I WITH MACRON
-0xB5	0x0129	#	LATIN SMALL LETTER I WITH TILDE
-0xB6	0x0137	#	LATIN SMALL LETTER K WITH CEDILLA
-0xB7	0x00B7	#	MIDDLE DOT
-0xB8	0x013C	#	LATIN SMALL LETTER L WITH CEDILLA
-0xB9	0x0111	#	LATIN SMALL LETTER D WITH STROKE
-0xBA	0x0161	#	LATIN SMALL LETTER S WITH CARON
-0xBB	0x0167	#	LATIN SMALL LETTER T WITH STROKE
-0xBC	0x017E	#	LATIN SMALL LETTER Z WITH CARON
-0xBD	0x2015	#	HORIZONTAL BAR
-0xBE	0x016B	#	LATIN SMALL LETTER U WITH MACRON
-0xBF	0x014B	#	LATIN SMALL LETTER ENG
-0xC0	0x0100	#	LATIN CAPITAL LETTER A WITH MACRON
-0xC1	0x00C1	#	LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x00C3	#	LATIN CAPITAL LETTER A WITH TILDE
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#	LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x00C6	#	LATIN CAPITAL LETTER AE
-0xC7	0x012E	#	LATIN CAPITAL LETTER I WITH OGONEK
-0xC8	0x010C	#	LATIN CAPITAL LETTER C WITH CARON
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x0118	#	LATIN CAPITAL LETTER E WITH OGONEK
-0xCB	0x00CB	#	LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x0116	#	LATIN CAPITAL LETTER E WITH DOT ABOVE
-0xCD	0x00CD	#	LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#	LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0	0x00D0	#	LATIN CAPITAL LETTER ETH (Icelandic)
-0xD1	0x0145	#	LATIN CAPITAL LETTER N WITH CEDILLA
-0xD2	0x014C	#	LATIN CAPITAL LETTER O WITH MACRON
-0xD3	0x00D3	#	LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x00D5	#	LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x0168	#	LATIN CAPITAL LETTER U WITH TILDE
-0xD8	0x00D8	#	LATIN CAPITAL LETTER O WITH STROKE
-0xD9	0x0172	#	LATIN CAPITAL LETTER U WITH OGONEK
-0xDA	0x00DA	#	LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x00DD	#	LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE	0x00DE	#	LATIN CAPITAL LETTER THORN (Icelandic)
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S (German)
-0xE0	0x0101	#	LATIN SMALL LETTER A WITH MACRON
-0xE1	0x00E1	#	LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#	LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x00E3	#	LATIN SMALL LETTER A WITH TILDE
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#	LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x00E6	#	LATIN SMALL LETTER AE
-0xE7	0x012F	#	LATIN SMALL LETTER I WITH OGONEK
-0xE8	0x010D	#	LATIN SMALL LETTER C WITH CARON
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x0119	#	LATIN SMALL LETTER E WITH OGONEK
-0xEB	0x00EB	#	LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x0117	#	LATIN SMALL LETTER E WITH DOT ABOVE
-0xED	0x00ED	#	LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#	LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#	LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x00F0	#	LATIN SMALL LETTER ETH (Icelandic)
-0xF1	0x0146	#	LATIN SMALL LETTER N WITH CEDILLA
-0xF2	0x014D	#	LATIN SMALL LETTER O WITH MACRON
-0xF3	0x00F3	#	LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#	LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x00F5	#	LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x0169	#	LATIN SMALL LETTER U WITH TILDE
-0xF8	0x00F8	#	LATIN SMALL LETTER O WITH STROKE
-0xF9	0x0173	#	LATIN SMALL LETTER U WITH OGONEK
-0xFA	0x00FA	#	LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#	LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x00FD	#	LATIN SMALL LETTER Y WITH ACUTE
-0xFE	0x00FE	#	LATIN SMALL LETTER THORN (Icelandic)
-0xFF	0x0138	#	LATIN SMALL LETTER KRA
diff --git a/program/lib/encoding/ISO-8859-11.map b/program/lib/encoding/ISO-8859-11.map
deleted file mode 100644
index 192bd9d..0000000
--- a/program/lib/encoding/ISO-8859-11.map
+++ /dev/null
@@ -1,297 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-11:2001 to Unicode
-#	Unicode version:  3.2
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             2002 October 7
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 2002 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-11:2001 characters map into Unicode.
-#
-#	ISO/IEC 8859-11:2001 is equivalent to TIS 620-2533 (1990) with
-#	the addition of 0xA0 NO-BREAK SPACE.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-11 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-11 order.
-#
-#	Version history:
-#		2002 October 7  Created
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	For any comments or problems, please use the Unicode
-#	web contact form at:
-#		http://www.unicode.org/unicode/reporting.html
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x0E01	#	THAI CHARACTER KO KAI
-0xA2	0x0E02	#	THAI CHARACTER KHO KHAI
-0xA3	0x0E03	#	THAI CHARACTER KHO KHUAT
-0xA4	0x0E04	#	THAI CHARACTER KHO KHWAI
-0xA5	0x0E05	#	THAI CHARACTER KHO KHON
-0xA6	0x0E06	#	THAI CHARACTER KHO RAKHANG
-0xA7	0x0E07	#	THAI CHARACTER NGO NGU
-0xA8	0x0E08	#	THAI CHARACTER CHO CHAN
-0xA9	0x0E09	#	THAI CHARACTER CHO CHING
-0xAA	0x0E0A	#	THAI CHARACTER CHO CHANG
-0xAB	0x0E0B	#	THAI CHARACTER SO SO
-0xAC	0x0E0C	#	THAI CHARACTER CHO CHOE
-0xAD	0x0E0D	#	THAI CHARACTER YO YING
-0xAE	0x0E0E	#	THAI CHARACTER DO CHADA
-0xAF	0x0E0F	#	THAI CHARACTER TO PATAK
-0xB0	0x0E10	#	THAI CHARACTER THO THAN
-0xB1	0x0E11	#	THAI CHARACTER THO NANGMONTHO
-0xB2	0x0E12	#	THAI CHARACTER THO PHUTHAO
-0xB3	0x0E13	#	THAI CHARACTER NO NEN
-0xB4	0x0E14	#	THAI CHARACTER DO DEK
-0xB5	0x0E15	#	THAI CHARACTER TO TAO
-0xB6	0x0E16	#	THAI CHARACTER THO THUNG
-0xB7	0x0E17	#	THAI CHARACTER THO THAHAN
-0xB8	0x0E18	#	THAI CHARACTER THO THONG
-0xB9	0x0E19	#	THAI CHARACTER NO NU
-0xBA	0x0E1A	#	THAI CHARACTER BO BAIMAI
-0xBB	0x0E1B	#	THAI CHARACTER PO PLA
-0xBC	0x0E1C	#	THAI CHARACTER PHO PHUNG
-0xBD	0x0E1D	#	THAI CHARACTER FO FA
-0xBE	0x0E1E	#	THAI CHARACTER PHO PHAN
-0xBF	0x0E1F	#	THAI CHARACTER FO FAN
-0xC0	0x0E20	#	THAI CHARACTER PHO SAMPHAO
-0xC1	0x0E21	#	THAI CHARACTER MO MA
-0xC2	0x0E22	#	THAI CHARACTER YO YAK
-0xC3	0x0E23	#	THAI CHARACTER RO RUA
-0xC4	0x0E24	#	THAI CHARACTER RU
-0xC5	0x0E25	#	THAI CHARACTER LO LING
-0xC6	0x0E26	#	THAI CHARACTER LU
-0xC7	0x0E27	#	THAI CHARACTER WO WAEN
-0xC8	0x0E28	#	THAI CHARACTER SO SALA
-0xC9	0x0E29	#	THAI CHARACTER SO RUSI
-0xCA	0x0E2A	#	THAI CHARACTER SO SUA
-0xCB	0x0E2B	#	THAI CHARACTER HO HIP
-0xCC	0x0E2C	#	THAI CHARACTER LO CHULA
-0xCD	0x0E2D	#	THAI CHARACTER O ANG
-0xCE	0x0E2E	#	THAI CHARACTER HO NOKHUK
-0xCF	0x0E2F	#	THAI CHARACTER PAIYANNOI
-0xD0	0x0E30	#	THAI CHARACTER SARA A
-0xD1	0x0E31	#	THAI CHARACTER MAI HAN-AKAT
-0xD2	0x0E32	#	THAI CHARACTER SARA AA
-0xD3	0x0E33	#	THAI CHARACTER SARA AM
-0xD4	0x0E34	#	THAI CHARACTER SARA I
-0xD5	0x0E35	#	THAI CHARACTER SARA II
-0xD6	0x0E36	#	THAI CHARACTER SARA UE
-0xD7	0x0E37	#	THAI CHARACTER SARA UEE
-0xD8	0x0E38	#	THAI CHARACTER SARA U
-0xD9	0x0E39	#	THAI CHARACTER SARA UU
-0xDA	0x0E3A	#	THAI CHARACTER PHINTHU
-0xDF	0x0E3F	#	THAI CURRENCY SYMBOL BAHT
-0xE0	0x0E40	#	THAI CHARACTER SARA E
-0xE1	0x0E41	#	THAI CHARACTER SARA AE
-0xE2	0x0E42	#	THAI CHARACTER SARA O
-0xE3	0x0E43	#	THAI CHARACTER SARA AI MAIMUAN
-0xE4	0x0E44	#	THAI CHARACTER SARA AI MAIMALAI
-0xE5	0x0E45	#	THAI CHARACTER LAKKHANGYAO
-0xE6	0x0E46	#	THAI CHARACTER MAIYAMOK
-0xE7	0x0E47	#	THAI CHARACTER MAITAIKHU
-0xE8	0x0E48	#	THAI CHARACTER MAI EK
-0xE9	0x0E49	#	THAI CHARACTER MAI THO
-0xEA	0x0E4A	#	THAI CHARACTER MAI TRI
-0xEB	0x0E4B	#	THAI CHARACTER MAI CHATTAWA
-0xEC	0x0E4C	#	THAI CHARACTER THANTHAKHAT
-0xED	0x0E4D	#	THAI CHARACTER NIKHAHIT
-0xEE	0x0E4E	#	THAI CHARACTER YAMAKKAN
-0xEF	0x0E4F	#	THAI CHARACTER FONGMAN
-0xF0	0x0E50	#	THAI DIGIT ZERO
-0xF1	0x0E51	#	THAI DIGIT ONE
-0xF2	0x0E52	#	THAI DIGIT TWO
-0xF3	0x0E53	#	THAI DIGIT THREE
-0xF4	0x0E54	#	THAI DIGIT FOUR
-0xF5	0x0E55	#	THAI DIGIT FIVE
-0xF6	0x0E56	#	THAI DIGIT SIX
-0xF7	0x0E57	#	THAI DIGIT SEVEN
-0xF8	0x0E58	#	THAI DIGIT EIGHT
-0xF9	0x0E59	#	THAI DIGIT NINE
-0xFA	0x0E5A	#	THAI CHARACTER ANGKHANKHU
-0xFB	0x0E5B	#	THAI CHARACTER KHOMUT
diff --git a/program/lib/encoding/ISO-8859-13.map b/program/lib/encoding/ISO-8859-13.map
deleted file mode 100644
index cd11b53..0000000
--- a/program/lib/encoding/ISO-8859-13.map
+++ /dev/null
@@ -1,299 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-13:1998  to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1998 - 1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-13:1998 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-13 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-13 order.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x201D	#	RIGHT DOUBLE QUOTATION MARK
-0xA2	0x00A2	#	CENT SIGN
-0xA3	0x00A3	#	POUND SIGN
-0xA4	0x00A4	#	CURRENCY SIGN
-0xA5	0x201E	#	DOUBLE LOW-9 QUOTATION MARK
-0xA6	0x00A6	#	BROKEN BAR
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x00D8	#	LATIN CAPITAL LETTER O WITH STROKE
-0xA9	0x00A9	#	COPYRIGHT SIGN
-0xAA	0x0156	#	LATIN CAPITAL LETTER R WITH CEDILLA
-0xAB	0x00AB	#	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#	NOT SIGN
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x00AE	#	REGISTERED SIGN
-0xAF	0x00C6	#	LATIN CAPITAL LETTER AE
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x00B1	#	PLUS-MINUS SIGN
-0xB2	0x00B2	#	SUPERSCRIPT TWO
-0xB3	0x00B3	#	SUPERSCRIPT THREE
-0xB4	0x201C	#	LEFT DOUBLE QUOTATION MARK
-0xB5	0x00B5	#	MICRO SIGN
-0xB6	0x00B6	#	PILCROW SIGN
-0xB7	0x00B7	#	MIDDLE DOT
-0xB8	0x00F8	#	LATIN SMALL LETTER O WITH STROKE
-0xB9	0x00B9	#	SUPERSCRIPT ONE
-0xBA	0x0157	#	LATIN SMALL LETTER R WITH CEDILLA
-0xBB	0x00BB	#	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#	VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#	VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#	VULGAR FRACTION THREE QUARTERS
-0xBF	0x00E6	#	LATIN SMALL LETTER AE
-0xC0	0x0104	#	LATIN CAPITAL LETTER A WITH OGONEK
-0xC1	0x012E	#	LATIN CAPITAL LETTER I WITH OGONEK
-0xC2	0x0100	#	LATIN CAPITAL LETTER A WITH MACRON
-0xC3	0x0106	#	LATIN CAPITAL LETTER C WITH ACUTE
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#	LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x0118	#	LATIN CAPITAL LETTER E WITH OGONEK
-0xC7	0x0112	#	LATIN CAPITAL LETTER E WITH MACRON
-0xC8	0x010C	#	LATIN CAPITAL LETTER C WITH CARON
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x0179	#	LATIN CAPITAL LETTER Z WITH ACUTE
-0xCB	0x0116	#	LATIN CAPITAL LETTER E WITH DOT ABOVE
-0xCC	0x0122	#	LATIN CAPITAL LETTER G WITH CEDILLA
-0xCD	0x0136	#	LATIN CAPITAL LETTER K WITH CEDILLA
-0xCE	0x012A	#	LATIN CAPITAL LETTER I WITH MACRON
-0xCF	0x013B	#	LATIN CAPITAL LETTER L WITH CEDILLA
-0xD0	0x0160	#	LATIN CAPITAL LETTER S WITH CARON
-0xD1	0x0143	#	LATIN CAPITAL LETTER N WITH ACUTE
-0xD2	0x0145	#	LATIN CAPITAL LETTER N WITH CEDILLA
-0xD3	0x00D3	#	LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x014C	#	LATIN CAPITAL LETTER O WITH MACRON
-0xD5	0x00D5	#	LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#	MULTIPLICATION SIGN
-0xD8	0x0172	#	LATIN CAPITAL LETTER U WITH OGONEK
-0xD9	0x0141	#	LATIN CAPITAL LETTER L WITH STROKE
-0xDA	0x015A	#	LATIN CAPITAL LETTER S WITH ACUTE
-0xDB	0x016A	#	LATIN CAPITAL LETTER U WITH MACRON
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x017B	#	LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xDE	0x017D	#	LATIN CAPITAL LETTER Z WITH CARON
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S (German)
-0xE0	0x0105	#	LATIN SMALL LETTER A WITH OGONEK
-0xE1	0x012F	#	LATIN SMALL LETTER I WITH OGONEK
-0xE2	0x0101	#	LATIN SMALL LETTER A WITH MACRON
-0xE3	0x0107	#	LATIN SMALL LETTER C WITH ACUTE
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#	LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x0119	#	LATIN SMALL LETTER E WITH OGONEK
-0xE7	0x0113	#	LATIN SMALL LETTER E WITH MACRON
-0xE8	0x010D	#	LATIN SMALL LETTER C WITH CARON
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x017A	#	LATIN SMALL LETTER Z WITH ACUTE
-0xEB	0x0117	#	LATIN SMALL LETTER E WITH DOT ABOVE
-0xEC	0x0123	#	LATIN SMALL LETTER G WITH CEDILLA
-0xED	0x0137	#	LATIN SMALL LETTER K WITH CEDILLA
-0xEE	0x012B	#	LATIN SMALL LETTER I WITH MACRON
-0xEF	0x013C	#	LATIN SMALL LETTER L WITH CEDILLA
-0xF0	0x0161	#	LATIN SMALL LETTER S WITH CARON
-0xF1	0x0144	#	LATIN SMALL LETTER N WITH ACUTE
-0xF2	0x0146	#	LATIN SMALL LETTER N WITH CEDILLA
-0xF3	0x00F3	#	LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x014D	#	LATIN SMALL LETTER O WITH MACRON
-0xF5	0x00F5	#	LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#	DIVISION SIGN
-0xF8	0x0173	#	LATIN SMALL LETTER U WITH OGONEK
-0xF9	0x0142	#	LATIN SMALL LETTER L WITH STROKE
-0xFA	0x015B	#	LATIN SMALL LETTER S WITH ACUTE
-0xFB	0x016B	#	LATIN SMALL LETTER U WITH MACRON
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x017C	#	LATIN SMALL LETTER Z WITH DOT ABOVE
-0xFE	0x017E	#	LATIN SMALL LETTER Z WITH CARON
-0xFF	0x2019	#	RIGHT SINGLE QUOTATION MARK
diff --git a/program/lib/encoding/ISO-8859-14.map b/program/lib/encoding/ISO-8859-14.map
deleted file mode 100644
index 73e9855..0000000
--- a/program/lib/encoding/ISO-8859-14.map
+++ /dev/null
@@ -1,301 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-14:1998 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
-#			  Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1998 - 1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-14:1998 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-14 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-14 order.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x1E02	#	LATIN CAPITAL LETTER B WITH DOT ABOVE
-0xA2	0x1E03	#	LATIN SMALL LETTER B WITH DOT ABOVE
-0xA3	0x00A3	#	POUND SIGN
-0xA4	0x010A	#	LATIN CAPITAL LETTER C WITH DOT ABOVE
-0xA5	0x010B	#	LATIN SMALL LETTER C WITH DOT ABOVE
-0xA6	0x1E0A	#	LATIN CAPITAL LETTER D WITH DOT ABOVE
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x1E80	#	LATIN CAPITAL LETTER W WITH GRAVE
-0xA9	0x00A9	#	COPYRIGHT SIGN
-0xAA	0x1E82	#	LATIN CAPITAL LETTER W WITH ACUTE
-0xAB	0x1E0B	#	LATIN SMALL LETTER D WITH DOT ABOVE
-0xAC	0x1EF2	#	LATIN CAPITAL LETTER Y WITH GRAVE
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x00AE	#	REGISTERED SIGN
-0xAF	0x0178	#	LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xB0	0x1E1E	#	LATIN CAPITAL LETTER F WITH DOT ABOVE
-0xB1	0x1E1F	#	LATIN SMALL LETTER F WITH DOT ABOVE
-0xB2	0x0120	#	LATIN CAPITAL LETTER G WITH DOT ABOVE
-0xB3	0x0121	#	LATIN SMALL LETTER G WITH DOT ABOVE
-0xB4	0x1E40	#	LATIN CAPITAL LETTER M WITH DOT ABOVE
-0xB5	0x1E41	#	LATIN SMALL LETTER M WITH DOT ABOVE
-0xB6	0x00B6	#	PILCROW SIGN
-0xB7	0x1E56	#	LATIN CAPITAL LETTER P WITH DOT ABOVE
-0xB8	0x1E81	#	LATIN SMALL LETTER W WITH GRAVE
-0xB9	0x1E57	#	LATIN SMALL LETTER P WITH DOT ABOVE
-0xBA	0x1E83	#	LATIN SMALL LETTER W WITH ACUTE
-0xBB	0x1E60	#	LATIN CAPITAL LETTER S WITH DOT ABOVE
-0xBC	0x1EF3	#	LATIN SMALL LETTER Y WITH GRAVE
-0xBD	0x1E84	#	LATIN CAPITAL LETTER W WITH DIAERESIS
-0xBE	0x1E85	#	LATIN SMALL LETTER W WITH DIAERESIS
-0xBF	0x1E61	#	LATIN SMALL LETTER S WITH DOT ABOVE
-0xC0	0x00C0	#	LATIN CAPITAL LETTER A WITH GRAVE
-0xC1	0x00C1	#	LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x00C3	#	LATIN CAPITAL LETTER A WITH TILDE
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#	LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x00C6	#	LATIN CAPITAL LETTER AE
-0xC7	0x00C7	#	LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x00C8	#	LATIN CAPITAL LETTER E WITH GRAVE
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x00CA	#	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB	0x00CB	#	LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x00CC	#	LATIN CAPITAL LETTER I WITH GRAVE
-0xCD	0x00CD	#	LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#	LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0	0x0174	#	LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-0xD1	0x00D1	#	LATIN CAPITAL LETTER N WITH TILDE
-0xD2	0x00D2	#	LATIN CAPITAL LETTER O WITH GRAVE
-0xD3	0x00D3	#	LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x00D5	#	LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x1E6A	#	LATIN CAPITAL LETTER T WITH DOT ABOVE
-0xD8	0x00D8	#	LATIN CAPITAL LETTER O WITH STROKE
-0xD9	0x00D9	#	LATIN CAPITAL LETTER U WITH GRAVE
-0xDA	0x00DA	#	LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x00DD	#	LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE	0x0176	#	LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S
-0xE0	0x00E0	#	LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x00E1	#	LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#	LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x00E3	#	LATIN SMALL LETTER A WITH TILDE
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#	LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x00E6	#	LATIN SMALL LETTER AE
-0xE7	0x00E7	#	LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#	LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#	LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#	LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x00EC	#	LATIN SMALL LETTER I WITH GRAVE
-0xED	0x00ED	#	LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#	LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#	LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x0175	#	LATIN SMALL LETTER W WITH CIRCUMFLEX
-0xF1	0x00F1	#	LATIN SMALL LETTER N WITH TILDE
-0xF2	0x00F2	#	LATIN SMALL LETTER O WITH GRAVE
-0xF3	0x00F3	#	LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#	LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x00F5	#	LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x1E6B	#	LATIN SMALL LETTER T WITH DOT ABOVE
-0xF8	0x00F8	#	LATIN SMALL LETTER O WITH STROKE
-0xF9	0x00F9	#	LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x00FA	#	LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#	LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x00FD	#	LATIN SMALL LETTER Y WITH ACUTE
-0xFE	0x0177	#	LATIN SMALL LETTER Y WITH CIRCUMFLEX
-0xFF	0x00FF	#	LATIN SMALL LETTER Y WITH DIAERESIS
-
diff --git a/program/lib/encoding/ISO-8859-15.map b/program/lib/encoding/ISO-8859-15.map
deleted file mode 100644
index ab2f32f..0000000
--- a/program/lib/encoding/ISO-8859-15.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-15:1999 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
-#			  Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1998 - 1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-15:1999 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-15 order.
-#
-#	Version history
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x00A1	#	INVERTED EXCLAMATION MARK
-0xA2	0x00A2	#	CENT SIGN
-0xA3	0x00A3	#	POUND SIGN
-0xA4	0x20AC	#	EURO SIGN
-0xA5	0x00A5	#	YEN SIGN
-0xA6	0x0160	#	LATIN CAPITAL LETTER S WITH CARON
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x0161	#	LATIN SMALL LETTER S WITH CARON
-0xA9	0x00A9	#	COPYRIGHT SIGN
-0xAA	0x00AA	#	FEMININE ORDINAL INDICATOR
-0xAB	0x00AB	#	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#	NOT SIGN
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x00AE	#	REGISTERED SIGN
-0xAF	0x00AF	#	MACRON
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x00B1	#	PLUS-MINUS SIGN
-0xB2	0x00B2	#	SUPERSCRIPT TWO
-0xB3	0x00B3	#	SUPERSCRIPT THREE
-0xB4	0x017D	#	LATIN CAPITAL LETTER Z WITH CARON
-0xB5	0x00B5	#	MICRO SIGN
-0xB6	0x00B6	#	PILCROW SIGN
-0xB7	0x00B7	#	MIDDLE DOT
-0xB8	0x017E	#	LATIN SMALL LETTER Z WITH CARON
-0xB9	0x00B9	#	SUPERSCRIPT ONE
-0xBA	0x00BA	#	MASCULINE ORDINAL INDICATOR
-0xBB	0x00BB	#	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x0152	#	LATIN CAPITAL LIGATURE OE
-0xBD	0x0153	#	LATIN SMALL LIGATURE OE
-0xBE	0x0178	#	LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xBF	0x00BF	#	INVERTED QUESTION MARK
-0xC0	0x00C0	#	LATIN CAPITAL LETTER A WITH GRAVE
-0xC1	0x00C1	#	LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x00C3	#	LATIN CAPITAL LETTER A WITH TILDE
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#	LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x00C6	#	LATIN CAPITAL LETTER AE
-0xC7	0x00C7	#	LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x00C8	#	LATIN CAPITAL LETTER E WITH GRAVE
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x00CA	#	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB	0x00CB	#	LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x00CC	#	LATIN CAPITAL LETTER I WITH GRAVE
-0xCD	0x00CD	#	LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#	LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0	0x00D0	#	LATIN CAPITAL LETTER ETH
-0xD1	0x00D1	#	LATIN CAPITAL LETTER N WITH TILDE
-0xD2	0x00D2	#	LATIN CAPITAL LETTER O WITH GRAVE
-0xD3	0x00D3	#	LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x00D5	#	LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#	MULTIPLICATION SIGN
-0xD8	0x00D8	#	LATIN CAPITAL LETTER O WITH STROKE
-0xD9	0x00D9	#	LATIN CAPITAL LETTER U WITH GRAVE
-0xDA	0x00DA	#	LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x00DD	#	LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE	0x00DE	#	LATIN CAPITAL LETTER THORN
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S
-0xE0	0x00E0	#	LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x00E1	#	LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#	LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x00E3	#	LATIN SMALL LETTER A WITH TILDE
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#	LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x00E6	#	LATIN SMALL LETTER AE
-0xE7	0x00E7	#	LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#	LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#	LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#	LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x00EC	#	LATIN SMALL LETTER I WITH GRAVE
-0xED	0x00ED	#	LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#	LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#	LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x00F0	#	LATIN SMALL LETTER ETH
-0xF1	0x00F1	#	LATIN SMALL LETTER N WITH TILDE
-0xF2	0x00F2	#	LATIN SMALL LETTER O WITH GRAVE
-0xF3	0x00F3	#	LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#	LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x00F5	#	LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#	DIVISION SIGN
-0xF8	0x00F8	#	LATIN SMALL LETTER O WITH STROKE
-0xF9	0x00F9	#	LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x00FA	#	LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#	LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x00FD	#	LATIN SMALL LETTER Y WITH ACUTE
-0xFE	0x00FE	#	LATIN SMALL LETTER THORN
-0xFF	0x00FF	#	LATIN SMALL LETTER Y WITH DIAERESIS
-
diff --git a/program/lib/encoding/ISO-8859-16.map b/program/lib/encoding/ISO-8859-16.map
deleted file mode 100644
index c0dcf0d..0000000
--- a/program/lib/encoding/ISO-8859-16.map
+++ /dev/null
@@ -1,299 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-16:2001 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             2001 July 26
-#	Authors:          Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
-#
-#	Copyright (c) 1999-2001 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-16:2001 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-16 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-16 order.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x0104	#	LATIN CAPITAL LETTER A WITH OGONEK
-0xA2	0x0105	#	LATIN SMALL LETTER A WITH OGONEK
-0xA3	0x0141	#	LATIN CAPITAL LETTER L WITH STROKE
-0xA4	0x20AC	#	EURO SIGN
-0xA5	0x201E	#	DOUBLE LOW-9 QUOTATION MARK
-0xA6	0x0160	#	LATIN CAPITAL LETTER S WITH CARON
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x0161	#	LATIN SMALL LETTER S WITH CARON
-0xA9	0x00A9	#	COPYRIGHT SIGN
-0xAA	0x0218	#	LATIN CAPITAL LETTER S WITH COMMA BELOW
-0xAB	0x00AB	#	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x0179	#	LATIN CAPITAL LETTER Z WITH ACUTE
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x017A	#	LATIN SMALL LETTER Z WITH ACUTE
-0xAF	0x017B	#	LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x00B1	#	PLUS-MINUS SIGN
-0xB2	0x010C	#	LATIN CAPITAL LETTER C WITH CARON
-0xB3	0x0142	#	LATIN SMALL LETTER L WITH STROKE
-0xB4	0x017D	#	LATIN CAPITAL LETTER Z WITH CARON
-0xB5	0x201D	#	RIGHT DOUBLE QUOTATION MARK
-0xB6	0x00B6	#	PILCROW SIGN
-0xB7	0x00B7	#	MIDDLE DOT
-0xB8	0x017E	#	LATIN SMALL LETTER Z WITH CARON
-0xB9	0x010D	#	LATIN SMALL LETTER C WITH CARON
-0xBA	0x0219	#	LATIN SMALL LETTER S WITH COMMA BELOW
-0xBB	0x00BB	#	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x0152	#	LATIN CAPITAL LIGATURE OE
-0xBD	0x0153	#	LATIN SMALL LIGATURE OE
-0xBE	0x0178	#	LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xBF	0x017C	#	LATIN SMALL LETTER Z WITH DOT ABOVE
-0xC0	0x00C0	#	LATIN CAPITAL LETTER A WITH GRAVE
-0xC1	0x00C1	#	LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x0102	#	LATIN CAPITAL LETTER A WITH BREVE
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x0106	#	LATIN CAPITAL LETTER C WITH ACUTE
-0xC6	0x00C6	#	LATIN CAPITAL LETTER AE
-0xC7	0x00C7	#	LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x00C8	#	LATIN CAPITAL LETTER E WITH GRAVE
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x00CA	#	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB	0x00CB	#	LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x00CC	#	LATIN CAPITAL LETTER I WITH GRAVE
-0xCD	0x00CD	#	LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#	LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0	0x0110	#	LATIN CAPITAL LETTER D WITH STROKE
-0xD1	0x0143	#	LATIN CAPITAL LETTER N WITH ACUTE
-0xD2	0x00D2	#	LATIN CAPITAL LETTER O WITH GRAVE
-0xD3	0x00D3	#	LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x0150	#	LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x015A	#	LATIN CAPITAL LETTER S WITH ACUTE
-0xD8	0x0170	#	LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0xD9	0x00D9	#	LATIN CAPITAL LETTER U WITH GRAVE
-0xDA	0x00DA	#	LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x0118	#	LATIN CAPITAL LETTER E WITH OGONEK
-0xDE	0x021A	#	LATIN CAPITAL LETTER T WITH COMMA BELOW
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S
-0xE0	0x00E0	#	LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x00E1	#	LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#	LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x0103	#	LATIN SMALL LETTER A WITH BREVE
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x0107	#	LATIN SMALL LETTER C WITH ACUTE
-0xE6	0x00E6	#	LATIN SMALL LETTER AE
-0xE7	0x00E7	#	LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#	LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#	LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#	LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x00EC	#	LATIN SMALL LETTER I WITH GRAVE
-0xED	0x00ED	#	LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#	LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#	LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x0111	#	LATIN SMALL LETTER D WITH STROKE
-0xF1	0x0144	#	LATIN SMALL LETTER N WITH ACUTE
-0xF2	0x00F2	#	LATIN SMALL LETTER O WITH GRAVE
-0xF3	0x00F3	#	LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#	LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x0151	#	LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x015B	#	LATIN SMALL LETTER S WITH ACUTE
-0xF8	0x0171	#	LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0xF9	0x00F9	#	LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x00FA	#	LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#	LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x0119	#	LATIN SMALL LETTER E WITH OGONEK
-0xFE	0x021B	#	LATIN SMALL LETTER T WITH COMMA BELOW
-0xFF	0x00FF	#	LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/ISO-8859-2.map b/program/lib/encoding/ISO-8859-2.map
deleted file mode 100644
index e45df25..0000000
--- a/program/lib/encoding/ISO-8859-2.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-#	Name:             ISO 8859-2:1999 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-2:1999 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-2 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-2 order.
-#
-#	Version history
-#	1.0 version updates 0.1 version by adding mappings for all
-#	control characters.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x0104	#	LATIN CAPITAL LETTER A WITH OGONEK
-0xA2	0x02D8	#	BREVE
-0xA3	0x0141	#	LATIN CAPITAL LETTER L WITH STROKE
-0xA4	0x00A4	#	CURRENCY SIGN
-0xA5	0x013D	#	LATIN CAPITAL LETTER L WITH CARON
-0xA6	0x015A	#	LATIN CAPITAL LETTER S WITH ACUTE
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x00A8	#	DIAERESIS
-0xA9	0x0160	#	LATIN CAPITAL LETTER S WITH CARON
-0xAA	0x015E	#	LATIN CAPITAL LETTER S WITH CEDILLA
-0xAB	0x0164	#	LATIN CAPITAL LETTER T WITH CARON
-0xAC	0x0179	#	LATIN CAPITAL LETTER Z WITH ACUTE
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x017D	#	LATIN CAPITAL LETTER Z WITH CARON
-0xAF	0x017B	#	LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x0105	#	LATIN SMALL LETTER A WITH OGONEK
-0xB2	0x02DB	#	OGONEK
-0xB3	0x0142	#	LATIN SMALL LETTER L WITH STROKE
-0xB4	0x00B4	#	ACUTE ACCENT
-0xB5	0x013E	#	LATIN SMALL LETTER L WITH CARON
-0xB6	0x015B	#	LATIN SMALL LETTER S WITH ACUTE
-0xB7	0x02C7	#	CARON
-0xB8	0x00B8	#	CEDILLA
-0xB9	0x0161	#	LATIN SMALL LETTER S WITH CARON
-0xBA	0x015F	#	LATIN SMALL LETTER S WITH CEDILLA
-0xBB	0x0165	#	LATIN SMALL LETTER T WITH CARON
-0xBC	0x017A	#	LATIN SMALL LETTER Z WITH ACUTE
-0xBD	0x02DD	#	DOUBLE ACUTE ACCENT
-0xBE	0x017E	#	LATIN SMALL LETTER Z WITH CARON
-0xBF	0x017C	#	LATIN SMALL LETTER Z WITH DOT ABOVE
-0xC0	0x0154	#	LATIN CAPITAL LETTER R WITH ACUTE
-0xC1	0x00C1	#	LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x0102	#	LATIN CAPITAL LETTER A WITH BREVE
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x0139	#	LATIN CAPITAL LETTER L WITH ACUTE
-0xC6	0x0106	#	LATIN CAPITAL LETTER C WITH ACUTE
-0xC7	0x00C7	#	LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x010C	#	LATIN CAPITAL LETTER C WITH CARON
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x0118	#	LATIN CAPITAL LETTER E WITH OGONEK
-0xCB	0x00CB	#	LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x011A	#	LATIN CAPITAL LETTER E WITH CARON
-0xCD	0x00CD	#	LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x010E	#	LATIN CAPITAL LETTER D WITH CARON
-0xD0	0x0110	#	LATIN CAPITAL LETTER D WITH STROKE
-0xD1	0x0143	#	LATIN CAPITAL LETTER N WITH ACUTE
-0xD2	0x0147	#	LATIN CAPITAL LETTER N WITH CARON
-0xD3	0x00D3	#	LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x0150	#	LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#	MULTIPLICATION SIGN
-0xD8	0x0158	#	LATIN CAPITAL LETTER R WITH CARON
-0xD9	0x016E	#	LATIN CAPITAL LETTER U WITH RING ABOVE
-0xDA	0x00DA	#	LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x0170	#	LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x00DD	#	LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE	0x0162	#	LATIN CAPITAL LETTER T WITH CEDILLA
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S
-0xE0	0x0155	#	LATIN SMALL LETTER R WITH ACUTE
-0xE1	0x00E1	#	LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#	LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x0103	#	LATIN SMALL LETTER A WITH BREVE
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x013A	#	LATIN SMALL LETTER L WITH ACUTE
-0xE6	0x0107	#	LATIN SMALL LETTER C WITH ACUTE
-0xE7	0x00E7	#	LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x010D	#	LATIN SMALL LETTER C WITH CARON
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x0119	#	LATIN SMALL LETTER E WITH OGONEK
-0xEB	0x00EB	#	LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x011B	#	LATIN SMALL LETTER E WITH CARON
-0xED	0x00ED	#	LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#	LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x010F	#	LATIN SMALL LETTER D WITH CARON
-0xF0	0x0111	#	LATIN SMALL LETTER D WITH STROKE
-0xF1	0x0144	#	LATIN SMALL LETTER N WITH ACUTE
-0xF2	0x0148	#	LATIN SMALL LETTER N WITH CARON
-0xF3	0x00F3	#	LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#	LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x0151	#	LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#	DIVISION SIGN
-0xF8	0x0159	#	LATIN SMALL LETTER R WITH CARON
-0xF9	0x016F	#	LATIN SMALL LETTER U WITH RING ABOVE
-0xFA	0x00FA	#	LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x0171	#	LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x00FD	#	LATIN SMALL LETTER Y WITH ACUTE
-0xFE	0x0163	#	LATIN SMALL LETTER T WITH CEDILLA
-0xFF	0x02D9	#	DOT ABOVE
diff --git a/program/lib/encoding/ISO-8859-3.map b/program/lib/encoding/ISO-8859-3.map
deleted file mode 100644
index 9b6ac69..0000000
--- a/program/lib/encoding/ISO-8859-3.map
+++ /dev/null
@@ -1,296 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-3:1999 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-3:1999 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-3 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-3 order.
-#
-#	Version history
-#	1.0 version updates 0.1 version by adding mappings for all
-#	control characters.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x0126	#	LATIN CAPITAL LETTER H WITH STROKE
-0xA2	0x02D8	#	BREVE
-0xA3	0x00A3	#	POUND SIGN
-0xA4	0x00A4	#	CURRENCY SIGN
-0xA6	0x0124	#	LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x00A8	#	DIAERESIS
-0xA9	0x0130	#	LATIN CAPITAL LETTER I WITH DOT ABOVE
-0xAA	0x015E	#	LATIN CAPITAL LETTER S WITH CEDILLA
-0xAB	0x011E	#	LATIN CAPITAL LETTER G WITH BREVE
-0xAC	0x0134	#	LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAF	0x017B	#	LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x0127	#	LATIN SMALL LETTER H WITH STROKE
-0xB2	0x00B2	#	SUPERSCRIPT TWO
-0xB3	0x00B3	#	SUPERSCRIPT THREE
-0xB4	0x00B4	#	ACUTE ACCENT
-0xB5	0x00B5	#	MICRO SIGN
-0xB6	0x0125	#	LATIN SMALL LETTER H WITH CIRCUMFLEX
-0xB7	0x00B7	#	MIDDLE DOT
-0xB8	0x00B8	#	CEDILLA
-0xB9	0x0131	#	LATIN SMALL LETTER DOTLESS I
-0xBA	0x015F	#	LATIN SMALL LETTER S WITH CEDILLA
-0xBB	0x011F	#	LATIN SMALL LETTER G WITH BREVE
-0xBC	0x0135	#	LATIN SMALL LETTER J WITH CIRCUMFLEX
-0xBD	0x00BD	#	VULGAR FRACTION ONE HALF
-0xBF	0x017C	#	LATIN SMALL LETTER Z WITH DOT ABOVE
-0xC0	0x00C0	#	LATIN CAPITAL LETTER A WITH GRAVE
-0xC1	0x00C1	#	LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x010A	#	LATIN CAPITAL LETTER C WITH DOT ABOVE
-0xC6	0x0108	#	LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-0xC7	0x00C7	#	LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x00C8	#	LATIN CAPITAL LETTER E WITH GRAVE
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x00CA	#	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB	0x00CB	#	LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x00CC	#	LATIN CAPITAL LETTER I WITH GRAVE
-0xCD	0x00CD	#	LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#	LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD1	0x00D1	#	LATIN CAPITAL LETTER N WITH TILDE
-0xD2	0x00D2	#	LATIN CAPITAL LETTER O WITH GRAVE
-0xD3	0x00D3	#	LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x0120	#	LATIN CAPITAL LETTER G WITH DOT ABOVE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#	MULTIPLICATION SIGN
-0xD8	0x011C	#	LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-0xD9	0x00D9	#	LATIN CAPITAL LETTER U WITH GRAVE
-0xDA	0x00DA	#	LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x016C	#	LATIN CAPITAL LETTER U WITH BREVE
-0xDE	0x015C	#	LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S
-0xE0	0x00E0	#	LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x00E1	#	LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#	LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x010B	#	LATIN SMALL LETTER C WITH DOT ABOVE
-0xE6	0x0109	#	LATIN SMALL LETTER C WITH CIRCUMFLEX
-0xE7	0x00E7	#	LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#	LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#	LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#	LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x00EC	#	LATIN SMALL LETTER I WITH GRAVE
-0xED	0x00ED	#	LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#	LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#	LATIN SMALL LETTER I WITH DIAERESIS
-0xF1	0x00F1	#	LATIN SMALL LETTER N WITH TILDE
-0xF2	0x00F2	#	LATIN SMALL LETTER O WITH GRAVE
-0xF3	0x00F3	#	LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#	LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x0121	#	LATIN SMALL LETTER G WITH DOT ABOVE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#	DIVISION SIGN
-0xF8	0x011D	#	LATIN SMALL LETTER G WITH CIRCUMFLEX
-0xF9	0x00F9	#	LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x00FA	#	LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#	LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x016D	#	LATIN SMALL LETTER U WITH BREVE
-0xFE	0x015D	#	LATIN SMALL LETTER S WITH CIRCUMFLEX
-0xFF	0x02D9	#	DOT ABOVE
diff --git a/program/lib/encoding/ISO-8859-4.map b/program/lib/encoding/ISO-8859-4.map
deleted file mode 100644
index 662e698..0000000
--- a/program/lib/encoding/ISO-8859-4.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-4:1998 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-4:1998 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-4 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-4 order.
-#
-#	Version history
-#	1.0 version updates 0.1 version by adding mappings for all
-#	control characters.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x0104	#	LATIN CAPITAL LETTER A WITH OGONEK
-0xA2	0x0138	#	LATIN SMALL LETTER KRA
-0xA3	0x0156	#	LATIN CAPITAL LETTER R WITH CEDILLA
-0xA4	0x00A4	#	CURRENCY SIGN
-0xA5	0x0128	#	LATIN CAPITAL LETTER I WITH TILDE
-0xA6	0x013B	#	LATIN CAPITAL LETTER L WITH CEDILLA
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x00A8	#	DIAERESIS
-0xA9	0x0160	#	LATIN CAPITAL LETTER S WITH CARON
-0xAA	0x0112	#	LATIN CAPITAL LETTER E WITH MACRON
-0xAB	0x0122	#	LATIN CAPITAL LETTER G WITH CEDILLA
-0xAC	0x0166	#	LATIN CAPITAL LETTER T WITH STROKE
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x017D	#	LATIN CAPITAL LETTER Z WITH CARON
-0xAF	0x00AF	#	MACRON
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x0105	#	LATIN SMALL LETTER A WITH OGONEK
-0xB2	0x02DB	#	OGONEK
-0xB3	0x0157	#	LATIN SMALL LETTER R WITH CEDILLA
-0xB4	0x00B4	#	ACUTE ACCENT
-0xB5	0x0129	#	LATIN SMALL LETTER I WITH TILDE
-0xB6	0x013C	#	LATIN SMALL LETTER L WITH CEDILLA
-0xB7	0x02C7	#	CARON
-0xB8	0x00B8	#	CEDILLA
-0xB9	0x0161	#	LATIN SMALL LETTER S WITH CARON
-0xBA	0x0113	#	LATIN SMALL LETTER E WITH MACRON
-0xBB	0x0123	#	LATIN SMALL LETTER G WITH CEDILLA
-0xBC	0x0167	#	LATIN SMALL LETTER T WITH STROKE
-0xBD	0x014A	#	LATIN CAPITAL LETTER ENG
-0xBE	0x017E	#	LATIN SMALL LETTER Z WITH CARON
-0xBF	0x014B	#	LATIN SMALL LETTER ENG
-0xC0	0x0100	#	LATIN CAPITAL LETTER A WITH MACRON
-0xC1	0x00C1	#	LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x00C3	#	LATIN CAPITAL LETTER A WITH TILDE
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#	LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x00C6	#	LATIN CAPITAL LETTER AE
-0xC7	0x012E	#	LATIN CAPITAL LETTER I WITH OGONEK
-0xC8	0x010C	#	LATIN CAPITAL LETTER C WITH CARON
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x0118	#	LATIN CAPITAL LETTER E WITH OGONEK
-0xCB	0x00CB	#	LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x0116	#	LATIN CAPITAL LETTER E WITH DOT ABOVE
-0xCD	0x00CD	#	LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x012A	#	LATIN CAPITAL LETTER I WITH MACRON
-0xD0	0x0110	#	LATIN CAPITAL LETTER D WITH STROKE
-0xD1	0x0145	#	LATIN CAPITAL LETTER N WITH CEDILLA
-0xD2	0x014C	#	LATIN CAPITAL LETTER O WITH MACRON
-0xD3	0x0136	#	LATIN CAPITAL LETTER K WITH CEDILLA
-0xD4	0x00D4	#	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x00D5	#	LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#	MULTIPLICATION SIGN
-0xD8	0x00D8	#	LATIN CAPITAL LETTER O WITH STROKE
-0xD9	0x0172	#	LATIN CAPITAL LETTER U WITH OGONEK
-0xDA	0x00DA	#	LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x0168	#	LATIN CAPITAL LETTER U WITH TILDE
-0xDE	0x016A	#	LATIN CAPITAL LETTER U WITH MACRON
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S
-0xE0	0x0101	#	LATIN SMALL LETTER A WITH MACRON
-0xE1	0x00E1	#	LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#	LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x00E3	#	LATIN SMALL LETTER A WITH TILDE
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#	LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x00E6	#	LATIN SMALL LETTER AE
-0xE7	0x012F	#	LATIN SMALL LETTER I WITH OGONEK
-0xE8	0x010D	#	LATIN SMALL LETTER C WITH CARON
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x0119	#	LATIN SMALL LETTER E WITH OGONEK
-0xEB	0x00EB	#	LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x0117	#	LATIN SMALL LETTER E WITH DOT ABOVE
-0xED	0x00ED	#	LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#	LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x012B	#	LATIN SMALL LETTER I WITH MACRON
-0xF0	0x0111	#	LATIN SMALL LETTER D WITH STROKE
-0xF1	0x0146	#	LATIN SMALL LETTER N WITH CEDILLA
-0xF2	0x014D	#	LATIN SMALL LETTER O WITH MACRON
-0xF3	0x0137	#	LATIN SMALL LETTER K WITH CEDILLA
-0xF4	0x00F4	#	LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x00F5	#	LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#	DIVISION SIGN
-0xF8	0x00F8	#	LATIN SMALL LETTER O WITH STROKE
-0xF9	0x0173	#	LATIN SMALL LETTER U WITH OGONEK
-0xFA	0x00FA	#	LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#	LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x0169	#	LATIN SMALL LETTER U WITH TILDE
-0xFE	0x016B	#	LATIN SMALL LETTER U WITH MACRON
-0xFF	0x02D9	#	DOT ABOVE
diff --git a/program/lib/encoding/ISO-8859-5.map b/program/lib/encoding/ISO-8859-5.map
deleted file mode 100644
index a7ed1ce..0000000
--- a/program/lib/encoding/ISO-8859-5.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-#	Name:             ISO 8859-5:1999 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-5:1999 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-5 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-5 order.
-#
-#	Version history
-#	1.0 version updates 0.1 version by adding mappings for all
-#	control characters.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x0401	#	CYRILLIC CAPITAL LETTER IO
-0xA2	0x0402	#	CYRILLIC CAPITAL LETTER DJE
-0xA3	0x0403	#	CYRILLIC CAPITAL LETTER GJE
-0xA4	0x0404	#	CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0xA5	0x0405	#	CYRILLIC CAPITAL LETTER DZE
-0xA6	0x0406	#	CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0xA7	0x0407	#	CYRILLIC CAPITAL LETTER YI
-0xA8	0x0408	#	CYRILLIC CAPITAL LETTER JE
-0xA9	0x0409	#	CYRILLIC CAPITAL LETTER LJE
-0xAA	0x040A	#	CYRILLIC CAPITAL LETTER NJE
-0xAB	0x040B	#	CYRILLIC CAPITAL LETTER TSHE
-0xAC	0x040C	#	CYRILLIC CAPITAL LETTER KJE
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x040E	#	CYRILLIC CAPITAL LETTER SHORT U
-0xAF	0x040F	#	CYRILLIC CAPITAL LETTER DZHE
-0xB0	0x0410	#	CYRILLIC CAPITAL LETTER A
-0xB1	0x0411	#	CYRILLIC CAPITAL LETTER BE
-0xB2	0x0412	#	CYRILLIC CAPITAL LETTER VE
-0xB3	0x0413	#	CYRILLIC CAPITAL LETTER GHE
-0xB4	0x0414	#	CYRILLIC CAPITAL LETTER DE
-0xB5	0x0415	#	CYRILLIC CAPITAL LETTER IE
-0xB6	0x0416	#	CYRILLIC CAPITAL LETTER ZHE
-0xB7	0x0417	#	CYRILLIC CAPITAL LETTER ZE
-0xB8	0x0418	#	CYRILLIC CAPITAL LETTER I
-0xB9	0x0419	#	CYRILLIC CAPITAL LETTER SHORT I
-0xBA	0x041A	#	CYRILLIC CAPITAL LETTER KA
-0xBB	0x041B	#	CYRILLIC CAPITAL LETTER EL
-0xBC	0x041C	#	CYRILLIC CAPITAL LETTER EM
-0xBD	0x041D	#	CYRILLIC CAPITAL LETTER EN
-0xBE	0x041E	#	CYRILLIC CAPITAL LETTER O
-0xBF	0x041F	#	CYRILLIC CAPITAL LETTER PE
-0xC0	0x0420	#	CYRILLIC CAPITAL LETTER ER
-0xC1	0x0421	#	CYRILLIC CAPITAL LETTER ES
-0xC2	0x0422	#	CYRILLIC CAPITAL LETTER TE
-0xC3	0x0423	#	CYRILLIC CAPITAL LETTER U
-0xC4	0x0424	#	CYRILLIC CAPITAL LETTER EF
-0xC5	0x0425	#	CYRILLIC CAPITAL LETTER HA
-0xC6	0x0426	#	CYRILLIC CAPITAL LETTER TSE
-0xC7	0x0427	#	CYRILLIC CAPITAL LETTER CHE
-0xC8	0x0428	#	CYRILLIC CAPITAL LETTER SHA
-0xC9	0x0429	#	CYRILLIC CAPITAL LETTER SHCHA
-0xCA	0x042A	#	CYRILLIC CAPITAL LETTER HARD SIGN
-0xCB	0x042B	#	CYRILLIC CAPITAL LETTER YERU
-0xCC	0x042C	#	CYRILLIC CAPITAL LETTER SOFT SIGN
-0xCD	0x042D	#	CYRILLIC CAPITAL LETTER E
-0xCE	0x042E	#	CYRILLIC CAPITAL LETTER YU
-0xCF	0x042F	#	CYRILLIC CAPITAL LETTER YA
-0xD0	0x0430	#	CYRILLIC SMALL LETTER A
-0xD1	0x0431	#	CYRILLIC SMALL LETTER BE
-0xD2	0x0432	#	CYRILLIC SMALL LETTER VE
-0xD3	0x0433	#	CYRILLIC SMALL LETTER GHE
-0xD4	0x0434	#	CYRILLIC SMALL LETTER DE
-0xD5	0x0435	#	CYRILLIC SMALL LETTER IE
-0xD6	0x0436	#	CYRILLIC SMALL LETTER ZHE
-0xD7	0x0437	#	CYRILLIC SMALL LETTER ZE
-0xD8	0x0438	#	CYRILLIC SMALL LETTER I
-0xD9	0x0439	#	CYRILLIC SMALL LETTER SHORT I
-0xDA	0x043A	#	CYRILLIC SMALL LETTER KA
-0xDB	0x043B	#	CYRILLIC SMALL LETTER EL
-0xDC	0x043C	#	CYRILLIC SMALL LETTER EM
-0xDD	0x043D	#	CYRILLIC SMALL LETTER EN
-0xDE	0x043E	#	CYRILLIC SMALL LETTER O
-0xDF	0x043F	#	CYRILLIC SMALL LETTER PE
-0xE0	0x0440	#	CYRILLIC SMALL LETTER ER
-0xE1	0x0441	#	CYRILLIC SMALL LETTER ES
-0xE2	0x0442	#	CYRILLIC SMALL LETTER TE
-0xE3	0x0443	#	CYRILLIC SMALL LETTER U
-0xE4	0x0444	#	CYRILLIC SMALL LETTER EF
-0xE5	0x0445	#	CYRILLIC SMALL LETTER HA
-0xE6	0x0446	#	CYRILLIC SMALL LETTER TSE
-0xE7	0x0447	#	CYRILLIC SMALL LETTER CHE
-0xE8	0x0448	#	CYRILLIC SMALL LETTER SHA
-0xE9	0x0449	#	CYRILLIC SMALL LETTER SHCHA
-0xEA	0x044A	#	CYRILLIC SMALL LETTER HARD SIGN
-0xEB	0x044B	#	CYRILLIC SMALL LETTER YERU
-0xEC	0x044C	#	CYRILLIC SMALL LETTER SOFT SIGN
-0xED	0x044D	#	CYRILLIC SMALL LETTER E
-0xEE	0x044E	#	CYRILLIC SMALL LETTER YU
-0xEF	0x044F	#	CYRILLIC SMALL LETTER YA
-0xF0	0x2116	#	NUMERO SIGN
-0xF1	0x0451	#	CYRILLIC SMALL LETTER IO
-0xF2	0x0452	#	CYRILLIC SMALL LETTER DJE
-0xF3	0x0453	#	CYRILLIC SMALL LETTER GJE
-0xF4	0x0454	#	CYRILLIC SMALL LETTER UKRAINIAN IE
-0xF5	0x0455	#	CYRILLIC SMALL LETTER DZE
-0xF6	0x0456	#	CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0xF7	0x0457	#	CYRILLIC SMALL LETTER YI
-0xF8	0x0458	#	CYRILLIC SMALL LETTER JE
-0xF9	0x0459	#	CYRILLIC SMALL LETTER LJE
-0xFA	0x045A	#	CYRILLIC SMALL LETTER NJE
-0xFB	0x045B	#	CYRILLIC SMALL LETTER TSHE
-0xFC	0x045C	#	CYRILLIC SMALL LETTER KJE
-0xFD	0x00A7	#	SECTION SIGN
-0xFE	0x045E	#	CYRILLIC SMALL LETTER SHORT U
-0xFF	0x045F	#	CYRILLIC SMALL LETTER DZHE
diff --git a/program/lib/encoding/ISO-8859-6.map b/program/lib/encoding/ISO-8859-6.map
deleted file mode 100644
index 69ac7f5..0000000
--- a/program/lib/encoding/ISO-8859-6.map
+++ /dev/null
@@ -1,260 +0,0 @@
-#
-#	Name:             ISO 8859-6:1999 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-6:1999 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-6 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-6 order.
-#
-#	Version history
-#	1.0 version updates 0.1 version by adding mappings for all
-#	control characters.
-#	0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
-#	of the Arabic digits (U+0660..U+0669).
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA4	0x00A4	#	CURRENCY SIGN
-0xAC	0x060C	#	ARABIC COMMA
-0xAD	0x00AD	#	SOFT HYPHEN
-0xBB	0x061B	#	ARABIC SEMICOLON
-0xBF	0x061F	#	ARABIC QUESTION MARK
-0xC1	0x0621	#	ARABIC LETTER HAMZA
-0xC2	0x0622	#	ARABIC LETTER ALEF WITH MADDA ABOVE
-0xC3	0x0623	#	ARABIC LETTER ALEF WITH HAMZA ABOVE
-0xC4	0x0624	#	ARABIC LETTER WAW WITH HAMZA ABOVE
-0xC5	0x0625	#	ARABIC LETTER ALEF WITH HAMZA BELOW
-0xC6	0x0626	#	ARABIC LETTER YEH WITH HAMZA ABOVE
-0xC7	0x0627	#	ARABIC LETTER ALEF
-0xC8	0x0628	#	ARABIC LETTER BEH
-0xC9	0x0629	#	ARABIC LETTER TEH MARBUTA
-0xCA	0x062A	#	ARABIC LETTER TEH
-0xCB	0x062B	#	ARABIC LETTER THEH
-0xCC	0x062C	#	ARABIC LETTER JEEM
-0xCD	0x062D	#	ARABIC LETTER HAH
-0xCE	0x062E	#	ARABIC LETTER KHAH
-0xCF	0x062F	#	ARABIC LETTER DAL
-0xD0	0x0630	#	ARABIC LETTER THAL
-0xD1	0x0631	#	ARABIC LETTER REH
-0xD2	0x0632	#	ARABIC LETTER ZAIN
-0xD3	0x0633	#	ARABIC LETTER SEEN
-0xD4	0x0634	#	ARABIC LETTER SHEEN
-0xD5	0x0635	#	ARABIC LETTER SAD
-0xD6	0x0636	#	ARABIC LETTER DAD
-0xD7	0x0637	#	ARABIC LETTER TAH
-0xD8	0x0638	#	ARABIC LETTER ZAH
-0xD9	0x0639	#	ARABIC LETTER AIN
-0xDA	0x063A	#	ARABIC LETTER GHAIN
-0xE0	0x0640	#	ARABIC TATWEEL
-0xE1	0x0641	#	ARABIC LETTER FEH
-0xE2	0x0642	#	ARABIC LETTER QAF
-0xE3	0x0643	#	ARABIC LETTER KAF
-0xE4	0x0644	#	ARABIC LETTER LAM
-0xE5	0x0645	#	ARABIC LETTER MEEM
-0xE6	0x0646	#	ARABIC LETTER NOON
-0xE7	0x0647	#	ARABIC LETTER HEH
-0xE8	0x0648	#	ARABIC LETTER WAW
-0xE9	0x0649	#	ARABIC LETTER ALEF MAKSURA
-0xEA	0x064A	#	ARABIC LETTER YEH
-0xEB	0x064B	#	ARABIC FATHATAN
-0xEC	0x064C	#	ARABIC DAMMATAN
-0xED	0x064D	#	ARABIC KASRATAN
-0xEE	0x064E	#	ARABIC FATHA
-0xEF	0x064F	#	ARABIC DAMMA
-0xF0	0x0650	#	ARABIC KASRA
-0xF1	0x0651	#	ARABIC SHADDA
-0xF2	0x0652	#	ARABIC SUKUN
diff --git a/program/lib/encoding/ISO-8859-7.map b/program/lib/encoding/ISO-8859-7.map
deleted file mode 100644
index bc46b74..0000000
--- a/program/lib/encoding/ISO-8859-7.map
+++ /dev/null
@@ -1,308 +0,0 @@
-#
-#	Name:             ISO 8859-7:2003 to Unicode
-#	Unicode version:  4.0
-#	Table version:    2.0
-#	Table format:     Format A
-#	Date:             2003-Nov-12
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1991-2003 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO 8859-7:2003 characters map into Unicode.
-#
-#	ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
-#	and ECMA 118. ISO 8859-7:2003 adds two currency signs 
-#	and one other character not in the earlier standard.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO 8859-7 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO 8859-7 order.
-#
-#	Version history
-#	1.0 version updates 0.1 version by adding mappings for all
-#	control characters.
-#	Remap 0xA1 to U+2018 (instead of 0x02BD) to match text of 8859-7
-#	Remap 0xA2 to U+2019 (instead of 0x02BC) to match text of 8859-7
-#
-#	2.0 version updates 1.0 version by adding mappings for the
-#	three newly added characters 0xA4, 0xA5, 0xAA.
-#
-#	Updated versions of this file may be found in:
-#		<http://www.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact the Unicode Consortium at:
-#	        <http://www.unicode.org/reporting.html>
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x2018	#	LEFT SINGLE QUOTATION MARK
-0xA2	0x2019	#	RIGHT SINGLE QUOTATION MARK
-0xA3	0x00A3	#	POUND SIGN
-0xA4	0x20AC	#	EURO SIGN
-0xA5	0x20AF	#	DRACHMA SIGN
-0xA6	0x00A6	#	BROKEN BAR
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x00A8	#	DIAERESIS
-0xA9	0x00A9	#	COPYRIGHT SIGN
-0xAA	0x037A	#	GREEK YPOGEGRAMMENI
-0xAB	0x00AB	#	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#	NOT SIGN
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAF	0x2015	#	HORIZONTAL BAR
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x00B1	#	PLUS-MINUS SIGN
-0xB2	0x00B2	#	SUPERSCRIPT TWO
-0xB3	0x00B3	#	SUPERSCRIPT THREE
-0xB4	0x0384	#	GREEK TONOS
-0xB5	0x0385	#	GREEK DIALYTIKA TONOS
-0xB6	0x0386	#	GREEK CAPITAL LETTER ALPHA WITH TONOS
-0xB7	0x00B7	#	MIDDLE DOT
-0xB8	0x0388	#	GREEK CAPITAL LETTER EPSILON WITH TONOS
-0xB9	0x0389	#	GREEK CAPITAL LETTER ETA WITH TONOS
-0xBA	0x038A	#	GREEK CAPITAL LETTER IOTA WITH TONOS
-0xBB	0x00BB	#	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x038C	#	GREEK CAPITAL LETTER OMICRON WITH TONOS
-0xBD	0x00BD	#	VULGAR FRACTION ONE HALF
-0xBE	0x038E	#	GREEK CAPITAL LETTER UPSILON WITH TONOS
-0xBF	0x038F	#	GREEK CAPITAL LETTER OMEGA WITH TONOS
-0xC0	0x0390	#	GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0xC1	0x0391	#	GREEK CAPITAL LETTER ALPHA
-0xC2	0x0392	#	GREEK CAPITAL LETTER BETA
-0xC3	0x0393	#	GREEK CAPITAL LETTER GAMMA
-0xC4	0x0394	#	GREEK CAPITAL LETTER DELTA
-0xC5	0x0395	#	GREEK CAPITAL LETTER EPSILON
-0xC6	0x0396	#	GREEK CAPITAL LETTER ZETA
-0xC7	0x0397	#	GREEK CAPITAL LETTER ETA
-0xC8	0x0398	#	GREEK CAPITAL LETTER THETA
-0xC9	0x0399	#	GREEK CAPITAL LETTER IOTA
-0xCA	0x039A	#	GREEK CAPITAL LETTER KAPPA
-0xCB	0x039B	#	GREEK CAPITAL LETTER LAMDA
-0xCC	0x039C	#	GREEK CAPITAL LETTER MU
-0xCD	0x039D	#	GREEK CAPITAL LETTER NU
-0xCE	0x039E	#	GREEK CAPITAL LETTER XI
-0xCF	0x039F	#	GREEK CAPITAL LETTER OMICRON
-0xD0	0x03A0	#	GREEK CAPITAL LETTER PI
-0xD1	0x03A1	#	GREEK CAPITAL LETTER RHO
-0xD3	0x03A3	#	GREEK CAPITAL LETTER SIGMA
-0xD4	0x03A4	#	GREEK CAPITAL LETTER TAU
-0xD5	0x03A5	#	GREEK CAPITAL LETTER UPSILON
-0xD6	0x03A6	#	GREEK CAPITAL LETTER PHI
-0xD7	0x03A7	#	GREEK CAPITAL LETTER CHI
-0xD8	0x03A8	#	GREEK CAPITAL LETTER PSI
-0xD9	0x03A9	#	GREEK CAPITAL LETTER OMEGA
-0xDA	0x03AA	#	GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-0xDB	0x03AB	#	GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-0xDC	0x03AC	#	GREEK SMALL LETTER ALPHA WITH TONOS
-0xDD	0x03AD	#	GREEK SMALL LETTER EPSILON WITH TONOS
-0xDE	0x03AE	#	GREEK SMALL LETTER ETA WITH TONOS
-0xDF	0x03AF	#	GREEK SMALL LETTER IOTA WITH TONOS
-0xE0	0x03B0	#	GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-0xE1	0x03B1	#	GREEK SMALL LETTER ALPHA
-0xE2	0x03B2	#	GREEK SMALL LETTER BETA
-0xE3	0x03B3	#	GREEK SMALL LETTER GAMMA
-0xE4	0x03B4	#	GREEK SMALL LETTER DELTA
-0xE5	0x03B5	#	GREEK SMALL LETTER EPSILON
-0xE6	0x03B6	#	GREEK SMALL LETTER ZETA
-0xE7	0x03B7	#	GREEK SMALL LETTER ETA
-0xE8	0x03B8	#	GREEK SMALL LETTER THETA
-0xE9	0x03B9	#	GREEK SMALL LETTER IOTA
-0xEA	0x03BA	#	GREEK SMALL LETTER KAPPA
-0xEB	0x03BB	#	GREEK SMALL LETTER LAMDA
-0xEC	0x03BC	#	GREEK SMALL LETTER MU
-0xED	0x03BD	#	GREEK SMALL LETTER NU
-0xEE	0x03BE	#	GREEK SMALL LETTER XI
-0xEF	0x03BF	#	GREEK SMALL LETTER OMICRON
-0xF0	0x03C0	#	GREEK SMALL LETTER PI
-0xF1	0x03C1	#	GREEK SMALL LETTER RHO
-0xF2	0x03C2	#	GREEK SMALL LETTER FINAL SIGMA
-0xF3	0x03C3	#	GREEK SMALL LETTER SIGMA
-0xF4	0x03C4	#	GREEK SMALL LETTER TAU
-0xF5	0x03C5	#	GREEK SMALL LETTER UPSILON
-0xF6	0x03C6	#	GREEK SMALL LETTER PHI
-0xF7	0x03C7	#	GREEK SMALL LETTER CHI
-0xF8	0x03C8	#	GREEK SMALL LETTER PSI
-0xF9	0x03C9	#	GREEK SMALL LETTER OMEGA
-0xFA	0x03CA	#	GREEK SMALL LETTER IOTA WITH DIALYTIKA
-0xFB	0x03CB	#	GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-0xFC	0x03CC	#	GREEK SMALL LETTER OMICRON WITH TONOS
-0xFD	0x03CD	#	GREEK SMALL LETTER UPSILON WITH TONOS
-0xFE	0x03CE	#	GREEK SMALL LETTER OMEGA WITH TONOS
diff --git a/program/lib/encoding/ISO-8859-8.map b/program/lib/encoding/ISO-8859-8.map
deleted file mode 100644
index bc8da4c..0000000
--- a/program/lib/encoding/ISO-8859-8.map
+++ /dev/null
@@ -1,270 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-8:1999 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.1
-#	Table format:     Format A
-#	Date:             2000-Jan-03
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-8:1999 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-8 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-8 order.
-#
-#	Version history
-#	1.0 version updates 0.1 version by adding mappings for all
-#	control characters.
-#       1.1 version updates to the published 8859-8:1999, correcting
-#          the mapping of 0xAF and adding mappings for LRM and RLM.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA2	0x00A2	#	CENT SIGN
-0xA3	0x00A3	#	POUND SIGN
-0xA4	0x00A4	#	CURRENCY SIGN
-0xA5	0x00A5	#	YEN SIGN
-0xA6	0x00A6	#	BROKEN BAR
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x00A8	#	DIAERESIS
-0xA9	0x00A9	#	COPYRIGHT SIGN
-0xAA	0x00D7	#	MULTIPLICATION SIGN
-0xAB	0x00AB	#	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#	NOT SIGN
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x00AE	#	REGISTERED SIGN
-0xAF	0x00AF	#	MACRON
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x00B1	#	PLUS-MINUS SIGN
-0xB2	0x00B2	#	SUPERSCRIPT TWO
-0xB3	0x00B3	#	SUPERSCRIPT THREE
-0xB4	0x00B4	#	ACUTE ACCENT
-0xB5	0x00B5	#	MICRO SIGN
-0xB6	0x00B6	#	PILCROW SIGN
-0xB7	0x00B7	#	MIDDLE DOT
-0xB8	0x00B8	#	CEDILLA
-0xB9	0x00B9	#	SUPERSCRIPT ONE
-0xBA	0x00F7	#	DIVISION SIGN
-0xBB	0x00BB	#	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#	VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#	VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#	VULGAR FRACTION THREE QUARTERS
-0xDF	0x2017	#	DOUBLE LOW LINE
-0xE0	0x05D0	#	HEBREW LETTER ALEF
-0xE1	0x05D1	#	HEBREW LETTER BET
-0xE2	0x05D2	#	HEBREW LETTER GIMEL
-0xE3	0x05D3	#	HEBREW LETTER DALET
-0xE4	0x05D4	#	HEBREW LETTER HE
-0xE5	0x05D5	#	HEBREW LETTER VAV
-0xE6	0x05D6	#	HEBREW LETTER ZAYIN
-0xE7	0x05D7	#	HEBREW LETTER HET
-0xE8	0x05D8	#	HEBREW LETTER TET
-0xE9	0x05D9	#	HEBREW LETTER YOD
-0xEA	0x05DA	#	HEBREW LETTER FINAL KAF
-0xEB	0x05DB	#	HEBREW LETTER KAF
-0xEC	0x05DC	#	HEBREW LETTER LAMED
-0xED	0x05DD	#	HEBREW LETTER FINAL MEM
-0xEE	0x05DE	#	HEBREW LETTER MEM
-0xEF	0x05DF	#	HEBREW LETTER FINAL NUN
-0xF0	0x05E0	#	HEBREW LETTER NUN
-0xF1	0x05E1	#	HEBREW LETTER SAMEKH
-0xF2	0x05E2	#	HEBREW LETTER AYIN
-0xF3	0x05E3	#	HEBREW LETTER FINAL PE
-0xF4	0x05E4	#	HEBREW LETTER PE
-0xF5	0x05E5	#	HEBREW LETTER FINAL TSADI
-0xF6	0x05E6	#	HEBREW LETTER TSADI
-0xF7	0x05E7	#	HEBREW LETTER QOF
-0xF8	0x05E8	#	HEBREW LETTER RESH
-0xF9	0x05E9	#	HEBREW LETTER SHIN
-0xFA	0x05EA	#	HEBREW LETTER TAV
-0xFD	0x200E	#	LEFT-TO-RIGHT MARK
-0xFE	0x200F	#	RIGHT-TO-LEFT MARK
-
diff --git a/program/lib/encoding/ISO-8859-9.map b/program/lib/encoding/ISO-8859-9.map
deleted file mode 100644
index 22901f1..0000000
--- a/program/lib/encoding/ISO-8859-9.map
+++ /dev/null
@@ -1,307 +0,0 @@
-#
-#	Name:             ISO/IEC 8859-9:1999 to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             1999 July 27
-#	Authors:          Ken Whistler <kenw@sybase.com>
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on magnetic media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       ISO/IEC 8859-9:1999 characters map into Unicode.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the ISO/IEC 8859-9 code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in ISO/IEC 8859-9 order.
-#
-#	ISO/IEC 8859-9 is also equivalent to ISO-IR-148.
-#
-#	Version history
-#	1.0 version updates 0.1 version by adding mappings for all
-#	control characters.
-#
-#	Updated versions of this file may be found in:
-#		<ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x00A1	#	INVERTED EXCLAMATION MARK
-0xA2	0x00A2	#	CENT SIGN
-0xA3	0x00A3	#	POUND SIGN
-0xA4	0x00A4	#	CURRENCY SIGN
-0xA5	0x00A5	#	YEN SIGN
-0xA6	0x00A6	#	BROKEN BAR
-0xA7	0x00A7	#	SECTION SIGN
-0xA8	0x00A8	#	DIAERESIS
-0xA9	0x00A9	#	COPYRIGHT SIGN
-0xAA	0x00AA	#	FEMININE ORDINAL INDICATOR
-0xAB	0x00AB	#	LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC	0x00AC	#	NOT SIGN
-0xAD	0x00AD	#	SOFT HYPHEN
-0xAE	0x00AE	#	REGISTERED SIGN
-0xAF	0x00AF	#	MACRON
-0xB0	0x00B0	#	DEGREE SIGN
-0xB1	0x00B1	#	PLUS-MINUS SIGN
-0xB2	0x00B2	#	SUPERSCRIPT TWO
-0xB3	0x00B3	#	SUPERSCRIPT THREE
-0xB4	0x00B4	#	ACUTE ACCENT
-0xB5	0x00B5	#	MICRO SIGN
-0xB6	0x00B6	#	PILCROW SIGN
-0xB7	0x00B7	#	MIDDLE DOT
-0xB8	0x00B8	#	CEDILLA
-0xB9	0x00B9	#	SUPERSCRIPT ONE
-0xBA	0x00BA	#	MASCULINE ORDINAL INDICATOR
-0xBB	0x00BB	#	RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC	0x00BC	#	VULGAR FRACTION ONE QUARTER
-0xBD	0x00BD	#	VULGAR FRACTION ONE HALF
-0xBE	0x00BE	#	VULGAR FRACTION THREE QUARTERS
-0xBF	0x00BF	#	INVERTED QUESTION MARK
-0xC0	0x00C0	#	LATIN CAPITAL LETTER A WITH GRAVE
-0xC1	0x00C1	#	LATIN CAPITAL LETTER A WITH ACUTE
-0xC2	0x00C2	#	LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3	0x00C3	#	LATIN CAPITAL LETTER A WITH TILDE
-0xC4	0x00C4	#	LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5	0x00C5	#	LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6	0x00C6	#	LATIN CAPITAL LETTER AE
-0xC7	0x00C7	#	LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8	0x00C8	#	LATIN CAPITAL LETTER E WITH GRAVE
-0xC9	0x00C9	#	LATIN CAPITAL LETTER E WITH ACUTE
-0xCA	0x00CA	#	LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB	0x00CB	#	LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC	0x00CC	#	LATIN CAPITAL LETTER I WITH GRAVE
-0xCD	0x00CD	#	LATIN CAPITAL LETTER I WITH ACUTE
-0xCE	0x00CE	#	LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF	0x00CF	#	LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0	0x011E	#	LATIN CAPITAL LETTER G WITH BREVE
-0xD1	0x00D1	#	LATIN CAPITAL LETTER N WITH TILDE
-0xD2	0x00D2	#	LATIN CAPITAL LETTER O WITH GRAVE
-0xD3	0x00D3	#	LATIN CAPITAL LETTER O WITH ACUTE
-0xD4	0x00D4	#	LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5	0x00D5	#	LATIN CAPITAL LETTER O WITH TILDE
-0xD6	0x00D6	#	LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7	0x00D7	#	MULTIPLICATION SIGN
-0xD8	0x00D8	#	LATIN CAPITAL LETTER O WITH STROKE
-0xD9	0x00D9	#	LATIN CAPITAL LETTER U WITH GRAVE
-0xDA	0x00DA	#	LATIN CAPITAL LETTER U WITH ACUTE
-0xDB	0x00DB	#	LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC	0x00DC	#	LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD	0x0130	#	LATIN CAPITAL LETTER I WITH DOT ABOVE
-0xDE	0x015E	#	LATIN CAPITAL LETTER S WITH CEDILLA
-0xDF	0x00DF	#	LATIN SMALL LETTER SHARP S
-0xE0	0x00E0	#	LATIN SMALL LETTER A WITH GRAVE
-0xE1	0x00E1	#	LATIN SMALL LETTER A WITH ACUTE
-0xE2	0x00E2	#	LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3	0x00E3	#	LATIN SMALL LETTER A WITH TILDE
-0xE4	0x00E4	#	LATIN SMALL LETTER A WITH DIAERESIS
-0xE5	0x00E5	#	LATIN SMALL LETTER A WITH RING ABOVE
-0xE6	0x00E6	#	LATIN SMALL LETTER AE
-0xE7	0x00E7	#	LATIN SMALL LETTER C WITH CEDILLA
-0xE8	0x00E8	#	LATIN SMALL LETTER E WITH GRAVE
-0xE9	0x00E9	#	LATIN SMALL LETTER E WITH ACUTE
-0xEA	0x00EA	#	LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB	0x00EB	#	LATIN SMALL LETTER E WITH DIAERESIS
-0xEC	0x00EC	#	LATIN SMALL LETTER I WITH GRAVE
-0xED	0x00ED	#	LATIN SMALL LETTER I WITH ACUTE
-0xEE	0x00EE	#	LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF	0x00EF	#	LATIN SMALL LETTER I WITH DIAERESIS
-0xF0	0x011F	#	LATIN SMALL LETTER G WITH BREVE
-0xF1	0x00F1	#	LATIN SMALL LETTER N WITH TILDE
-0xF2	0x00F2	#	LATIN SMALL LETTER O WITH GRAVE
-0xF3	0x00F3	#	LATIN SMALL LETTER O WITH ACUTE
-0xF4	0x00F4	#	LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5	0x00F5	#	LATIN SMALL LETTER O WITH TILDE
-0xF6	0x00F6	#	LATIN SMALL LETTER O WITH DIAERESIS
-0xF7	0x00F7	#	DIVISION SIGN
-0xF8	0x00F8	#	LATIN SMALL LETTER O WITH STROKE
-0xF9	0x00F9	#	LATIN SMALL LETTER U WITH GRAVE
-0xFA	0x00FA	#	LATIN SMALL LETTER U WITH ACUTE
-0xFB	0x00FB	#	LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC	0x00FC	#	LATIN SMALL LETTER U WITH DIAERESIS
-0xFD	0x0131	#	LATIN SMALL LETTER DOTLESS I
-0xFE	0x015F	#	LATIN SMALL LETTER S WITH CEDILLA
-0xFF	0x00FF	#	LATIN SMALL LETTER Y WITH DIAERESIS
-
-
diff --git a/program/lib/encoding/KOI8R.map b/program/lib/encoding/KOI8R.map
deleted file mode 100644
index 4a17d18..0000000
--- a/program/lib/encoding/KOI8R.map
+++ /dev/null
@@ -1,302 +0,0 @@
-#
-#	Name:             KOI8-R (RFC1489) to Unicode
-#	Unicode version:  3.0
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             18 August 1999
-#	Authors:          Helmut Richter <richter@lrz.de>
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-#	General notes:
-#
-#	This table contains the data the Unicode Consortium has on how
-#       KOI8-R characters map into Unicode. The underlying document is the
-#	mapping described in RFC 1489. No statements are made as to whether
-#	this mapping is the same as the mapping defined as "Code Page 878"
-#	with some vendors.
-#
-#	Format:  Three tab-separated columns
-#		 Column #1 is the KOI8-R code (in hex as 0xXX)
-#		 Column #2 is the Unicode (in hex as 0xXXXX)
-#		 Column #3 the Unicode name (follows a comment sign, '#')
-#
-#	The entries are in KOI8-R order.
-#
-#	Version history
-#	1.0 version: created.
-#
-#	Any comments or problems, contact <errata@unicode.org>
-#	Please note that <errata@unicode.org> is an archival address;
-#	notices will be checked, but do not expect an immediate response.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x2500	#	BOX DRAWINGS LIGHT HORIZONTAL
-0x81	0x2502	#	BOX DRAWINGS LIGHT VERTICAL
-0x82	0x250C	#	BOX DRAWINGS LIGHT DOWN AND RIGHT
-0x83	0x2510	#	BOX DRAWINGS LIGHT DOWN AND LEFT
-0x84	0x2514	#	BOX DRAWINGS LIGHT UP AND RIGHT
-0x85	0x2518	#	BOX DRAWINGS LIGHT UP AND LEFT
-0x86	0x251C	#	BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-0x87	0x2524	#	BOX DRAWINGS LIGHT VERTICAL AND LEFT
-0x88	0x252C	#	BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-0x89	0x2534	#	BOX DRAWINGS LIGHT UP AND HORIZONTAL
-0x8A	0x253C	#	BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-0x8B	0x2580	#	UPPER HALF BLOCK
-0x8C	0x2584	#	LOWER HALF BLOCK
-0x8D	0x2588	#	FULL BLOCK
-0x8E	0x258C	#	LEFT HALF BLOCK
-0x8F	0x2590	#	RIGHT HALF BLOCK
-0x90	0x2591	#	LIGHT SHADE
-0x91	0x2592	#	MEDIUM SHADE
-0x92	0x2593	#	DARK SHADE
-0x93	0x2320	#	TOP HALF INTEGRAL
-0x94	0x25A0	#	BLACK SQUARE
-0x95	0x2219	#	BULLET OPERATOR
-0x96	0x221A	#	SQUARE ROOT
-0x97	0x2248	#	ALMOST EQUAL TO
-0x98	0x2264	#	LESS-THAN OR EQUAL TO
-0x99	0x2265	#	GREATER-THAN OR EQUAL TO
-0x9A	0x00A0	#	NO-BREAK SPACE
-0x9B	0x2321	#	BOTTOM HALF INTEGRAL
-0x9C	0x00B0	#	DEGREE SIGN
-0x9D	0x00B2	#	SUPERSCRIPT TWO
-0x9E	0x00B7	#	MIDDLE DOT
-0x9F	0x00F7	#	DIVISION SIGN
-0xA0	0x2550	#	BOX DRAWINGS DOUBLE HORIZONTAL
-0xA1	0x2551	#	BOX DRAWINGS DOUBLE VERTICAL
-0xA2	0x2552	#	BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-0xA3	0x0451	#	CYRILLIC SMALL LETTER IO
-0xA4	0x2553	#	BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-0xA5	0x2554	#	BOX DRAWINGS DOUBLE DOWN AND RIGHT
-0xA6	0x2555	#	BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-0xA7	0x2556	#	BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-0xA8	0x2557	#	BOX DRAWINGS DOUBLE DOWN AND LEFT
-0xA9	0x2558	#	BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-0xAA	0x2559	#	BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-0xAB	0x255A	#	BOX DRAWINGS DOUBLE UP AND RIGHT
-0xAC	0x255B	#	BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-0xAD	0x255C	#	BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-0xAE	0x255D	#	BOX DRAWINGS DOUBLE UP AND LEFT
-0xAF	0x255E	#	BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-0xB0	0x255F	#	BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-0xB1	0x2560	#	BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-0xB2	0x2561	#	BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-0xB3	0x0401	#	CYRILLIC CAPITAL LETTER IO
-0xB4	0x2562	#	BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-0xB5	0x2563	#	BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-0xB6	0x2564	#	BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-0xB7	0x2565	#	BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-0xB8	0x2566	#	BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-0xB9	0x2567	#	BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-0xBA	0x2568	#	BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-0xBB	0x2569	#	BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-0xBC	0x256A	#	BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-0xBD	0x256B	#	BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-0xBE	0x256C	#	BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-0xBF	0x00A9	#	COPYRIGHT SIGN
-0xC0	0x044E	#	CYRILLIC SMALL LETTER YU
-0xC1	0x0430	#	CYRILLIC SMALL LETTER A
-0xC2	0x0431	#	CYRILLIC SMALL LETTER BE
-0xC3	0x0446	#	CYRILLIC SMALL LETTER TSE
-0xC4	0x0434	#	CYRILLIC SMALL LETTER DE
-0xC5	0x0435	#	CYRILLIC SMALL LETTER IE
-0xC6	0x0444	#	CYRILLIC SMALL LETTER EF
-0xC7	0x0433	#	CYRILLIC SMALL LETTER GHE
-0xC8	0x0445	#	CYRILLIC SMALL LETTER HA
-0xC9	0x0438	#	CYRILLIC SMALL LETTER I
-0xCA	0x0439	#	CYRILLIC SMALL LETTER SHORT I
-0xCB	0x043A	#	CYRILLIC SMALL LETTER KA
-0xCC	0x043B	#	CYRILLIC SMALL LETTER EL
-0xCD	0x043C	#	CYRILLIC SMALL LETTER EM
-0xCE	0x043D	#	CYRILLIC SMALL LETTER EN
-0xCF	0x043E	#	CYRILLIC SMALL LETTER O
-0xD0	0x043F	#	CYRILLIC SMALL LETTER PE
-0xD1	0x044F	#	CYRILLIC SMALL LETTER YA
-0xD2	0x0440	#	CYRILLIC SMALL LETTER ER
-0xD3	0x0441	#	CYRILLIC SMALL LETTER ES
-0xD4	0x0442	#	CYRILLIC SMALL LETTER TE
-0xD5	0x0443	#	CYRILLIC SMALL LETTER U
-0xD6	0x0436	#	CYRILLIC SMALL LETTER ZHE
-0xD7	0x0432	#	CYRILLIC SMALL LETTER VE
-0xD8	0x044C	#	CYRILLIC SMALL LETTER SOFT SIGN
-0xD9	0x044B	#	CYRILLIC SMALL LETTER YERU
-0xDA	0x0437	#	CYRILLIC SMALL LETTER ZE
-0xDB	0x0448	#	CYRILLIC SMALL LETTER SHA
-0xDC	0x044D	#	CYRILLIC SMALL LETTER E
-0xDD	0x0449	#	CYRILLIC SMALL LETTER SHCHA
-0xDE	0x0447	#	CYRILLIC SMALL LETTER CHE
-0xDF	0x044A	#	CYRILLIC SMALL LETTER HARD SIGN
-0xE0	0x042E	#	CYRILLIC CAPITAL LETTER YU
-0xE1	0x0410	#	CYRILLIC CAPITAL LETTER A
-0xE2	0x0411	#	CYRILLIC CAPITAL LETTER BE
-0xE3	0x0426	#	CYRILLIC CAPITAL LETTER TSE
-0xE4	0x0414	#	CYRILLIC CAPITAL LETTER DE
-0xE5	0x0415	#	CYRILLIC CAPITAL LETTER IE
-0xE6	0x0424	#	CYRILLIC CAPITAL LETTER EF
-0xE7	0x0413	#	CYRILLIC CAPITAL LETTER GHE
-0xE8	0x0425	#	CYRILLIC CAPITAL LETTER HA
-0xE9	0x0418	#	CYRILLIC CAPITAL LETTER I
-0xEA	0x0419	#	CYRILLIC CAPITAL LETTER SHORT I
-0xEB	0x041A	#	CYRILLIC CAPITAL LETTER KA
-0xEC	0x041B	#	CYRILLIC CAPITAL LETTER EL
-0xED	0x041C	#	CYRILLIC CAPITAL LETTER EM
-0xEE	0x041D	#	CYRILLIC CAPITAL LETTER EN
-0xEF	0x041E	#	CYRILLIC CAPITAL LETTER O
-0xF0	0x041F	#	CYRILLIC CAPITAL LETTER PE
-0xF1	0x042F	#	CYRILLIC CAPITAL LETTER YA
-0xF2	0x0420	#	CYRILLIC CAPITAL LETTER ER
-0xF3	0x0421	#	CYRILLIC CAPITAL LETTER ES
-0xF4	0x0422	#	CYRILLIC CAPITAL LETTER TE
-0xF5	0x0423	#	CYRILLIC CAPITAL LETTER U
-0xF6	0x0416	#	CYRILLIC CAPITAL LETTER ZHE
-0xF7	0x0412	#	CYRILLIC CAPITAL LETTER VE
-0xF8	0x042C	#	CYRILLIC CAPITAL LETTER SOFT SIGN
-0xF9	0x042B	#	CYRILLIC CAPITAL LETTER YERU
-0xFA	0x0417	#	CYRILLIC CAPITAL LETTER ZE
-0xFB	0x0428	#	CYRILLIC CAPITAL LETTER SHA
-0xFC	0x042D	#	CYRILLIC CAPITAL LETTER E
-0xFD	0x0429	#	CYRILLIC CAPITAL LETTER SHCHA
-0xFE	0x0427	#	CYRILLIC CAPITAL LETTER CHE
-0xFF	0x042A	#	CYRILLIC CAPITAL LETTER HARD SIGN
\ No newline at end of file
diff --git a/program/lib/encoding/KSC5601.map b/program/lib/encoding/KSC5601.map
deleted file mode 100644
index 83a5ce7..0000000
--- a/program/lib/encoding/KSC5601.map
+++ /dev/null
@@ -1,17078 +0,0 @@
-#
-#    Name:     Unified Hangeul(KSC5601-1992) to Unicode table
-#    Unicode version: 2.0
-#    Table version: 1.0
-#    Table format:  Format A
-#    Date:          07/24/95
-#
-# This table contains one set of mappings from KSC5601-1992 into Unicode.
-# Note that these data are *possible* mappings only and may not be the
-# same as those used by actual products, nor may they be the best suited
-# for all uses.  For more information on the mappings between various code
-# pages incorporating the repertoire of KSC5601-1992 and Unicode, consult the
-# VENDORS mapping data.  Normative information on the mapping between
-# KSC5601-1992 and Unicode may be found in the Unihan.txt file in the
-# latest Unicode Character Database.
-#
-# If you have carefully considered the fact that the mappings in
-# this table are only one possible set of mappings between KSC5601-1992 and
-# Unicode and have no normative status, but still feel that you
-# have located an error in the table that requires fixing, you may
-# report any such error to errata@unicode.org.
-#
-#
-#    Format: Three tab-separated columns
-#        Column #1 is the Unified Hangeul code (in hex)
-#        Column #2 is the Unicode (in hex as 0xXXXX)
-#        Column #3 is the Unicode name (follows a comment sign, '#')
-#
-#    The entries are in Unified Hangeul order
-#
-0x8141	0xAC02	# HANGUL SYLLABLE KIYEOK-A-SSANGKIYEOK
-0x8142	0xAC03	# HANGUL SYLLABLE KIYEOK-A-KIYEOKSIOS
-0x8143	0xAC05	# HANGUL SYLLABLE KIYEOK-A-NIEUNCIEUC
-0x8144	0xAC06	# HANGUL SYLLABLE KIYEOK-A-NIEUNHIEUH
-0x8145	0xAC0B	# HANGUL SYLLABLE KIYEOK-A-RIEULPIEUP
-0x8146	0xAC0C	# HANGUL SYLLABLE KIYEOK-A-RIEULSIOS
-0x8147	0xAC0D	# HANGUL SYLLABLE KIYEOK-A-RIEULTHIEUTH
-0x8148	0xAC0E	# HANGUL SYLLABLE KIYEOK-A-RIEULPHIEUPH
-0x8149	0xAC0F	# HANGUL SYLLABLE KIYEOK-A-RIEULHIEUH
-0x814A	0xAC18	# HANGUL SYLLABLE KIYEOK-A-KHIEUKH
-0x814B	0xAC1E	# HANGUL SYLLABLE KIYEOK-AE-SSANGKIYEOK
-0x814C	0xAC1F	# HANGUL SYLLABLE KIYEOK-AE-KIYEOKSIOS
-0x814D	0xAC21	# HANGUL SYLLABLE KIYEOK-AE-NIEUNCIEUC
-0x814E	0xAC22	# HANGUL SYLLABLE KIYEOK-AE-NIEUNHIEUH
-0x814F	0xAC23	# HANGUL SYLLABLE KIYEOK-AE-TIKEUT
-0x8150	0xAC25	# HANGUL SYLLABLE KIYEOK-AE-RIEULKIYEOK
-0x8151	0xAC26	# HANGUL SYLLABLE KIYEOK-AE-RIEULMIEUM
-0x8152	0xAC27	# HANGUL SYLLABLE KIYEOK-AE-RIEULPIEUP
-0x8153	0xAC28	# HANGUL SYLLABLE KIYEOK-AE-RIEULSIOS
-0x8154	0xAC29	# HANGUL SYLLABLE KIYEOK-AE-RIEULTHIEUTH
-0x8155	0xAC2A	# HANGUL SYLLABLE KIYEOK-AE-RIEULPHIEUPH
-0x8156	0xAC2B	# HANGUL SYLLABLE KIYEOK-AE-RIEULHIEUH
-0x8157	0xAC2E	# HANGUL SYLLABLE KIYEOK-AE-PIEUPSIOS
-0x8158	0xAC32	# HANGUL SYLLABLE KIYEOK-AE-CIEUC
-0x8159	0xAC33	# HANGUL SYLLABLE KIYEOK-AE-CHIEUCH
-0x815A	0xAC34	# HANGUL SYLLABLE KIYEOK-AE-KHIEUKH
-0x8161	0xAC35	# HANGUL SYLLABLE KIYEOK-AE-THIEUTH
-0x8162	0xAC36	# HANGUL SYLLABLE KIYEOK-AE-PHIEUPH
-0x8163	0xAC37	# HANGUL SYLLABLE KIYEOK-AE-HIEUH
-0x8164	0xAC3A	# HANGUL SYLLABLE KIYEOK-YA-SSANGKIYEOK
-0x8165	0xAC3B	# HANGUL SYLLABLE KIYEOK-YA-KIYEOKSIOS
-0x8166	0xAC3D	# HANGUL SYLLABLE KIYEOK-YA-NIEUNCIEUC
-0x8167	0xAC3E	# HANGUL SYLLABLE KIYEOK-YA-NIEUNHIEUH
-0x8168	0xAC3F	# HANGUL SYLLABLE KIYEOK-YA-TIKEUT
-0x8169	0xAC41	# HANGUL SYLLABLE KIYEOK-YA-RIEULKIYEOK
-0x816A	0xAC42	# HANGUL SYLLABLE KIYEOK-YA-RIEULMIEUM
-0x816B	0xAC43	# HANGUL SYLLABLE KIYEOK-YA-RIEULPIEUP
-0x816C	0xAC44	# HANGUL SYLLABLE KIYEOK-YA-RIEULSIOS
-0x816D	0xAC45	# HANGUL SYLLABLE KIYEOK-YA-RIEULTHIEUTH
-0x816E	0xAC46	# HANGUL SYLLABLE KIYEOK-YA-RIEULPHIEUPH
-0x816F	0xAC47	# HANGUL SYLLABLE KIYEOK-YA-RIEULHIEUH
-0x8170	0xAC48	# HANGUL SYLLABLE KIYEOK-YA-MIEUM
-0x8171	0xAC49	# HANGUL SYLLABLE KIYEOK-YA-PIEUP
-0x8172	0xAC4A	# HANGUL SYLLABLE KIYEOK-YA-PIEUPSIOS
-0x8173	0xAC4C	# HANGUL SYLLABLE KIYEOK-YA-SSANGSIOS
-0x8174	0xAC4E	# HANGUL SYLLABLE KIYEOK-YA-CIEUC
-0x8175	0xAC4F	# HANGUL SYLLABLE KIYEOK-YA-CHIEUCH
-0x8176	0xAC50	# HANGUL SYLLABLE KIYEOK-YA-KHIEUKH
-0x8177	0xAC51	# HANGUL SYLLABLE KIYEOK-YA-THIEUTH
-0x8178	0xAC52	# HANGUL SYLLABLE KIYEOK-YA-PHIEUPH
-0x8179	0xAC53	# HANGUL SYLLABLE KIYEOK-YA-HIEUH
-0x817A	0xAC55	# HANGUL SYLLABLE KIYEOK-YAE-KIYEOK
-0x8181	0xAC56	# HANGUL SYLLABLE KIYEOK-YAE-SSANGKIYEOK
-0x8182	0xAC57	# HANGUL SYLLABLE KIYEOK-YAE-KIYEOKSIOS
-0x8183	0xAC59	# HANGUL SYLLABLE KIYEOK-YAE-NIEUNCIEUC
-0x8184	0xAC5A	# HANGUL SYLLABLE KIYEOK-YAE-NIEUNHIEUH
-0x8185	0xAC5B	# HANGUL SYLLABLE KIYEOK-YAE-TIKEUT
-0x8186	0xAC5D	# HANGUL SYLLABLE KIYEOK-YAE-RIEULKIYEOK
-0x8187	0xAC5E	# HANGUL SYLLABLE KIYEOK-YAE-RIEULMIEUM
-0x8188	0xAC5F	# HANGUL SYLLABLE KIYEOK-YAE-RIEULPIEUP
-0x8189	0xAC60	# HANGUL SYLLABLE KIYEOK-YAE-RIEULSIOS
-0x818A	0xAC61	# HANGUL SYLLABLE KIYEOK-YAE-RIEULTHIEUTH
-0x818B	0xAC62	# HANGUL SYLLABLE KIYEOK-YAE-RIEULPHIEUPH
-0x818C	0xAC63	# HANGUL SYLLABLE KIYEOK-YAE-RIEULHIEUH
-0x818D	0xAC64	# HANGUL SYLLABLE KIYEOK-YAE-MIEUM
-0x818E	0xAC65	# HANGUL SYLLABLE KIYEOK-YAE-PIEUP
-0x818F	0xAC66	# HANGUL SYLLABLE KIYEOK-YAE-PIEUPSIOS
-0x8190	0xAC67	# HANGUL SYLLABLE KIYEOK-YAE-SIOS
-0x8191	0xAC68	# HANGUL SYLLABLE KIYEOK-YAE-SSANGSIOS
-0x8192	0xAC69	# HANGUL SYLLABLE KIYEOK-YAE-IEUNG
-0x8193	0xAC6A	# HANGUL SYLLABLE KIYEOK-YAE-CIEUC
-0x8194	0xAC6B	# HANGUL SYLLABLE KIYEOK-YAE-CHIEUCH
-0x8195	0xAC6C	# HANGUL SYLLABLE KIYEOK-YAE-KHIEUKH
-0x8196	0xAC6D	# HANGUL SYLLABLE KIYEOK-YAE-THIEUTH
-0x8197	0xAC6E	# HANGUL SYLLABLE KIYEOK-YAE-PHIEUPH
-0x8198	0xAC6F	# HANGUL SYLLABLE KIYEOK-YAE-HIEUH
-0x8199	0xAC72	# HANGUL SYLLABLE KIYEOK-EO-SSANGKIYEOK
-0x819A	0xAC73	# HANGUL SYLLABLE KIYEOK-EO-KIYEOKSIOS
-0x819B	0xAC75	# HANGUL SYLLABLE KIYEOK-EO-NIEUNCIEUC
-0x819C	0xAC76	# HANGUL SYLLABLE KIYEOK-EO-NIEUNHIEUH
-0x819D	0xAC79	# HANGUL SYLLABLE KIYEOK-EO-RIEULKIYEOK
-0x819E	0xAC7B	# HANGUL SYLLABLE KIYEOK-EO-RIEULPIEUP
-0x819F	0xAC7C	# HANGUL SYLLABLE KIYEOK-EO-RIEULSIOS
-0x81A0	0xAC7D	# HANGUL SYLLABLE KIYEOK-EO-RIEULTHIEUTH
-0x81A1	0xAC7E	# HANGUL SYLLABLE KIYEOK-EO-RIEULPHIEUPH
-0x81A2	0xAC7F	# HANGUL SYLLABLE KIYEOK-EO-RIEULHIEUH
-0x81A3	0xAC82	# HANGUL SYLLABLE KIYEOK-EO-PIEUPSIOS
-0x81A4	0xAC87	# HANGUL SYLLABLE KIYEOK-EO-CHIEUCH
-0x81A5	0xAC88	# HANGUL SYLLABLE KIYEOK-EO-KHIEUKH
-0x81A6	0xAC8D	# HANGUL SYLLABLE KIYEOK-E-KIYEOK
-0x81A7	0xAC8E	# HANGUL SYLLABLE KIYEOK-E-SSANGKIYEOK
-0x81A8	0xAC8F	# HANGUL SYLLABLE KIYEOK-E-KIYEOKSIOS
-0x81A9	0xAC91	# HANGUL SYLLABLE KIYEOK-E-NIEUNCIEUC
-0x81AA	0xAC92	# HANGUL SYLLABLE KIYEOK-E-NIEUNHIEUH
-0x81AB	0xAC93	# HANGUL SYLLABLE KIYEOK-E-TIKEUT
-0x81AC	0xAC95	# HANGUL SYLLABLE KIYEOK-E-RIEULKIYEOK
-0x81AD	0xAC96	# HANGUL SYLLABLE KIYEOK-E-RIEULMIEUM
-0x81AE	0xAC97	# HANGUL SYLLABLE KIYEOK-E-RIEULPIEUP
-0x81AF	0xAC98	# HANGUL SYLLABLE KIYEOK-E-RIEULSIOS
-0x81B0	0xAC99	# HANGUL SYLLABLE KIYEOK-E-RIEULTHIEUTH
-0x81B1	0xAC9A	# HANGUL SYLLABLE KIYEOK-E-RIEULPHIEUPH
-0x81B2	0xAC9B	# HANGUL SYLLABLE KIYEOK-E-RIEULHIEUH
-0x81B3	0xAC9E	# HANGUL SYLLABLE KIYEOK-E-PIEUPSIOS
-0x81B4	0xACA2	# HANGUL SYLLABLE KIYEOK-E-CIEUC
-0x81B5	0xACA3	# HANGUL SYLLABLE KIYEOK-E-CHIEUCH
-0x81B6	0xACA4	# HANGUL SYLLABLE KIYEOK-E-KHIEUKH
-0x81B7	0xACA5	# HANGUL SYLLABLE KIYEOK-E-THIEUTH
-0x81B8	0xACA6	# HANGUL SYLLABLE KIYEOK-E-PHIEUPH
-0x81B9	0xACA7	# HANGUL SYLLABLE KIYEOK-E-HIEUH
-0x81BA	0xACAB	# HANGUL SYLLABLE KIYEOK-YEO-KIYEOKSIOS
-0x81BB	0xACAD	# HANGUL SYLLABLE KIYEOK-YEO-NIEUNCIEUC
-0x81BC	0xACAE	# HANGUL SYLLABLE KIYEOK-YEO-NIEUNHIEUH
-0x81BD	0xACB1	# HANGUL SYLLABLE KIYEOK-YEO-RIEULKIYEOK
-0x81BE	0xACB2	# HANGUL SYLLABLE KIYEOK-YEO-RIEULMIEUM
-0x81BF	0xACB3	# HANGUL SYLLABLE KIYEOK-YEO-RIEULPIEUP
-0x81C0	0xACB4	# HANGUL SYLLABLE KIYEOK-YEO-RIEULSIOS
-0x81C1	0xACB5	# HANGUL SYLLABLE KIYEOK-YEO-RIEULTHIEUTH
-0x81C2	0xACB6	# HANGUL SYLLABLE KIYEOK-YEO-RIEULPHIEUPH
-0x81C3	0xACB7	# HANGUL SYLLABLE KIYEOK-YEO-RIEULHIEUH
-0x81C4	0xACBA	# HANGUL SYLLABLE KIYEOK-YEO-PIEUPSIOS
-0x81C5	0xACBE	# HANGUL SYLLABLE KIYEOK-YEO-CIEUC
-0x81C6	0xACBF	# HANGUL SYLLABLE KIYEOK-YEO-CHIEUCH
-0x81C7	0xACC0	# HANGUL SYLLABLE KIYEOK-YEO-KHIEUKH
-0x81C8	0xACC2	# HANGUL SYLLABLE KIYEOK-YEO-PHIEUPH
-0x81C9	0xACC3	# HANGUL SYLLABLE KIYEOK-YEO-HIEUH
-0x81CA	0xACC5	# HANGUL SYLLABLE KIYEOK-YE-KIYEOK
-0x81CB	0xACC6	# HANGUL SYLLABLE KIYEOK-YE-SSANGKIYEOK
-0x81CC	0xACC7	# HANGUL SYLLABLE KIYEOK-YE-KIYEOKSIOS
-0x81CD	0xACC9	# HANGUL SYLLABLE KIYEOK-YE-NIEUNCIEUC
-0x81CE	0xACCA	# HANGUL SYLLABLE KIYEOK-YE-NIEUNHIEUH
-0x81CF	0xACCB	# HANGUL SYLLABLE KIYEOK-YE-TIKEUT
-0x81D0	0xACCD	# HANGUL SYLLABLE KIYEOK-YE-RIEULKIYEOK
-0x81D1	0xACCE	# HANGUL SYLLABLE KIYEOK-YE-RIEULMIEUM
-0x81D2	0xACCF	# HANGUL SYLLABLE KIYEOK-YE-RIEULPIEUP
-0x81D3	0xACD0	# HANGUL SYLLABLE KIYEOK-YE-RIEULSIOS
-0x81D4	0xACD1	# HANGUL SYLLABLE KIYEOK-YE-RIEULTHIEUTH
-0x81D5	0xACD2	# HANGUL SYLLABLE KIYEOK-YE-RIEULPHIEUPH
-0x81D6	0xACD3	# HANGUL SYLLABLE KIYEOK-YE-RIEULHIEUH
-0x81D7	0xACD4	# HANGUL SYLLABLE KIYEOK-YE-MIEUM
-0x81D8	0xACD6	# HANGUL SYLLABLE KIYEOK-YE-PIEUPSIOS
-0x81D9	0xACD8	# HANGUL SYLLABLE KIYEOK-YE-SSANGSIOS
-0x81DA	0xACD9	# HANGUL SYLLABLE KIYEOK-YE-IEUNG
-0x81DB	0xACDA	# HANGUL SYLLABLE KIYEOK-YE-CIEUC
-0x81DC	0xACDB	# HANGUL SYLLABLE KIYEOK-YE-CHIEUCH
-0x81DD	0xACDC	# HANGUL SYLLABLE KIYEOK-YE-KHIEUKH
-0x81DE	0xACDD	# HANGUL SYLLABLE KIYEOK-YE-THIEUTH
-0x81DF	0xACDE	# HANGUL SYLLABLE KIYEOK-YE-PHIEUPH
-0x81E0	0xACDF	# HANGUL SYLLABLE KIYEOK-YE-HIEUH
-0x81E1	0xACE2	# HANGUL SYLLABLE KIYEOK-O-SSANGKIYEOK
-0x81E2	0xACE3	# HANGUL SYLLABLE KIYEOK-O-KIYEOKSIOS
-0x81E3	0xACE5	# HANGUL SYLLABLE KIYEOK-O-NIEUNCIEUC
-0x81E4	0xACE6	# HANGUL SYLLABLE KIYEOK-O-NIEUNHIEUH
-0x81E5	0xACE9	# HANGUL SYLLABLE KIYEOK-O-RIEULKIYEOK
-0x81E6	0xACEB	# HANGUL SYLLABLE KIYEOK-O-RIEULPIEUP
-0x81E7	0xACED	# HANGUL SYLLABLE KIYEOK-O-RIEULTHIEUTH
-0x81E8	0xACEE	# HANGUL SYLLABLE KIYEOK-O-RIEULPHIEUPH
-0x81E9	0xACF2	# HANGUL SYLLABLE KIYEOK-O-PIEUPSIOS
-0x81EA	0xACF4	# HANGUL SYLLABLE KIYEOK-O-SSANGSIOS
-0x81EB	0xACF7	# HANGUL SYLLABLE KIYEOK-O-CHIEUCH
-0x81EC	0xACF8	# HANGUL SYLLABLE KIYEOK-O-KHIEUKH
-0x81ED	0xACF9	# HANGUL SYLLABLE KIYEOK-O-THIEUTH
-0x81EE	0xACFA	# HANGUL SYLLABLE KIYEOK-O-PHIEUPH
-0x81EF	0xACFB	# HANGUL SYLLABLE KIYEOK-O-HIEUH
-0x81F0	0xACFE	# HANGUL SYLLABLE KIYEOK-WA-SSANGKIYEOK
-0x81F1	0xACFF	# HANGUL SYLLABLE KIYEOK-WA-KIYEOKSIOS
-0x81F2	0xAD01	# HANGUL SYLLABLE KIYEOK-WA-NIEUNCIEUC
-0x81F3	0xAD02	# HANGUL SYLLABLE KIYEOK-WA-NIEUNHIEUH
-0x81F4	0xAD03	# HANGUL SYLLABLE KIYEOK-WA-TIKEUT
-0x81F5	0xAD05	# HANGUL SYLLABLE KIYEOK-WA-RIEULKIYEOK
-0x81F6	0xAD07	# HANGUL SYLLABLE KIYEOK-WA-RIEULPIEUP
-0x81F7	0xAD08	# HANGUL SYLLABLE KIYEOK-WA-RIEULSIOS
-0x81F8	0xAD09	# HANGUL SYLLABLE KIYEOK-WA-RIEULTHIEUTH
-0x81F9	0xAD0A	# HANGUL SYLLABLE KIYEOK-WA-RIEULPHIEUPH
-0x81FA	0xAD0B	# HANGUL SYLLABLE KIYEOK-WA-RIEULHIEUH
-0x81FB	0xAD0E	# HANGUL SYLLABLE KIYEOK-WA-PIEUPSIOS
-0x81FC	0xAD10	# HANGUL SYLLABLE KIYEOK-WA-SSANGSIOS
-0x81FD	0xAD12	# HANGUL SYLLABLE KIYEOK-WA-CIEUC
-0x81FE	0xAD13	# HANGUL SYLLABLE KIYEOK-WA-CHIEUCH
-0x8241	0xAD14	# HANGUL SYLLABLE KIYEOK-WA-KHIEUKH
-0x8242	0xAD15	# HANGUL SYLLABLE KIYEOK-WA-THIEUTH
-0x8243	0xAD16	# HANGUL SYLLABLE KIYEOK-WA-PHIEUPH
-0x8244	0xAD17	# HANGUL SYLLABLE KIYEOK-WA-HIEUH
-0x8245	0xAD19	# HANGUL SYLLABLE KIYEOK-WAE-KIYEOK
-0x8246	0xAD1A	# HANGUL SYLLABLE KIYEOK-WAE-SSANGKIYEOK
-0x8247	0xAD1B	# HANGUL SYLLABLE KIYEOK-WAE-KIYEOKSIOS
-0x8248	0xAD1D	# HANGUL SYLLABLE KIYEOK-WAE-NIEUNCIEUC
-0x8249	0xAD1E	# HANGUL SYLLABLE KIYEOK-WAE-NIEUNHIEUH
-0x824A	0xAD1F	# HANGUL SYLLABLE KIYEOK-WAE-TIKEUT
-0x824B	0xAD21	# HANGUL SYLLABLE KIYEOK-WAE-RIEULKIYEOK
-0x824C	0xAD22	# HANGUL SYLLABLE KIYEOK-WAE-RIEULMIEUM
-0x824D	0xAD23	# HANGUL SYLLABLE KIYEOK-WAE-RIEULPIEUP
-0x824E	0xAD24	# HANGUL SYLLABLE KIYEOK-WAE-RIEULSIOS
-0x824F	0xAD25	# HANGUL SYLLABLE KIYEOK-WAE-RIEULTHIEUTH
-0x8250	0xAD26	# HANGUL SYLLABLE KIYEOK-WAE-RIEULPHIEUPH
-0x8251	0xAD27	# HANGUL SYLLABLE KIYEOK-WAE-RIEULHIEUH
-0x8252	0xAD28	# HANGUL SYLLABLE KIYEOK-WAE-MIEUM
-0x8253	0xAD2A	# HANGUL SYLLABLE KIYEOK-WAE-PIEUPSIOS
-0x8254	0xAD2B	# HANGUL SYLLABLE KIYEOK-WAE-SIOS
-0x8255	0xAD2E	# HANGUL SYLLABLE KIYEOK-WAE-CIEUC
-0x8256	0xAD2F	# HANGUL SYLLABLE KIYEOK-WAE-CHIEUCH
-0x8257	0xAD30	# HANGUL SYLLABLE KIYEOK-WAE-KHIEUKH
-0x8258	0xAD31	# HANGUL SYLLABLE KIYEOK-WAE-THIEUTH
-0x8259	0xAD32	# HANGUL SYLLABLE KIYEOK-WAE-PHIEUPH
-0x825A	0xAD33	# HANGUL SYLLABLE KIYEOK-WAE-HIEUH
-0x8261	0xAD36	# HANGUL SYLLABLE KIYEOK-OE-SSANGKIYEOK
-0x8262	0xAD37	# HANGUL SYLLABLE KIYEOK-OE-KIYEOKSIOS
-0x8263	0xAD39	# HANGUL SYLLABLE KIYEOK-OE-NIEUNCIEUC
-0x8264	0xAD3A	# HANGUL SYLLABLE KIYEOK-OE-NIEUNHIEUH
-0x8265	0xAD3B	# HANGUL SYLLABLE KIYEOK-OE-TIKEUT
-0x8266	0xAD3D	# HANGUL SYLLABLE KIYEOK-OE-RIEULKIYEOK
-0x8267	0xAD3E	# HANGUL SYLLABLE KIYEOK-OE-RIEULMIEUM
-0x8268	0xAD3F	# HANGUL SYLLABLE KIYEOK-OE-RIEULPIEUP
-0x8269	0xAD40	# HANGUL SYLLABLE KIYEOK-OE-RIEULSIOS
-0x826A	0xAD41	# HANGUL SYLLABLE KIYEOK-OE-RIEULTHIEUTH
-0x826B	0xAD42	# HANGUL SYLLABLE KIYEOK-OE-RIEULPHIEUPH
-0x826C	0xAD43	# HANGUL SYLLABLE KIYEOK-OE-RIEULHIEUH
-0x826D	0xAD46	# HANGUL SYLLABLE KIYEOK-OE-PIEUPSIOS
-0x826E	0xAD48	# HANGUL SYLLABLE KIYEOK-OE-SSANGSIOS
-0x826F	0xAD4A	# HANGUL SYLLABLE KIYEOK-OE-CIEUC
-0x8270	0xAD4B	# HANGUL SYLLABLE KIYEOK-OE-CHIEUCH
-0x8271	0xAD4C	# HANGUL SYLLABLE KIYEOK-OE-KHIEUKH
-0x8272	0xAD4D	# HANGUL SYLLABLE KIYEOK-OE-THIEUTH
-0x8273	0xAD4E	# HANGUL SYLLABLE KIYEOK-OE-PHIEUPH
-0x8274	0xAD4F	# HANGUL SYLLABLE KIYEOK-OE-HIEUH
-0x8275	0xAD51	# HANGUL SYLLABLE KIYEOK-YO-KIYEOK
-0x8276	0xAD52	# HANGUL SYLLABLE KIYEOK-YO-SSANGKIYEOK
-0x8277	0xAD53	# HANGUL SYLLABLE KIYEOK-YO-KIYEOKSIOS
-0x8278	0xAD55	# HANGUL SYLLABLE KIYEOK-YO-NIEUNCIEUC
-0x8279	0xAD56	# HANGUL SYLLABLE KIYEOK-YO-NIEUNHIEUH
-0x827A	0xAD57	# HANGUL SYLLABLE KIYEOK-YO-TIKEUT
-0x8281	0xAD59	# HANGUL SYLLABLE KIYEOK-YO-RIEULKIYEOK
-0x8282	0xAD5A	# HANGUL SYLLABLE KIYEOK-YO-RIEULMIEUM
-0x8283	0xAD5B	# HANGUL SYLLABLE KIYEOK-YO-RIEULPIEUP
-0x8284	0xAD5C	# HANGUL SYLLABLE KIYEOK-YO-RIEULSIOS
-0x8285	0xAD5D	# HANGUL SYLLABLE KIYEOK-YO-RIEULTHIEUTH
-0x8286	0xAD5E	# HANGUL SYLLABLE KIYEOK-YO-RIEULPHIEUPH
-0x8287	0xAD5F	# HANGUL SYLLABLE KIYEOK-YO-RIEULHIEUH
-0x8288	0xAD60	# HANGUL SYLLABLE KIYEOK-YO-MIEUM
-0x8289	0xAD62	# HANGUL SYLLABLE KIYEOK-YO-PIEUPSIOS
-0x828A	0xAD64	# HANGUL SYLLABLE KIYEOK-YO-SSANGSIOS
-0x828B	0xAD65	# HANGUL SYLLABLE KIYEOK-YO-IEUNG
-0x828C	0xAD66	# HANGUL SYLLABLE KIYEOK-YO-CIEUC
-0x828D	0xAD67	# HANGUL SYLLABLE KIYEOK-YO-CHIEUCH
-0x828E	0xAD68	# HANGUL SYLLABLE KIYEOK-YO-KHIEUKH
-0x828F	0xAD69	# HANGUL SYLLABLE KIYEOK-YO-THIEUTH
-0x8290	0xAD6A	# HANGUL SYLLABLE KIYEOK-YO-PHIEUPH
-0x8291	0xAD6B	# HANGUL SYLLABLE KIYEOK-YO-HIEUH
-0x8292	0xAD6E	# HANGUL SYLLABLE KIYEOK-U-SSANGKIYEOK
-0x8293	0xAD6F	# HANGUL SYLLABLE KIYEOK-U-KIYEOKSIOS
-0x8294	0xAD71	# HANGUL SYLLABLE KIYEOK-U-NIEUNCIEUC
-0x8295	0xAD72	# HANGUL SYLLABLE KIYEOK-U-NIEUNHIEUH
-0x8296	0xAD77	# HANGUL SYLLABLE KIYEOK-U-RIEULPIEUP
-0x8297	0xAD78	# HANGUL SYLLABLE KIYEOK-U-RIEULSIOS
-0x8298	0xAD79	# HANGUL SYLLABLE KIYEOK-U-RIEULTHIEUTH
-0x8299	0xAD7A	# HANGUL SYLLABLE KIYEOK-U-RIEULPHIEUPH
-0x829A	0xAD7E	# HANGUL SYLLABLE KIYEOK-U-PIEUPSIOS
-0x829B	0xAD80	# HANGUL SYLLABLE KIYEOK-U-SSANGSIOS
-0x829C	0xAD83	# HANGUL SYLLABLE KIYEOK-U-CHIEUCH
-0x829D	0xAD84	# HANGUL SYLLABLE KIYEOK-U-KHIEUKH
-0x829E	0xAD85	# HANGUL SYLLABLE KIYEOK-U-THIEUTH
-0x829F	0xAD86	# HANGUL SYLLABLE KIYEOK-U-PHIEUPH
-0x82A0	0xAD87	# HANGUL SYLLABLE KIYEOK-U-HIEUH
-0x82A1	0xAD8A	# HANGUL SYLLABLE KIYEOK-WEO-SSANGKIYEOK
-0x82A2	0xAD8B	# HANGUL SYLLABLE KIYEOK-WEO-KIYEOKSIOS
-0x82A3	0xAD8D	# HANGUL SYLLABLE KIYEOK-WEO-NIEUNCIEUC
-0x82A4	0xAD8E	# HANGUL SYLLABLE KIYEOK-WEO-NIEUNHIEUH
-0x82A5	0xAD8F	# HANGUL SYLLABLE KIYEOK-WEO-TIKEUT
-0x82A6	0xAD91	# HANGUL SYLLABLE KIYEOK-WEO-RIEULKIYEOK
-0x82A7	0xAD92	# HANGUL SYLLABLE KIYEOK-WEO-RIEULMIEUM
-0x82A8	0xAD93	# HANGUL SYLLABLE KIYEOK-WEO-RIEULPIEUP
-0x82A9	0xAD94	# HANGUL SYLLABLE KIYEOK-WEO-RIEULSIOS
-0x82AA	0xAD95	# HANGUL SYLLABLE KIYEOK-WEO-RIEULTHIEUTH
-0x82AB	0xAD96	# HANGUL SYLLABLE KIYEOK-WEO-RIEULPHIEUPH
-0x82AC	0xAD97	# HANGUL SYLLABLE KIYEOK-WEO-RIEULHIEUH
-0x82AD	0xAD98	# HANGUL SYLLABLE KIYEOK-WEO-MIEUM
-0x82AE	0xAD99	# HANGUL SYLLABLE KIYEOK-WEO-PIEUP
-0x82AF	0xAD9A	# HANGUL SYLLABLE KIYEOK-WEO-PIEUPSIOS
-0x82B0	0xAD9B	# HANGUL SYLLABLE KIYEOK-WEO-SIOS
-0x82B1	0xAD9E	# HANGUL SYLLABLE KIYEOK-WEO-CIEUC
-0x82B2	0xAD9F	# HANGUL SYLLABLE KIYEOK-WEO-CHIEUCH
-0x82B3	0xADA0	# HANGUL SYLLABLE KIYEOK-WEO-KHIEUKH
-0x82B4	0xADA1	# HANGUL SYLLABLE KIYEOK-WEO-THIEUTH
-0x82B5	0xADA2	# HANGUL SYLLABLE KIYEOK-WEO-PHIEUPH
-0x82B6	0xADA3	# HANGUL SYLLABLE KIYEOK-WEO-HIEUH
-0x82B7	0xADA5	# HANGUL SYLLABLE KIYEOK-WE-KIYEOK
-0x82B8	0xADA6	# HANGUL SYLLABLE KIYEOK-WE-SSANGKIYEOK
-0x82B9	0xADA7	# HANGUL SYLLABLE KIYEOK-WE-KIYEOKSIOS
-0x82BA	0xADA8	# HANGUL SYLLABLE KIYEOK-WE-NIEUN
-0x82BB	0xADA9	# HANGUL SYLLABLE KIYEOK-WE-NIEUNCIEUC
-0x82BC	0xADAA	# HANGUL SYLLABLE KIYEOK-WE-NIEUNHIEUH
-0x82BD	0xADAB	# HANGUL SYLLABLE KIYEOK-WE-TIKEUT
-0x82BE	0xADAC	# HANGUL SYLLABLE KIYEOK-WE-RIEUL
-0x82BF	0xADAD	# HANGUL SYLLABLE KIYEOK-WE-RIEULKIYEOK
-0x82C0	0xADAE	# HANGUL SYLLABLE KIYEOK-WE-RIEULMIEUM
-0x82C1	0xADAF	# HANGUL SYLLABLE KIYEOK-WE-RIEULPIEUP
-0x82C2	0xADB0	# HANGUL SYLLABLE KIYEOK-WE-RIEULSIOS
-0x82C3	0xADB1	# HANGUL SYLLABLE KIYEOK-WE-RIEULTHIEUTH
-0x82C4	0xADB2	# HANGUL SYLLABLE KIYEOK-WE-RIEULPHIEUPH
-0x82C5	0xADB3	# HANGUL SYLLABLE KIYEOK-WE-RIEULHIEUH
-0x82C6	0xADB4	# HANGUL SYLLABLE KIYEOK-WE-MIEUM
-0x82C7	0xADB5	# HANGUL SYLLABLE KIYEOK-WE-PIEUP
-0x82C8	0xADB6	# HANGUL SYLLABLE KIYEOK-WE-PIEUPSIOS
-0x82C9	0xADB8	# HANGUL SYLLABLE KIYEOK-WE-SSANGSIOS
-0x82CA	0xADB9	# HANGUL SYLLABLE KIYEOK-WE-IEUNG
-0x82CB	0xADBA	# HANGUL SYLLABLE KIYEOK-WE-CIEUC
-0x82CC	0xADBB	# HANGUL SYLLABLE KIYEOK-WE-CHIEUCH
-0x82CD	0xADBC	# HANGUL SYLLABLE KIYEOK-WE-KHIEUKH
-0x82CE	0xADBD	# HANGUL SYLLABLE KIYEOK-WE-THIEUTH
-0x82CF	0xADBE	# HANGUL SYLLABLE KIYEOK-WE-PHIEUPH
-0x82D0	0xADBF	# HANGUL SYLLABLE KIYEOK-WE-HIEUH
-0x82D1	0xADC2	# HANGUL SYLLABLE KIYEOK-WI-SSANGKIYEOK
-0x82D2	0xADC3	# HANGUL SYLLABLE KIYEOK-WI-KIYEOKSIOS
-0x82D3	0xADC5	# HANGUL SYLLABLE KIYEOK-WI-NIEUNCIEUC
-0x82D4	0xADC6	# HANGUL SYLLABLE KIYEOK-WI-NIEUNHIEUH
-0x82D5	0xADC7	# HANGUL SYLLABLE KIYEOK-WI-TIKEUT
-0x82D6	0xADC9	# HANGUL SYLLABLE KIYEOK-WI-RIEULKIYEOK
-0x82D7	0xADCA	# HANGUL SYLLABLE KIYEOK-WI-RIEULMIEUM
-0x82D8	0xADCB	# HANGUL SYLLABLE KIYEOK-WI-RIEULPIEUP
-0x82D9	0xADCC	# HANGUL SYLLABLE KIYEOK-WI-RIEULSIOS
-0x82DA	0xADCD	# HANGUL SYLLABLE KIYEOK-WI-RIEULTHIEUTH
-0x82DB	0xADCE	# HANGUL SYLLABLE KIYEOK-WI-RIEULPHIEUPH
-0x82DC	0xADCF	# HANGUL SYLLABLE KIYEOK-WI-RIEULHIEUH
-0x82DD	0xADD2	# HANGUL SYLLABLE KIYEOK-WI-PIEUPSIOS
-0x82DE	0xADD4	# HANGUL SYLLABLE KIYEOK-WI-SSANGSIOS
-0x82DF	0xADD5	# HANGUL SYLLABLE KIYEOK-WI-IEUNG
-0x82E0	0xADD6	# HANGUL SYLLABLE KIYEOK-WI-CIEUC
-0x82E1	0xADD7	# HANGUL SYLLABLE KIYEOK-WI-CHIEUCH
-0x82E2	0xADD8	# HANGUL SYLLABLE KIYEOK-WI-KHIEUKH
-0x82E3	0xADD9	# HANGUL SYLLABLE KIYEOK-WI-THIEUTH
-0x82E4	0xADDA	# HANGUL SYLLABLE KIYEOK-WI-PHIEUPH
-0x82E5	0xADDB	# HANGUL SYLLABLE KIYEOK-WI-HIEUH
-0x82E6	0xADDD	# HANGUL SYLLABLE KIYEOK-YU-KIYEOK
-0x82E7	0xADDE	# HANGUL SYLLABLE KIYEOK-YU-SSANGKIYEOK
-0x82E8	0xADDF	# HANGUL SYLLABLE KIYEOK-YU-KIYEOKSIOS
-0x82E9	0xADE1	# HANGUL SYLLABLE KIYEOK-YU-NIEUNCIEUC
-0x82EA	0xADE2	# HANGUL SYLLABLE KIYEOK-YU-NIEUNHIEUH
-0x82EB	0xADE3	# HANGUL SYLLABLE KIYEOK-YU-TIKEUT
-0x82EC	0xADE5	# HANGUL SYLLABLE KIYEOK-YU-RIEULKIYEOK
-0x82ED	0xADE6	# HANGUL SYLLABLE KIYEOK-YU-RIEULMIEUM
-0x82EE	0xADE7	# HANGUL SYLLABLE KIYEOK-YU-RIEULPIEUP
-0x82EF	0xADE8	# HANGUL SYLLABLE KIYEOK-YU-RIEULSIOS
-0x82F0	0xADE9	# HANGUL SYLLABLE KIYEOK-YU-RIEULTHIEUTH
-0x82F1	0xADEA	# HANGUL SYLLABLE KIYEOK-YU-RIEULPHIEUPH
-0x82F2	0xADEB	# HANGUL SYLLABLE KIYEOK-YU-RIEULHIEUH
-0x82F3	0xADEC	# HANGUL SYLLABLE KIYEOK-YU-MIEUM
-0x82F4	0xADED	# HANGUL SYLLABLE KIYEOK-YU-PIEUP
-0x82F5	0xADEE	# HANGUL SYLLABLE KIYEOK-YU-PIEUPSIOS
-0x82F6	0xADEF	# HANGUL SYLLABLE KIYEOK-YU-SIOS
-0x82F7	0xADF0	# HANGUL SYLLABLE KIYEOK-YU-SSANGSIOS
-0x82F8	0xADF1	# HANGUL SYLLABLE KIYEOK-YU-IEUNG
-0x82F9	0xADF2	# HANGUL SYLLABLE KIYEOK-YU-CIEUC
-0x82FA	0xADF3	# HANGUL SYLLABLE KIYEOK-YU-CHIEUCH
-0x82FB	0xADF4	# HANGUL SYLLABLE KIYEOK-YU-KHIEUKH
-0x82FC	0xADF5	# HANGUL SYLLABLE KIYEOK-YU-THIEUTH
-0x82FD	0xADF6	# HANGUL SYLLABLE KIYEOK-YU-PHIEUPH
-0x82FE	0xADF7	# HANGUL SYLLABLE KIYEOK-YU-HIEUH
-0x8341	0xADFA	# HANGUL SYLLABLE KIYEOK-EU-SSANGKIYEOK
-0x8342	0xADFB	# HANGUL SYLLABLE KIYEOK-EU-KIYEOKSIOS
-0x8343	0xADFD	# HANGUL SYLLABLE KIYEOK-EU-NIEUNCIEUC
-0x8344	0xADFE	# HANGUL SYLLABLE KIYEOK-EU-NIEUNHIEUH
-0x8345	0xAE02	# HANGUL SYLLABLE KIYEOK-EU-RIEULMIEUM
-0x8346	0xAE03	# HANGUL SYLLABLE KIYEOK-EU-RIEULPIEUP
-0x8347	0xAE04	# HANGUL SYLLABLE KIYEOK-EU-RIEULSIOS
-0x8348	0xAE05	# HANGUL SYLLABLE KIYEOK-EU-RIEULTHIEUTH
-0x8349	0xAE06	# HANGUL SYLLABLE KIYEOK-EU-RIEULPHIEUPH
-0x834A	0xAE07	# HANGUL SYLLABLE KIYEOK-EU-RIEULHIEUH
-0x834B	0xAE0A	# HANGUL SYLLABLE KIYEOK-EU-PIEUPSIOS
-0x834C	0xAE0C	# HANGUL SYLLABLE KIYEOK-EU-SSANGSIOS
-0x834D	0xAE0E	# HANGUL SYLLABLE KIYEOK-EU-CIEUC
-0x834E	0xAE0F	# HANGUL SYLLABLE KIYEOK-EU-CHIEUCH
-0x834F	0xAE10	# HANGUL SYLLABLE KIYEOK-EU-KHIEUKH
-0x8350	0xAE11	# HANGUL SYLLABLE KIYEOK-EU-THIEUTH
-0x8351	0xAE12	# HANGUL SYLLABLE KIYEOK-EU-PHIEUPH
-0x8352	0xAE13	# HANGUL SYLLABLE KIYEOK-EU-HIEUH
-0x8353	0xAE15	# HANGUL SYLLABLE KIYEOK-YI-KIYEOK
-0x8354	0xAE16	# HANGUL SYLLABLE KIYEOK-YI-SSANGKIYEOK
-0x8355	0xAE17	# HANGUL SYLLABLE KIYEOK-YI-KIYEOKSIOS
-0x8356	0xAE18	# HANGUL SYLLABLE KIYEOK-YI-NIEUN
-0x8357	0xAE19	# HANGUL SYLLABLE KIYEOK-YI-NIEUNCIEUC
-0x8358	0xAE1A	# HANGUL SYLLABLE KIYEOK-YI-NIEUNHIEUH
-0x8359	0xAE1B	# HANGUL SYLLABLE KIYEOK-YI-TIKEUT
-0x835A	0xAE1C	# HANGUL SYLLABLE KIYEOK-YI-RIEUL
-0x8361	0xAE1D	# HANGUL SYLLABLE KIYEOK-YI-RIEULKIYEOK
-0x8362	0xAE1E	# HANGUL SYLLABLE KIYEOK-YI-RIEULMIEUM
-0x8363	0xAE1F	# HANGUL SYLLABLE KIYEOK-YI-RIEULPIEUP
-0x8364	0xAE20	# HANGUL SYLLABLE KIYEOK-YI-RIEULSIOS
-0x8365	0xAE21	# HANGUL SYLLABLE KIYEOK-YI-RIEULTHIEUTH
-0x8366	0xAE22	# HANGUL SYLLABLE KIYEOK-YI-RIEULPHIEUPH
-0x8367	0xAE23	# HANGUL SYLLABLE KIYEOK-YI-RIEULHIEUH
-0x8368	0xAE24	# HANGUL SYLLABLE KIYEOK-YI-MIEUM
-0x8369	0xAE25	# HANGUL SYLLABLE KIYEOK-YI-PIEUP
-0x836A	0xAE26	# HANGUL SYLLABLE KIYEOK-YI-PIEUPSIOS
-0x836B	0xAE27	# HANGUL SYLLABLE KIYEOK-YI-SIOS
-0x836C	0xAE28	# HANGUL SYLLABLE KIYEOK-YI-SSANGSIOS
-0x836D	0xAE29	# HANGUL SYLLABLE KIYEOK-YI-IEUNG
-0x836E	0xAE2A	# HANGUL SYLLABLE KIYEOK-YI-CIEUC
-0x836F	0xAE2B	# HANGUL SYLLABLE KIYEOK-YI-CHIEUCH
-0x8370	0xAE2C	# HANGUL SYLLABLE KIYEOK-YI-KHIEUKH
-0x8371	0xAE2D	# HANGUL SYLLABLE KIYEOK-YI-THIEUTH
-0x8372	0xAE2E	# HANGUL SYLLABLE KIYEOK-YI-PHIEUPH
-0x8373	0xAE2F	# HANGUL SYLLABLE KIYEOK-YI-HIEUH
-0x8374	0xAE32	# HANGUL SYLLABLE KIYEOK-I-SSANGKIYEOK
-0x8375	0xAE33	# HANGUL SYLLABLE KIYEOK-I-KIYEOKSIOS
-0x8376	0xAE35	# HANGUL SYLLABLE KIYEOK-I-NIEUNCIEUC
-0x8377	0xAE36	# HANGUL SYLLABLE KIYEOK-I-NIEUNHIEUH
-0x8378	0xAE39	# HANGUL SYLLABLE KIYEOK-I-RIEULKIYEOK
-0x8379	0xAE3B	# HANGUL SYLLABLE KIYEOK-I-RIEULPIEUP
-0x837A	0xAE3C	# HANGUL SYLLABLE KIYEOK-I-RIEULSIOS
-0x8381	0xAE3D	# HANGUL SYLLABLE KIYEOK-I-RIEULTHIEUTH
-0x8382	0xAE3E	# HANGUL SYLLABLE KIYEOK-I-RIEULPHIEUPH
-0x8383	0xAE3F	# HANGUL SYLLABLE KIYEOK-I-RIEULHIEUH
-0x8384	0xAE42	# HANGUL SYLLABLE KIYEOK-I-PIEUPSIOS
-0x8385	0xAE44	# HANGUL SYLLABLE KIYEOK-I-SSANGSIOS
-0x8386	0xAE47	# HANGUL SYLLABLE KIYEOK-I-CHIEUCH
-0x8387	0xAE48	# HANGUL SYLLABLE KIYEOK-I-KHIEUKH
-0x8388	0xAE49	# HANGUL SYLLABLE KIYEOK-I-THIEUTH
-0x8389	0xAE4B	# HANGUL SYLLABLE KIYEOK-I-HIEUH
-0x838A	0xAE4F	# HANGUL SYLLABLE SSANGKIYEOK-A-KIYEOKSIOS
-0x838B	0xAE51	# HANGUL SYLLABLE SSANGKIYEOK-A-NIEUNCIEUC
-0x838C	0xAE52	# HANGUL SYLLABLE SSANGKIYEOK-A-NIEUNHIEUH
-0x838D	0xAE53	# HANGUL SYLLABLE SSANGKIYEOK-A-TIKEUT
-0x838E	0xAE55	# HANGUL SYLLABLE SSANGKIYEOK-A-RIEULKIYEOK
-0x838F	0xAE57	# HANGUL SYLLABLE SSANGKIYEOK-A-RIEULPIEUP
-0x8390	0xAE58	# HANGUL SYLLABLE SSANGKIYEOK-A-RIEULSIOS
-0x8391	0xAE59	# HANGUL SYLLABLE SSANGKIYEOK-A-RIEULTHIEUTH
-0x8392	0xAE5A	# HANGUL SYLLABLE SSANGKIYEOK-A-RIEULPHIEUPH
-0x8393	0xAE5B	# HANGUL SYLLABLE SSANGKIYEOK-A-RIEULHIEUH
-0x8394	0xAE5E	# HANGUL SYLLABLE SSANGKIYEOK-A-PIEUPSIOS
-0x8395	0xAE62	# HANGUL SYLLABLE SSANGKIYEOK-A-CIEUC
-0x8396	0xAE63	# HANGUL SYLLABLE SSANGKIYEOK-A-CHIEUCH
-0x8397	0xAE64	# HANGUL SYLLABLE SSANGKIYEOK-A-KHIEUKH
-0x8398	0xAE66	# HANGUL SYLLABLE SSANGKIYEOK-A-PHIEUPH
-0x8399	0xAE67	# HANGUL SYLLABLE SSANGKIYEOK-A-HIEUH
-0x839A	0xAE6A	# HANGUL SYLLABLE SSANGKIYEOK-AE-SSANGKIYEOK
-0x839B	0xAE6B	# HANGUL SYLLABLE SSANGKIYEOK-AE-KIYEOKSIOS
-0x839C	0xAE6D	# HANGUL SYLLABLE SSANGKIYEOK-AE-NIEUNCIEUC
-0x839D	0xAE6E	# HANGUL SYLLABLE SSANGKIYEOK-AE-NIEUNHIEUH
-0x839E	0xAE6F	# HANGUL SYLLABLE SSANGKIYEOK-AE-TIKEUT
-0x839F	0xAE71	# HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULKIYEOK
-0x83A0	0xAE72	# HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULMIEUM
-0x83A1	0xAE73	# HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULPIEUP
-0x83A2	0xAE74	# HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULSIOS
-0x83A3	0xAE75	# HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULTHIEUTH
-0x83A4	0xAE76	# HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULPHIEUPH
-0x83A5	0xAE77	# HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULHIEUH
-0x83A6	0xAE7A	# HANGUL SYLLABLE SSANGKIYEOK-AE-PIEUPSIOS
-0x83A7	0xAE7E	# HANGUL SYLLABLE SSANGKIYEOK-AE-CIEUC
-0x83A8	0xAE7F	# HANGUL SYLLABLE SSANGKIYEOK-AE-CHIEUCH
-0x83A9	0xAE80	# HANGUL SYLLABLE SSANGKIYEOK-AE-KHIEUKH
-0x83AA	0xAE81	# HANGUL SYLLABLE SSANGKIYEOK-AE-THIEUTH
-0x83AB	0xAE82	# HANGUL SYLLABLE SSANGKIYEOK-AE-PHIEUPH
-0x83AC	0xAE83	# HANGUL SYLLABLE SSANGKIYEOK-AE-HIEUH
-0x83AD	0xAE86	# HANGUL SYLLABLE SSANGKIYEOK-YA-SSANGKIYEOK
-0x83AE	0xAE87	# HANGUL SYLLABLE SSANGKIYEOK-YA-KIYEOKSIOS
-0x83AF	0xAE88	# HANGUL SYLLABLE SSANGKIYEOK-YA-NIEUN
-0x83B0	0xAE89	# HANGUL SYLLABLE SSANGKIYEOK-YA-NIEUNCIEUC
-0x83B1	0xAE8A	# HANGUL SYLLABLE SSANGKIYEOK-YA-NIEUNHIEUH
-0x83B2	0xAE8B	# HANGUL SYLLABLE SSANGKIYEOK-YA-TIKEUT
-0x83B3	0xAE8D	# HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULKIYEOK
-0x83B4	0xAE8E	# HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULMIEUM
-0x83B5	0xAE8F	# HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULPIEUP
-0x83B6	0xAE90	# HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULSIOS
-0x83B7	0xAE91	# HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULTHIEUTH
-0x83B8	0xAE92	# HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULPHIEUPH
-0x83B9	0xAE93	# HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULHIEUH
-0x83BA	0xAE94	# HANGUL SYLLABLE SSANGKIYEOK-YA-MIEUM
-0x83BB	0xAE95	# HANGUL SYLLABLE SSANGKIYEOK-YA-PIEUP
-0x83BC	0xAE96	# HANGUL SYLLABLE SSANGKIYEOK-YA-PIEUPSIOS
-0x83BD	0xAE97	# HANGUL SYLLABLE SSANGKIYEOK-YA-SIOS
-0x83BE	0xAE98	# HANGUL SYLLABLE SSANGKIYEOK-YA-SSANGSIOS
-0x83BF	0xAE99	# HANGUL SYLLABLE SSANGKIYEOK-YA-IEUNG
-0x83C0	0xAE9A	# HANGUL SYLLABLE SSANGKIYEOK-YA-CIEUC
-0x83C1	0xAE9B	# HANGUL SYLLABLE SSANGKIYEOK-YA-CHIEUCH
-0x83C2	0xAE9C	# HANGUL SYLLABLE SSANGKIYEOK-YA-KHIEUKH
-0x83C3	0xAE9D	# HANGUL SYLLABLE SSANGKIYEOK-YA-THIEUTH
-0x83C4	0xAE9E	# HANGUL SYLLABLE SSANGKIYEOK-YA-PHIEUPH
-0x83C5	0xAE9F	# HANGUL SYLLABLE SSANGKIYEOK-YA-HIEUH
-0x83C6	0xAEA0	# HANGUL SYLLABLE SSANGKIYEOK-YAE
-0x83C7	0xAEA1	# HANGUL SYLLABLE SSANGKIYEOK-YAE-KIYEOK
-0x83C8	0xAEA2	# HANGUL SYLLABLE SSANGKIYEOK-YAE-SSANGKIYEOK
-0x83C9	0xAEA3	# HANGUL SYLLABLE SSANGKIYEOK-YAE-KIYEOKSIOS
-0x83CA	0xAEA4	# HANGUL SYLLABLE SSANGKIYEOK-YAE-NIEUN
-0x83CB	0xAEA5	# HANGUL SYLLABLE SSANGKIYEOK-YAE-NIEUNCIEUC
-0x83CC	0xAEA6	# HANGUL SYLLABLE SSANGKIYEOK-YAE-NIEUNHIEUH
-0x83CD	0xAEA7	# HANGUL SYLLABLE SSANGKIYEOK-YAE-TIKEUT
-0x83CE	0xAEA8	# HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEUL
-0x83CF	0xAEA9	# HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULKIYEOK
-0x83D0	0xAEAA	# HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULMIEUM
-0x83D1	0xAEAB	# HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULPIEUP
-0x83D2	0xAEAC	# HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULSIOS
-0x83D3	0xAEAD	# HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULTHIEUTH
-0x83D4	0xAEAE	# HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULPHIEUPH
-0x83D5	0xAEAF	# HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULHIEUH
-0x83D6	0xAEB0	# HANGUL SYLLABLE SSANGKIYEOK-YAE-MIEUM
-0x83D7	0xAEB1	# HANGUL SYLLABLE SSANGKIYEOK-YAE-PIEUP
-0x83D8	0xAEB2	# HANGUL SYLLABLE SSANGKIYEOK-YAE-PIEUPSIOS
-0x83D9	0xAEB3	# HANGUL SYLLABLE SSANGKIYEOK-YAE-SIOS
-0x83DA	0xAEB4	# HANGUL SYLLABLE SSANGKIYEOK-YAE-SSANGSIOS
-0x83DB	0xAEB5	# HANGUL SYLLABLE SSANGKIYEOK-YAE-IEUNG
-0x83DC	0xAEB6	# HANGUL SYLLABLE SSANGKIYEOK-YAE-CIEUC
-0x83DD	0xAEB7	# HANGUL SYLLABLE SSANGKIYEOK-YAE-CHIEUCH
-0x83DE	0xAEB8	# HANGUL SYLLABLE SSANGKIYEOK-YAE-KHIEUKH
-0x83DF	0xAEB9	# HANGUL SYLLABLE SSANGKIYEOK-YAE-THIEUTH
-0x83E0	0xAEBA	# HANGUL SYLLABLE SSANGKIYEOK-YAE-PHIEUPH
-0x83E1	0xAEBB	# HANGUL SYLLABLE SSANGKIYEOK-YAE-HIEUH
-0x83E2	0xAEBF	# HANGUL SYLLABLE SSANGKIYEOK-EO-KIYEOKSIOS
-0x83E3	0xAEC1	# HANGUL SYLLABLE SSANGKIYEOK-EO-NIEUNCIEUC
-0x83E4	0xAEC2	# HANGUL SYLLABLE SSANGKIYEOK-EO-NIEUNHIEUH
-0x83E5	0xAEC3	# HANGUL SYLLABLE SSANGKIYEOK-EO-TIKEUT
-0x83E6	0xAEC5	# HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULKIYEOK
-0x83E7	0xAEC6	# HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULMIEUM
-0x83E8	0xAEC7	# HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULPIEUP
-0x83E9	0xAEC8	# HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULSIOS
-0x83EA	0xAEC9	# HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULTHIEUTH
-0x83EB	0xAECA	# HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULPHIEUPH
-0x83EC	0xAECB	# HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULHIEUH
-0x83ED	0xAECE	# HANGUL SYLLABLE SSANGKIYEOK-EO-PIEUPSIOS
-0x83EE	0xAED2	# HANGUL SYLLABLE SSANGKIYEOK-EO-CIEUC
-0x83EF	0xAED3	# HANGUL SYLLABLE SSANGKIYEOK-EO-CHIEUCH
-0x83F0	0xAED4	# HANGUL SYLLABLE SSANGKIYEOK-EO-KHIEUKH
-0x83F1	0xAED5	# HANGUL SYLLABLE SSANGKIYEOK-EO-THIEUTH
-0x83F2	0xAED6	# HANGUL SYLLABLE SSANGKIYEOK-EO-PHIEUPH
-0x83F3	0xAED7	# HANGUL SYLLABLE SSANGKIYEOK-EO-HIEUH
-0x83F4	0xAEDA	# HANGUL SYLLABLE SSANGKIYEOK-E-SSANGKIYEOK
-0x83F5	0xAEDB	# HANGUL SYLLABLE SSANGKIYEOK-E-KIYEOKSIOS
-0x83F6	0xAEDD	# HANGUL SYLLABLE SSANGKIYEOK-E-NIEUNCIEUC
-0x83F7	0xAEDE	# HANGUL SYLLABLE SSANGKIYEOK-E-NIEUNHIEUH
-0x83F8	0xAEDF	# HANGUL SYLLABLE SSANGKIYEOK-E-TIKEUT
-0x83F9	0xAEE0	# HANGUL SYLLABLE SSANGKIYEOK-E-RIEUL
-0x83FA	0xAEE1	# HANGUL SYLLABLE SSANGKIYEOK-E-RIEULKIYEOK
-0x83FB	0xAEE2	# HANGUL SYLLABLE SSANGKIYEOK-E-RIEULMIEUM
-0x83FC	0xAEE3	# HANGUL SYLLABLE SSANGKIYEOK-E-RIEULPIEUP
-0x83FD	0xAEE4	# HANGUL SYLLABLE SSANGKIYEOK-E-RIEULSIOS
-0x83FE	0xAEE5	# HANGUL SYLLABLE SSANGKIYEOK-E-RIEULTHIEUTH
-0x8441	0xAEE6	# HANGUL SYLLABLE SSANGKIYEOK-E-RIEULPHIEUPH
-0x8442	0xAEE7	# HANGUL SYLLABLE SSANGKIYEOK-E-RIEULHIEUH
-0x8443	0xAEE9	# HANGUL SYLLABLE SSANGKIYEOK-E-PIEUP
-0x8444	0xAEEA	# HANGUL SYLLABLE SSANGKIYEOK-E-PIEUPSIOS
-0x8445	0xAEEC	# HANGUL SYLLABLE SSANGKIYEOK-E-SSANGSIOS
-0x8446	0xAEEE	# HANGUL SYLLABLE SSANGKIYEOK-E-CIEUC
-0x8447	0xAEEF	# HANGUL SYLLABLE SSANGKIYEOK-E-CHIEUCH
-0x8448	0xAEF0	# HANGUL SYLLABLE SSANGKIYEOK-E-KHIEUKH
-0x8449	0xAEF1	# HANGUL SYLLABLE SSANGKIYEOK-E-THIEUTH
-0x844A	0xAEF2	# HANGUL SYLLABLE SSANGKIYEOK-E-PHIEUPH
-0x844B	0xAEF3	# HANGUL SYLLABLE SSANGKIYEOK-E-HIEUH
-0x844C	0xAEF5	# HANGUL SYLLABLE SSANGKIYEOK-YEO-KIYEOK
-0x844D	0xAEF6	# HANGUL SYLLABLE SSANGKIYEOK-YEO-SSANGKIYEOK
-0x844E	0xAEF7	# HANGUL SYLLABLE SSANGKIYEOK-YEO-KIYEOKSIOS
-0x844F	0xAEF9	# HANGUL SYLLABLE SSANGKIYEOK-YEO-NIEUNCIEUC
-0x8450	0xAEFA	# HANGUL SYLLABLE SSANGKIYEOK-YEO-NIEUNHIEUH
-0x8451	0xAEFB	# HANGUL SYLLABLE SSANGKIYEOK-YEO-TIKEUT
-0x8452	0xAEFD	# HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULKIYEOK
-0x8453	0xAEFE	# HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULMIEUM
-0x8454	0xAEFF	# HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULPIEUP
-0x8455	0xAF00	# HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULSIOS
-0x8456	0xAF01	# HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULTHIEUTH
-0x8457	0xAF02	# HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULPHIEUPH
-0x8458	0xAF03	# HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULHIEUH
-0x8459	0xAF04	# HANGUL SYLLABLE SSANGKIYEOK-YEO-MIEUM
-0x845A	0xAF05	# HANGUL SYLLABLE SSANGKIYEOK-YEO-PIEUP
-0x8461	0xAF06	# HANGUL SYLLABLE SSANGKIYEOK-YEO-PIEUPSIOS
-0x8462	0xAF09	# HANGUL SYLLABLE SSANGKIYEOK-YEO-IEUNG
-0x8463	0xAF0A	# HANGUL SYLLABLE SSANGKIYEOK-YEO-CIEUC
-0x8464	0xAF0B	# HANGUL SYLLABLE SSANGKIYEOK-YEO-CHIEUCH
-0x8465	0xAF0C	# HANGUL SYLLABLE SSANGKIYEOK-YEO-KHIEUKH
-0x8466	0xAF0E	# HANGUL SYLLABLE SSANGKIYEOK-YEO-PHIEUPH
-0x8467	0xAF0F	# HANGUL SYLLABLE SSANGKIYEOK-YEO-HIEUH
-0x8468	0xAF11	# HANGUL SYLLABLE SSANGKIYEOK-YE-KIYEOK
-0x8469	0xAF12	# HANGUL SYLLABLE SSANGKIYEOK-YE-SSANGKIYEOK
-0x846A	0xAF13	# HANGUL SYLLABLE SSANGKIYEOK-YE-KIYEOKSIOS
-0x846B	0xAF14	# HANGUL SYLLABLE SSANGKIYEOK-YE-NIEUN
-0x846C	0xAF15	# HANGUL SYLLABLE SSANGKIYEOK-YE-NIEUNCIEUC
-0x846D	0xAF16	# HANGUL SYLLABLE SSANGKIYEOK-YE-NIEUNHIEUH
-0x846E	0xAF17	# HANGUL SYLLABLE SSANGKIYEOK-YE-TIKEUT
-0x846F	0xAF18	# HANGUL SYLLABLE SSANGKIYEOK-YE-RIEUL
-0x8470	0xAF19	# HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULKIYEOK
-0x8471	0xAF1A	# HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULMIEUM
-0x8472	0xAF1B	# HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULPIEUP
-0x8473	0xAF1C	# HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULSIOS
-0x8474	0xAF1D	# HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULTHIEUTH
-0x8475	0xAF1E	# HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULPHIEUPH
-0x8476	0xAF1F	# HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULHIEUH
-0x8477	0xAF20	# HANGUL SYLLABLE SSANGKIYEOK-YE-MIEUM
-0x8478	0xAF21	# HANGUL SYLLABLE SSANGKIYEOK-YE-PIEUP
-0x8479	0xAF22	# HANGUL SYLLABLE SSANGKIYEOK-YE-PIEUPSIOS
-0x847A	0xAF23	# HANGUL SYLLABLE SSANGKIYEOK-YE-SIOS
-0x8481	0xAF24	# HANGUL SYLLABLE SSANGKIYEOK-YE-SSANGSIOS
-0x8482	0xAF25	# HANGUL SYLLABLE SSANGKIYEOK-YE-IEUNG
-0x8483	0xAF26	# HANGUL SYLLABLE SSANGKIYEOK-YE-CIEUC
-0x8484	0xAF27	# HANGUL SYLLABLE SSANGKIYEOK-YE-CHIEUCH
-0x8485	0xAF28	# HANGUL SYLLABLE SSANGKIYEOK-YE-KHIEUKH
-0x8486	0xAF29	# HANGUL SYLLABLE SSANGKIYEOK-YE-THIEUTH
-0x8487	0xAF2A	# HANGUL SYLLABLE SSANGKIYEOK-YE-PHIEUPH
-0x8488	0xAF2B	# HANGUL SYLLABLE SSANGKIYEOK-YE-HIEUH
-0x8489	0xAF2E	# HANGUL SYLLABLE SSANGKIYEOK-O-SSANGKIYEOK
-0x848A	0xAF2F	# HANGUL SYLLABLE SSANGKIYEOK-O-KIYEOKSIOS
-0x848B	0xAF31	# HANGUL SYLLABLE SSANGKIYEOK-O-NIEUNCIEUC
-0x848C	0xAF33	# HANGUL SYLLABLE SSANGKIYEOK-O-TIKEUT
-0x848D	0xAF35	# HANGUL SYLLABLE SSANGKIYEOK-O-RIEULKIYEOK
-0x848E	0xAF36	# HANGUL SYLLABLE SSANGKIYEOK-O-RIEULMIEUM
-0x848F	0xAF37	# HANGUL SYLLABLE SSANGKIYEOK-O-RIEULPIEUP
-0x8490	0xAF38	# HANGUL SYLLABLE SSANGKIYEOK-O-RIEULSIOS
-0x8491	0xAF39	# HANGUL SYLLABLE SSANGKIYEOK-O-RIEULTHIEUTH
-0x8492	0xAF3A	# HANGUL SYLLABLE SSANGKIYEOK-O-RIEULPHIEUPH
-0x8493	0xAF3B	# HANGUL SYLLABLE SSANGKIYEOK-O-RIEULHIEUH
-0x8494	0xAF3E	# HANGUL SYLLABLE SSANGKIYEOK-O-PIEUPSIOS
-0x8495	0xAF40	# HANGUL SYLLABLE SSANGKIYEOK-O-SSANGSIOS
-0x8496	0xAF44	# HANGUL SYLLABLE SSANGKIYEOK-O-KHIEUKH
-0x8497	0xAF45	# HANGUL SYLLABLE SSANGKIYEOK-O-THIEUTH
-0x8498	0xAF46	# HANGUL SYLLABLE SSANGKIYEOK-O-PHIEUPH
-0x8499	0xAF47	# HANGUL SYLLABLE SSANGKIYEOK-O-HIEUH
-0x849A	0xAF4A	# HANGUL SYLLABLE SSANGKIYEOK-WA-SSANGKIYEOK
-0x849B	0xAF4B	# HANGUL SYLLABLE SSANGKIYEOK-WA-KIYEOKSIOS
-0x849C	0xAF4C	# HANGUL SYLLABLE SSANGKIYEOK-WA-NIEUN
-0x849D	0xAF4D	# HANGUL SYLLABLE SSANGKIYEOK-WA-NIEUNCIEUC
-0x849E	0xAF4E	# HANGUL SYLLABLE SSANGKIYEOK-WA-NIEUNHIEUH
-0x849F	0xAF4F	# HANGUL SYLLABLE SSANGKIYEOK-WA-TIKEUT
-0x84A0	0xAF51	# HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULKIYEOK
-0x84A1	0xAF52	# HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULMIEUM
-0x84A2	0xAF53	# HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULPIEUP
-0x84A3	0xAF54	# HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULSIOS
-0x84A4	0xAF55	# HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULTHIEUTH
-0x84A5	0xAF56	# HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULPHIEUPH
-0x84A6	0xAF57	# HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULHIEUH
-0x84A7	0xAF58	# HANGUL SYLLABLE SSANGKIYEOK-WA-MIEUM
-0x84A8	0xAF59	# HANGUL SYLLABLE SSANGKIYEOK-WA-PIEUP
-0x84A9	0xAF5A	# HANGUL SYLLABLE SSANGKIYEOK-WA-PIEUPSIOS
-0x84AA	0xAF5B	# HANGUL SYLLABLE SSANGKIYEOK-WA-SIOS
-0x84AB	0xAF5E	# HANGUL SYLLABLE SSANGKIYEOK-WA-CIEUC
-0x84AC	0xAF5F	# HANGUL SYLLABLE SSANGKIYEOK-WA-CHIEUCH
-0x84AD	0xAF60	# HANGUL SYLLABLE SSANGKIYEOK-WA-KHIEUKH
-0x84AE	0xAF61	# HANGUL SYLLABLE SSANGKIYEOK-WA-THIEUTH
-0x84AF	0xAF62	# HANGUL SYLLABLE SSANGKIYEOK-WA-PHIEUPH
-0x84B0	0xAF63	# HANGUL SYLLABLE SSANGKIYEOK-WA-HIEUH
-0x84B1	0xAF66	# HANGUL SYLLABLE SSANGKIYEOK-WAE-SSANGKIYEOK
-0x84B2	0xAF67	# HANGUL SYLLABLE SSANGKIYEOK-WAE-KIYEOKSIOS
-0x84B3	0xAF68	# HANGUL SYLLABLE SSANGKIYEOK-WAE-NIEUN
-0x84B4	0xAF69	# HANGUL SYLLABLE SSANGKIYEOK-WAE-NIEUNCIEUC
-0x84B5	0xAF6A	# HANGUL SYLLABLE SSANGKIYEOK-WAE-NIEUNHIEUH
-0x84B6	0xAF6B	# HANGUL SYLLABLE SSANGKIYEOK-WAE-TIKEUT
-0x84B7	0xAF6C	# HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEUL
-0x84B8	0xAF6D	# HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULKIYEOK
-0x84B9	0xAF6E	# HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULMIEUM
-0x84BA	0xAF6F	# HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULPIEUP
-0x84BB	0xAF70	# HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULSIOS
-0x84BC	0xAF71	# HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULTHIEUTH
-0x84BD	0xAF72	# HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULPHIEUPH
-0x84BE	0xAF73	# HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULHIEUH
-0x84BF	0xAF74	# HANGUL SYLLABLE SSANGKIYEOK-WAE-MIEUM
-0x84C0	0xAF75	# HANGUL SYLLABLE SSANGKIYEOK-WAE-PIEUP
-0x84C1	0xAF76	# HANGUL SYLLABLE SSANGKIYEOK-WAE-PIEUPSIOS
-0x84C2	0xAF77	# HANGUL SYLLABLE SSANGKIYEOK-WAE-SIOS
-0x84C3	0xAF78	# HANGUL SYLLABLE SSANGKIYEOK-WAE-SSANGSIOS
-0x84C4	0xAF7A	# HANGUL SYLLABLE SSANGKIYEOK-WAE-CIEUC
-0x84C5	0xAF7B	# HANGUL SYLLABLE SSANGKIYEOK-WAE-CHIEUCH
-0x84C6	0xAF7C	# HANGUL SYLLABLE SSANGKIYEOK-WAE-KHIEUKH
-0x84C7	0xAF7D	# HANGUL SYLLABLE SSANGKIYEOK-WAE-THIEUTH
-0x84C8	0xAF7E	# HANGUL SYLLABLE SSANGKIYEOK-WAE-PHIEUPH
-0x84C9	0xAF7F	# HANGUL SYLLABLE SSANGKIYEOK-WAE-HIEUH
-0x84CA	0xAF81	# HANGUL SYLLABLE SSANGKIYEOK-OE-KIYEOK
-0x84CB	0xAF82	# HANGUL SYLLABLE SSANGKIYEOK-OE-SSANGKIYEOK
-0x84CC	0xAF83	# HANGUL SYLLABLE SSANGKIYEOK-OE-KIYEOKSIOS
-0x84CD	0xAF85	# HANGUL SYLLABLE SSANGKIYEOK-OE-NIEUNCIEUC
-0x84CE	0xAF86	# HANGUL SYLLABLE SSANGKIYEOK-OE-NIEUNHIEUH
-0x84CF	0xAF87	# HANGUL SYLLABLE SSANGKIYEOK-OE-TIKEUT
-0x84D0	0xAF89	# HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULKIYEOK
-0x84D1	0xAF8A	# HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULMIEUM
-0x84D2	0xAF8B	# HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULPIEUP
-0x84D3	0xAF8C	# HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULSIOS
-0x84D4	0xAF8D	# HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULTHIEUTH
-0x84D5	0xAF8E	# HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULPHIEUPH
-0x84D6	0xAF8F	# HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULHIEUH
-0x84D7	0xAF92	# HANGUL SYLLABLE SSANGKIYEOK-OE-PIEUPSIOS
-0x84D8	0xAF93	# HANGUL SYLLABLE SSANGKIYEOK-OE-SIOS
-0x84D9	0xAF94	# HANGUL SYLLABLE SSANGKIYEOK-OE-SSANGSIOS
-0x84DA	0xAF96	# HANGUL SYLLABLE SSANGKIYEOK-OE-CIEUC
-0x84DB	0xAF97	# HANGUL SYLLABLE SSANGKIYEOK-OE-CHIEUCH
-0x84DC	0xAF98	# HANGUL SYLLABLE SSANGKIYEOK-OE-KHIEUKH
-0x84DD	0xAF99	# HANGUL SYLLABLE SSANGKIYEOK-OE-THIEUTH
-0x84DE	0xAF9A	# HANGUL SYLLABLE SSANGKIYEOK-OE-PHIEUPH
-0x84DF	0xAF9B	# HANGUL SYLLABLE SSANGKIYEOK-OE-HIEUH
-0x84E0	0xAF9D	# HANGUL SYLLABLE SSANGKIYEOK-YO-KIYEOK
-0x84E1	0xAF9E	# HANGUL SYLLABLE SSANGKIYEOK-YO-SSANGKIYEOK
-0x84E2	0xAF9F	# HANGUL SYLLABLE SSANGKIYEOK-YO-KIYEOKSIOS
-0x84E3	0xAFA0	# HANGUL SYLLABLE SSANGKIYEOK-YO-NIEUN
-0x84E4	0xAFA1	# HANGUL SYLLABLE SSANGKIYEOK-YO-NIEUNCIEUC
-0x84E5	0xAFA2	# HANGUL SYLLABLE SSANGKIYEOK-YO-NIEUNHIEUH
-0x84E6	0xAFA3	# HANGUL SYLLABLE SSANGKIYEOK-YO-TIKEUT
-0x84E7	0xAFA4	# HANGUL SYLLABLE SSANGKIYEOK-YO-RIEUL
-0x84E8	0xAFA5	# HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULKIYEOK
-0x84E9	0xAFA6	# HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULMIEUM
-0x84EA	0xAFA7	# HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULPIEUP
-0x84EB	0xAFA8	# HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULSIOS
-0x84EC	0xAFA9	# HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULTHIEUTH
-0x84ED	0xAFAA	# HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULPHIEUPH
-0x84EE	0xAFAB	# HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULHIEUH
-0x84EF	0xAFAC	# HANGUL SYLLABLE SSANGKIYEOK-YO-MIEUM
-0x84F0	0xAFAD	# HANGUL SYLLABLE SSANGKIYEOK-YO-PIEUP
-0x84F1	0xAFAE	# HANGUL SYLLABLE SSANGKIYEOK-YO-PIEUPSIOS
-0x84F2	0xAFAF	# HANGUL SYLLABLE SSANGKIYEOK-YO-SIOS
-0x84F3	0xAFB0	# HANGUL SYLLABLE SSANGKIYEOK-YO-SSANGSIOS
-0x84F4	0xAFB1	# HANGUL SYLLABLE SSANGKIYEOK-YO-IEUNG
-0x84F5	0xAFB2	# HANGUL SYLLABLE SSANGKIYEOK-YO-CIEUC
-0x84F6	0xAFB3	# HANGUL SYLLABLE SSANGKIYEOK-YO-CHIEUCH
-0x84F7	0xAFB4	# HANGUL SYLLABLE SSANGKIYEOK-YO-KHIEUKH
-0x84F8	0xAFB5	# HANGUL SYLLABLE SSANGKIYEOK-YO-THIEUTH
-0x84F9	0xAFB6	# HANGUL SYLLABLE SSANGKIYEOK-YO-PHIEUPH
-0x84FA	0xAFB7	# HANGUL SYLLABLE SSANGKIYEOK-YO-HIEUH
-0x84FB	0xAFBA	# HANGUL SYLLABLE SSANGKIYEOK-U-SSANGKIYEOK
-0x84FC	0xAFBB	# HANGUL SYLLABLE SSANGKIYEOK-U-KIYEOKSIOS
-0x84FD	0xAFBD	# HANGUL SYLLABLE SSANGKIYEOK-U-NIEUNCIEUC
-0x84FE	0xAFBE	# HANGUL SYLLABLE SSANGKIYEOK-U-NIEUNHIEUH
-0x8541	0xAFBF	# HANGUL SYLLABLE SSANGKIYEOK-U-TIKEUT
-0x8542	0xAFC1	# HANGUL SYLLABLE SSANGKIYEOK-U-RIEULKIYEOK
-0x8543	0xAFC2	# HANGUL SYLLABLE SSANGKIYEOK-U-RIEULMIEUM
-0x8544	0xAFC3	# HANGUL SYLLABLE SSANGKIYEOK-U-RIEULPIEUP
-0x8545	0xAFC4	# HANGUL SYLLABLE SSANGKIYEOK-U-RIEULSIOS
-0x8546	0xAFC5	# HANGUL SYLLABLE SSANGKIYEOK-U-RIEULTHIEUTH
-0x8547	0xAFC6	# HANGUL SYLLABLE SSANGKIYEOK-U-RIEULPHIEUPH
-0x8548	0xAFCA	# HANGUL SYLLABLE SSANGKIYEOK-U-PIEUPSIOS
-0x8549	0xAFCC	# HANGUL SYLLABLE SSANGKIYEOK-U-SSANGSIOS
-0x854A	0xAFCF	# HANGUL SYLLABLE SSANGKIYEOK-U-CHIEUCH
-0x854B	0xAFD0	# HANGUL SYLLABLE SSANGKIYEOK-U-KHIEUKH
-0x854C	0xAFD1	# HANGUL SYLLABLE SSANGKIYEOK-U-THIEUTH
-0x854D	0xAFD2	# HANGUL SYLLABLE SSANGKIYEOK-U-PHIEUPH
-0x854E	0xAFD3	# HANGUL SYLLABLE SSANGKIYEOK-U-HIEUH
-0x854F	0xAFD5	# HANGUL SYLLABLE SSANGKIYEOK-WEO-KIYEOK
-0x8550	0xAFD6	# HANGUL SYLLABLE SSANGKIYEOK-WEO-SSANGKIYEOK
-0x8551	0xAFD7	# HANGUL SYLLABLE SSANGKIYEOK-WEO-KIYEOKSIOS
-0x8552	0xAFD8	# HANGUL SYLLABLE SSANGKIYEOK-WEO-NIEUN
-0x8553	0xAFD9	# HANGUL SYLLABLE SSANGKIYEOK-WEO-NIEUNCIEUC
-0x8554	0xAFDA	# HANGUL SYLLABLE SSANGKIYEOK-WEO-NIEUNHIEUH
-0x8555	0xAFDB	# HANGUL SYLLABLE SSANGKIYEOK-WEO-TIKEUT
-0x8556	0xAFDD	# HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULKIYEOK
-0x8557	0xAFDE	# HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULMIEUM
-0x8558	0xAFDF	# HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULPIEUP
-0x8559	0xAFE0	# HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULSIOS
-0x855A	0xAFE1	# HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULTHIEUTH
-0x8561	0xAFE2	# HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULPHIEUPH
-0x8562	0xAFE3	# HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULHIEUH
-0x8563	0xAFE4	# HANGUL SYLLABLE SSANGKIYEOK-WEO-MIEUM
-0x8564	0xAFE5	# HANGUL SYLLABLE SSANGKIYEOK-WEO-PIEUP
-0x8565	0xAFE6	# HANGUL SYLLABLE SSANGKIYEOK-WEO-PIEUPSIOS
-0x8566	0xAFE7	# HANGUL SYLLABLE SSANGKIYEOK-WEO-SIOS
-0x8567	0xAFEA	# HANGUL SYLLABLE SSANGKIYEOK-WEO-CIEUC
-0x8568	0xAFEB	# HANGUL SYLLABLE SSANGKIYEOK-WEO-CHIEUCH
-0x8569	0xAFEC	# HANGUL SYLLABLE SSANGKIYEOK-WEO-KHIEUKH
-0x856A	0xAFED	# HANGUL SYLLABLE SSANGKIYEOK-WEO-THIEUTH
-0x856B	0xAFEE	# HANGUL SYLLABLE SSANGKIYEOK-WEO-PHIEUPH
-0x856C	0xAFEF	# HANGUL SYLLABLE SSANGKIYEOK-WEO-HIEUH
-0x856D	0xAFF2	# HANGUL SYLLABLE SSANGKIYEOK-WE-SSANGKIYEOK
-0x856E	0xAFF3	# HANGUL SYLLABLE SSANGKIYEOK-WE-KIYEOKSIOS
-0x856F	0xAFF5	# HANGUL SYLLABLE SSANGKIYEOK-WE-NIEUNCIEUC
-0x8570	0xAFF6	# HANGUL SYLLABLE SSANGKIYEOK-WE-NIEUNHIEUH
-0x8571	0xAFF7	# HANGUL SYLLABLE SSANGKIYEOK-WE-TIKEUT
-0x8572	0xAFF9	# HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULKIYEOK
-0x8573	0xAFFA	# HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULMIEUM
-0x8574	0xAFFB	# HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULPIEUP
-0x8575	0xAFFC	# HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULSIOS
-0x8576	0xAFFD	# HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULTHIEUTH
-0x8577	0xAFFE	# HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULPHIEUPH
-0x8578	0xAFFF	# HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULHIEUH
-0x8579	0xB002	# HANGUL SYLLABLE SSANGKIYEOK-WE-PIEUPSIOS
-0x857A	0xB003	# HANGUL SYLLABLE SSANGKIYEOK-WE-SIOS
-0x8581	0xB005	# HANGUL SYLLABLE SSANGKIYEOK-WE-IEUNG
-0x8582	0xB006	# HANGUL SYLLABLE SSANGKIYEOK-WE-CIEUC
-0x8583	0xB007	# HANGUL SYLLABLE SSANGKIYEOK-WE-CHIEUCH
-0x8584	0xB008	# HANGUL SYLLABLE SSANGKIYEOK-WE-KHIEUKH
-0x8585	0xB009	# HANGUL SYLLABLE SSANGKIYEOK-WE-THIEUTH
-0x8586	0xB00A	# HANGUL SYLLABLE SSANGKIYEOK-WE-PHIEUPH
-0x8587	0xB00B	# HANGUL SYLLABLE SSANGKIYEOK-WE-HIEUH
-0x8588	0xB00D	# HANGUL SYLLABLE SSANGKIYEOK-WI-KIYEOK
-0x8589	0xB00E	# HANGUL SYLLABLE SSANGKIYEOK-WI-SSANGKIYEOK
-0x858A	0xB00F	# HANGUL SYLLABLE SSANGKIYEOK-WI-KIYEOKSIOS
-0x858B	0xB011	# HANGUL SYLLABLE SSANGKIYEOK-WI-NIEUNCIEUC
-0x858C	0xB012	# HANGUL SYLLABLE SSANGKIYEOK-WI-NIEUNHIEUH
-0x858D	0xB013	# HANGUL SYLLABLE SSANGKIYEOK-WI-TIKEUT
-0x858E	0xB015	# HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULKIYEOK
-0x858F	0xB016	# HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULMIEUM
-0x8590	0xB017	# HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULPIEUP
-0x8591	0xB018	# HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULSIOS
-0x8592	0xB019	# HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULTHIEUTH
-0x8593	0xB01A	# HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULPHIEUPH
-0x8594	0xB01B	# HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULHIEUH
-0x8595	0xB01E	# HANGUL SYLLABLE SSANGKIYEOK-WI-PIEUPSIOS
-0x8596	0xB01F	# HANGUL SYLLABLE SSANGKIYEOK-WI-SIOS
-0x8597	0xB020	# HANGUL SYLLABLE SSANGKIYEOK-WI-SSANGSIOS
-0x8598	0xB021	# HANGUL SYLLABLE SSANGKIYEOK-WI-IEUNG
-0x8599	0xB022	# HANGUL SYLLABLE SSANGKIYEOK-WI-CIEUC
-0x859A	0xB023	# HANGUL SYLLABLE SSANGKIYEOK-WI-CHIEUCH
-0x859B	0xB024	# HANGUL SYLLABLE SSANGKIYEOK-WI-KHIEUKH
-0x859C	0xB025	# HANGUL SYLLABLE SSANGKIYEOK-WI-THIEUTH
-0x859D	0xB026	# HANGUL SYLLABLE SSANGKIYEOK-WI-PHIEUPH
-0x859E	0xB027	# HANGUL SYLLABLE SSANGKIYEOK-WI-HIEUH
-0x859F	0xB029	# HANGUL SYLLABLE SSANGKIYEOK-YU-KIYEOK
-0x85A0	0xB02A	# HANGUL SYLLABLE SSANGKIYEOK-YU-SSANGKIYEOK
-0x85A1	0xB02B	# HANGUL SYLLABLE SSANGKIYEOK-YU-KIYEOKSIOS
-0x85A2	0xB02C	# HANGUL SYLLABLE SSANGKIYEOK-YU-NIEUN
-0x85A3	0xB02D	# HANGUL SYLLABLE SSANGKIYEOK-YU-NIEUNCIEUC
-0x85A4	0xB02E	# HANGUL SYLLABLE SSANGKIYEOK-YU-NIEUNHIEUH
-0x85A5	0xB02F	# HANGUL SYLLABLE SSANGKIYEOK-YU-TIKEUT
-0x85A6	0xB030	# HANGUL SYLLABLE SSANGKIYEOK-YU-RIEUL
-0x85A7	0xB031	# HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULKIYEOK
-0x85A8	0xB032	# HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULMIEUM
-0x85A9	0xB033	# HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULPIEUP
-0x85AA	0xB034	# HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULSIOS
-0x85AB	0xB035	# HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULTHIEUTH
-0x85AC	0xB036	# HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULPHIEUPH
-0x85AD	0xB037	# HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULHIEUH
-0x85AE	0xB038	# HANGUL SYLLABLE SSANGKIYEOK-YU-MIEUM
-0x85AF	0xB039	# HANGUL SYLLABLE SSANGKIYEOK-YU-PIEUP
-0x85B0	0xB03A	# HANGUL SYLLABLE SSANGKIYEOK-YU-PIEUPSIOS
-0x85B1	0xB03B	# HANGUL SYLLABLE SSANGKIYEOK-YU-SIOS
-0x85B2	0xB03C	# HANGUL SYLLABLE SSANGKIYEOK-YU-SSANGSIOS
-0x85B3	0xB03D	# HANGUL SYLLABLE SSANGKIYEOK-YU-IEUNG
-0x85B4	0xB03E	# HANGUL SYLLABLE SSANGKIYEOK-YU-CIEUC
-0x85B5	0xB03F	# HANGUL SYLLABLE SSANGKIYEOK-YU-CHIEUCH
-0x85B6	0xB040	# HANGUL SYLLABLE SSANGKIYEOK-YU-KHIEUKH
-0x85B7	0xB041	# HANGUL SYLLABLE SSANGKIYEOK-YU-THIEUTH
-0x85B8	0xB042	# HANGUL SYLLABLE SSANGKIYEOK-YU-PHIEUPH
-0x85B9	0xB043	# HANGUL SYLLABLE SSANGKIYEOK-YU-HIEUH
-0x85BA	0xB046	# HANGUL SYLLABLE SSANGKIYEOK-EU-SSANGKIYEOK
-0x85BB	0xB047	# HANGUL SYLLABLE SSANGKIYEOK-EU-KIYEOKSIOS
-0x85BC	0xB049	# HANGUL SYLLABLE SSANGKIYEOK-EU-NIEUNCIEUC
-0x85BD	0xB04B	# HANGUL SYLLABLE SSANGKIYEOK-EU-TIKEUT
-0x85BE	0xB04D	# HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULKIYEOK
-0x85BF	0xB04F	# HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULPIEUP
-0x85C0	0xB050	# HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULSIOS
-0x85C1	0xB051	# HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULTHIEUTH
-0x85C2	0xB052	# HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULPHIEUPH
-0x85C3	0xB056	# HANGUL SYLLABLE SSANGKIYEOK-EU-PIEUPSIOS
-0x85C4	0xB058	# HANGUL SYLLABLE SSANGKIYEOK-EU-SSANGSIOS
-0x85C5	0xB05A	# HANGUL SYLLABLE SSANGKIYEOK-EU-CIEUC
-0x85C6	0xB05B	# HANGUL SYLLABLE SSANGKIYEOK-EU-CHIEUCH
-0x85C7	0xB05C	# HANGUL SYLLABLE SSANGKIYEOK-EU-KHIEUKH
-0x85C8	0xB05E	# HANGUL SYLLABLE SSANGKIYEOK-EU-PHIEUPH
-0x85C9	0xB05F	# HANGUL SYLLABLE SSANGKIYEOK-EU-HIEUH
-0x85CA	0xB060	# HANGUL SYLLABLE SSANGKIYEOK-YI
-0x85CB	0xB061	# HANGUL SYLLABLE SSANGKIYEOK-YI-KIYEOK
-0x85CC	0xB062	# HANGUL SYLLABLE SSANGKIYEOK-YI-SSANGKIYEOK
-0x85CD	0xB063	# HANGUL SYLLABLE SSANGKIYEOK-YI-KIYEOKSIOS
-0x85CE	0xB064	# HANGUL SYLLABLE SSANGKIYEOK-YI-NIEUN
-0x85CF	0xB065	# HANGUL SYLLABLE SSANGKIYEOK-YI-NIEUNCIEUC
-0x85D0	0xB066	# HANGUL SYLLABLE SSANGKIYEOK-YI-NIEUNHIEUH
-0x85D1	0xB067	# HANGUL SYLLABLE SSANGKIYEOK-YI-TIKEUT
-0x85D2	0xB068	# HANGUL SYLLABLE SSANGKIYEOK-YI-RIEUL
-0x85D3	0xB069	# HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULKIYEOK
-0x85D4	0xB06A	# HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULMIEUM
-0x85D5	0xB06B	# HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULPIEUP
-0x85D6	0xB06C	# HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULSIOS
-0x85D7	0xB06D	# HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULTHIEUTH
-0x85D8	0xB06E	# HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULPHIEUPH
-0x85D9	0xB06F	# HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULHIEUH
-0x85DA	0xB070	# HANGUL SYLLABLE SSANGKIYEOK-YI-MIEUM
-0x85DB	0xB071	# HANGUL SYLLABLE SSANGKIYEOK-YI-PIEUP
-0x85DC	0xB072	# HANGUL SYLLABLE SSANGKIYEOK-YI-PIEUPSIOS
-0x85DD	0xB073	# HANGUL SYLLABLE SSANGKIYEOK-YI-SIOS
-0x85DE	0xB074	# HANGUL SYLLABLE SSANGKIYEOK-YI-SSANGSIOS
-0x85DF	0xB075	# HANGUL SYLLABLE SSANGKIYEOK-YI-IEUNG
-0x85E0	0xB076	# HANGUL SYLLABLE SSANGKIYEOK-YI-CIEUC
-0x85E1	0xB077	# HANGUL SYLLABLE SSANGKIYEOK-YI-CHIEUCH
-0x85E2	0xB078	# HANGUL SYLLABLE SSANGKIYEOK-YI-KHIEUKH
-0x85E3	0xB079	# HANGUL SYLLABLE SSANGKIYEOK-YI-THIEUTH
-0x85E4	0xB07A	# HANGUL SYLLABLE SSANGKIYEOK-YI-PHIEUPH
-0x85E5	0xB07B	# HANGUL SYLLABLE SSANGKIYEOK-YI-HIEUH
-0x85E6	0xB07E	# HANGUL SYLLABLE SSANGKIYEOK-I-SSANGKIYEOK
-0x85E7	0xB07F	# HANGUL SYLLABLE SSANGKIYEOK-I-KIYEOKSIOS
-0x85E8	0xB081	# HANGUL SYLLABLE SSANGKIYEOK-I-NIEUNCIEUC
-0x85E9	0xB082	# HANGUL SYLLABLE SSANGKIYEOK-I-NIEUNHIEUH
-0x85EA	0xB083	# HANGUL SYLLABLE SSANGKIYEOK-I-TIKEUT
-0x85EB	0xB085	# HANGUL SYLLABLE SSANGKIYEOK-I-RIEULKIYEOK
-0x85EC	0xB086	# HANGUL SYLLABLE SSANGKIYEOK-I-RIEULMIEUM
-0x85ED	0xB087	# HANGUL SYLLABLE SSANGKIYEOK-I-RIEULPIEUP
-0x85EE	0xB088	# HANGUL SYLLABLE SSANGKIYEOK-I-RIEULSIOS
-0x85EF	0xB089	# HANGUL SYLLABLE SSANGKIYEOK-I-RIEULTHIEUTH
-0x85F0	0xB08A	# HANGUL SYLLABLE SSANGKIYEOK-I-RIEULPHIEUPH
-0x85F1	0xB08B	# HANGUL SYLLABLE SSANGKIYEOK-I-RIEULHIEUH
-0x85F2	0xB08E	# HANGUL SYLLABLE SSANGKIYEOK-I-PIEUPSIOS
-0x85F3	0xB090	# HANGUL SYLLABLE SSANGKIYEOK-I-SSANGSIOS
-0x85F4	0xB092	# HANGUL SYLLABLE SSANGKIYEOK-I-CIEUC
-0x85F5	0xB093	# HANGUL SYLLABLE SSANGKIYEOK-I-CHIEUCH
-0x85F6	0xB094	# HANGUL SYLLABLE SSANGKIYEOK-I-KHIEUKH
-0x85F7	0xB095	# HANGUL SYLLABLE SSANGKIYEOK-I-THIEUTH
-0x85F8	0xB096	# HANGUL SYLLABLE SSANGKIYEOK-I-PHIEUPH
-0x85F9	0xB097	# HANGUL SYLLABLE SSANGKIYEOK-I-HIEUH
-0x85FA	0xB09B	# HANGUL SYLLABLE NIEUN-A-KIYEOKSIOS
-0x85FB	0xB09D	# HANGUL SYLLABLE NIEUN-A-NIEUNCIEUC
-0x85FC	0xB09E	# HANGUL SYLLABLE NIEUN-A-NIEUNHIEUH
-0x85FD	0xB0A3	# HANGUL SYLLABLE NIEUN-A-RIEULPIEUP
-0x85FE	0xB0A4	# HANGUL SYLLABLE NIEUN-A-RIEULSIOS
-0x8641	0xB0A5	# HANGUL SYLLABLE NIEUN-A-RIEULTHIEUTH
-0x8642	0xB0A6	# HANGUL SYLLABLE NIEUN-A-RIEULPHIEUPH
-0x8643	0xB0A7	# HANGUL SYLLABLE NIEUN-A-RIEULHIEUH
-0x8644	0xB0AA	# HANGUL SYLLABLE NIEUN-A-PIEUPSIOS
-0x8645	0xB0B0	# HANGUL SYLLABLE NIEUN-A-KHIEUKH
-0x8646	0xB0B2	# HANGUL SYLLABLE NIEUN-A-PHIEUPH
-0x8647	0xB0B6	# HANGUL SYLLABLE NIEUN-AE-SSANGKIYEOK
-0x8648	0xB0B7	# HANGUL SYLLABLE NIEUN-AE-KIYEOKSIOS
-0x8649	0xB0B9	# HANGUL SYLLABLE NIEUN-AE-NIEUNCIEUC
-0x864A	0xB0BA	# HANGUL SYLLABLE NIEUN-AE-NIEUNHIEUH
-0x864B	0xB0BB	# HANGUL SYLLABLE NIEUN-AE-TIKEUT
-0x864C	0xB0BD	# HANGUL SYLLABLE NIEUN-AE-RIEULKIYEOK
-0x864D	0xB0BE	# HANGUL SYLLABLE NIEUN-AE-RIEULMIEUM
-0x864E	0xB0BF	# HANGUL SYLLABLE NIEUN-AE-RIEULPIEUP
-0x864F	0xB0C0	# HANGUL SYLLABLE NIEUN-AE-RIEULSIOS
-0x8650	0xB0C1	# HANGUL SYLLABLE NIEUN-AE-RIEULTHIEUTH
-0x8651	0xB0C2	# HANGUL SYLLABLE NIEUN-AE-RIEULPHIEUPH
-0x8652	0xB0C3	# HANGUL SYLLABLE NIEUN-AE-RIEULHIEUH
-0x8653	0xB0C6	# HANGUL SYLLABLE NIEUN-AE-PIEUPSIOS
-0x8654	0xB0CA	# HANGUL SYLLABLE NIEUN-AE-CIEUC
-0x8655	0xB0CB	# HANGUL SYLLABLE NIEUN-AE-CHIEUCH
-0x8656	0xB0CC	# HANGUL SYLLABLE NIEUN-AE-KHIEUKH
-0x8657	0xB0CD	# HANGUL SYLLABLE NIEUN-AE-THIEUTH
-0x8658	0xB0CE	# HANGUL SYLLABLE NIEUN-AE-PHIEUPH
-0x8659	0xB0CF	# HANGUL SYLLABLE NIEUN-AE-HIEUH
-0x865A	0xB0D2	# HANGUL SYLLABLE NIEUN-YA-SSANGKIYEOK
-0x8661	0xB0D3	# HANGUL SYLLABLE NIEUN-YA-KIYEOKSIOS
-0x8662	0xB0D5	# HANGUL SYLLABLE NIEUN-YA-NIEUNCIEUC
-0x8663	0xB0D6	# HANGUL SYLLABLE NIEUN-YA-NIEUNHIEUH
-0x8664	0xB0D7	# HANGUL SYLLABLE NIEUN-YA-TIKEUT
-0x8665	0xB0D9	# HANGUL SYLLABLE NIEUN-YA-RIEULKIYEOK
-0x8666	0xB0DA	# HANGUL SYLLABLE NIEUN-YA-RIEULMIEUM
-0x8667	0xB0DB	# HANGUL SYLLABLE NIEUN-YA-RIEULPIEUP
-0x8668	0xB0DC	# HANGUL SYLLABLE NIEUN-YA-RIEULSIOS
-0x8669	0xB0DD	# HANGUL SYLLABLE NIEUN-YA-RIEULTHIEUTH
-0x866A	0xB0DE	# HANGUL SYLLABLE NIEUN-YA-RIEULPHIEUPH
-0x866B	0xB0DF	# HANGUL SYLLABLE NIEUN-YA-RIEULHIEUH
-0x866C	0xB0E1	# HANGUL SYLLABLE NIEUN-YA-PIEUP
-0x866D	0xB0E2	# HANGUL SYLLABLE NIEUN-YA-PIEUPSIOS
-0x866E	0xB0E3	# HANGUL SYLLABLE NIEUN-YA-SIOS
-0x866F	0xB0E4	# HANGUL SYLLABLE NIEUN-YA-SSANGSIOS
-0x8670	0xB0E6	# HANGUL SYLLABLE NIEUN-YA-CIEUC
-0x8671	0xB0E7	# HANGUL SYLLABLE NIEUN-YA-CHIEUCH
-0x8672	0xB0E8	# HANGUL SYLLABLE NIEUN-YA-KHIEUKH
-0x8673	0xB0E9	# HANGUL SYLLABLE NIEUN-YA-THIEUTH
-0x8674	0xB0EA	# HANGUL SYLLABLE NIEUN-YA-PHIEUPH
-0x8675	0xB0EB	# HANGUL SYLLABLE NIEUN-YA-HIEUH
-0x8676	0xB0EC	# HANGUL SYLLABLE NIEUN-YAE
-0x8677	0xB0ED	# HANGUL SYLLABLE NIEUN-YAE-KIYEOK
-0x8678	0xB0EE	# HANGUL SYLLABLE NIEUN-YAE-SSANGKIYEOK
-0x8679	0xB0EF	# HANGUL SYLLABLE NIEUN-YAE-KIYEOKSIOS
-0x867A	0xB0F0	# HANGUL SYLLABLE NIEUN-YAE-NIEUN
-0x8681	0xB0F1	# HANGUL SYLLABLE NIEUN-YAE-NIEUNCIEUC
-0x8682	0xB0F2	# HANGUL SYLLABLE NIEUN-YAE-NIEUNHIEUH
-0x8683	0xB0F3	# HANGUL SYLLABLE NIEUN-YAE-TIKEUT
-0x8684	0xB0F4	# HANGUL SYLLABLE NIEUN-YAE-RIEUL
-0x8685	0xB0F5	# HANGUL SYLLABLE NIEUN-YAE-RIEULKIYEOK
-0x8686	0xB0F6	# HANGUL SYLLABLE NIEUN-YAE-RIEULMIEUM
-0x8687	0xB0F7	# HANGUL SYLLABLE NIEUN-YAE-RIEULPIEUP
-0x8688	0xB0F8	# HANGUL SYLLABLE NIEUN-YAE-RIEULSIOS
-0x8689	0xB0F9	# HANGUL SYLLABLE NIEUN-YAE-RIEULTHIEUTH
-0x868A	0xB0FA	# HANGUL SYLLABLE NIEUN-YAE-RIEULPHIEUPH
-0x868B	0xB0FB	# HANGUL SYLLABLE NIEUN-YAE-RIEULHIEUH
-0x868C	0xB0FC	# HANGUL SYLLABLE NIEUN-YAE-MIEUM
-0x868D	0xB0FD	# HANGUL SYLLABLE NIEUN-YAE-PIEUP
-0x868E	0xB0FE	# HANGUL SYLLABLE NIEUN-YAE-PIEUPSIOS
-0x868F	0xB0FF	# HANGUL SYLLABLE NIEUN-YAE-SIOS
-0x8690	0xB100	# HANGUL SYLLABLE NIEUN-YAE-SSANGSIOS
-0x8691	0xB101	# HANGUL SYLLABLE NIEUN-YAE-IEUNG
-0x8692	0xB102	# HANGUL SYLLABLE NIEUN-YAE-CIEUC
-0x8693	0xB103	# HANGUL SYLLABLE NIEUN-YAE-CHIEUCH
-0x8694	0xB104	# HANGUL SYLLABLE NIEUN-YAE-KHIEUKH
-0x8695	0xB105	# HANGUL SYLLABLE NIEUN-YAE-THIEUTH
-0x8696	0xB106	# HANGUL SYLLABLE NIEUN-YAE-PHIEUPH
-0x8697	0xB107	# HANGUL SYLLABLE NIEUN-YAE-HIEUH
-0x8698	0xB10A	# HANGUL SYLLABLE NIEUN-EO-SSANGKIYEOK
-0x8699	0xB10D	# HANGUL SYLLABLE NIEUN-EO-NIEUNCIEUC
-0x869A	0xB10E	# HANGUL SYLLABLE NIEUN-EO-NIEUNHIEUH
-0x869B	0xB10F	# HANGUL SYLLABLE NIEUN-EO-TIKEUT
-0x869C	0xB111	# HANGUL SYLLABLE NIEUN-EO-RIEULKIYEOK
-0x869D	0xB114	# HANGUL SYLLABLE NIEUN-EO-RIEULSIOS
-0x869E	0xB115	# HANGUL SYLLABLE NIEUN-EO-RIEULTHIEUTH
-0x869F	0xB116	# HANGUL SYLLABLE NIEUN-EO-RIEULPHIEUPH
-0x86A0	0xB117	# HANGUL SYLLABLE NIEUN-EO-RIEULHIEUH
-0x86A1	0xB11A	# HANGUL SYLLABLE NIEUN-EO-PIEUPSIOS
-0x86A2	0xB11E	# HANGUL SYLLABLE NIEUN-EO-CIEUC
-0x86A3	0xB11F	# HANGUL SYLLABLE NIEUN-EO-CHIEUCH
-0x86A4	0xB120	# HANGUL SYLLABLE NIEUN-EO-KHIEUKH
-0x86A5	0xB121	# HANGUL SYLLABLE NIEUN-EO-THIEUTH
-0x86A6	0xB122	# HANGUL SYLLABLE NIEUN-EO-PHIEUPH
-0x86A7	0xB126	# HANGUL SYLLABLE NIEUN-E-SSANGKIYEOK
-0x86A8	0xB127	# HANGUL SYLLABLE NIEUN-E-KIYEOKSIOS
-0x86A9	0xB129	# HANGUL SYLLABLE NIEUN-E-NIEUNCIEUC
-0x86AA	0xB12A	# HANGUL SYLLABLE NIEUN-E-NIEUNHIEUH
-0x86AB	0xB12B	# HANGUL SYLLABLE NIEUN-E-TIKEUT
-0x86AC	0xB12D	# HANGUL SYLLABLE NIEUN-E-RIEULKIYEOK
-0x86AD	0xB12E	# HANGUL SYLLABLE NIEUN-E-RIEULMIEUM
-0x86AE	0xB12F	# HANGUL SYLLABLE NIEUN-E-RIEULPIEUP
-0x86AF	0xB130	# HANGUL SYLLABLE NIEUN-E-RIEULSIOS
-0x86B0	0xB131	# HANGUL SYLLABLE NIEUN-E-RIEULTHIEUTH
-0x86B1	0xB132	# HANGUL SYLLABLE NIEUN-E-RIEULPHIEUPH
-0x86B2	0xB133	# HANGUL SYLLABLE NIEUN-E-RIEULHIEUH
-0x86B3	0xB136	# HANGUL SYLLABLE NIEUN-E-PIEUPSIOS
-0x86B4	0xB13A	# HANGUL SYLLABLE NIEUN-E-CIEUC
-0x86B5	0xB13B	# HANGUL SYLLABLE NIEUN-E-CHIEUCH
-0x86B6	0xB13C	# HANGUL SYLLABLE NIEUN-E-KHIEUKH
-0x86B7	0xB13D	# HANGUL SYLLABLE NIEUN-E-THIEUTH
-0x86B8	0xB13E	# HANGUL SYLLABLE NIEUN-E-PHIEUPH
-0x86B9	0xB13F	# HANGUL SYLLABLE NIEUN-E-HIEUH
-0x86BA	0xB142	# HANGUL SYLLABLE NIEUN-YEO-SSANGKIYEOK
-0x86BB	0xB143	# HANGUL SYLLABLE NIEUN-YEO-KIYEOKSIOS
-0x86BC	0xB145	# HANGUL SYLLABLE NIEUN-YEO-NIEUNCIEUC
-0x86BD	0xB146	# HANGUL SYLLABLE NIEUN-YEO-NIEUNHIEUH
-0x86BE	0xB147	# HANGUL SYLLABLE NIEUN-YEO-TIKEUT
-0x86BF	0xB149	# HANGUL SYLLABLE NIEUN-YEO-RIEULKIYEOK
-0x86C0	0xB14A	# HANGUL SYLLABLE NIEUN-YEO-RIEULMIEUM
-0x86C1	0xB14B	# HANGUL SYLLABLE NIEUN-YEO-RIEULPIEUP
-0x86C2	0xB14C	# HANGUL SYLLABLE NIEUN-YEO-RIEULSIOS
-0x86C3	0xB14D	# HANGUL SYLLABLE NIEUN-YEO-RIEULTHIEUTH
-0x86C4	0xB14E	# HANGUL SYLLABLE NIEUN-YEO-RIEULPHIEUPH
-0x86C5	0xB14F	# HANGUL SYLLABLE NIEUN-YEO-RIEULHIEUH
-0x86C6	0xB152	# HANGUL SYLLABLE NIEUN-YEO-PIEUPSIOS
-0x86C7	0xB153	# HANGUL SYLLABLE NIEUN-YEO-SIOS
-0x86C8	0xB156	# HANGUL SYLLABLE NIEUN-YEO-CIEUC
-0x86C9	0xB157	# HANGUL SYLLABLE NIEUN-YEO-CHIEUCH
-0x86CA	0xB159	# HANGUL SYLLABLE NIEUN-YEO-THIEUTH
-0x86CB	0xB15A	# HANGUL SYLLABLE NIEUN-YEO-PHIEUPH
-0x86CC	0xB15B	# HANGUL SYLLABLE NIEUN-YEO-HIEUH
-0x86CD	0xB15D	# HANGUL SYLLABLE NIEUN-YE-KIYEOK
-0x86CE	0xB15E	# HANGUL SYLLABLE NIEUN-YE-SSANGKIYEOK
-0x86CF	0xB15F	# HANGUL SYLLABLE NIEUN-YE-KIYEOKSIOS
-0x86D0	0xB161	# HANGUL SYLLABLE NIEUN-YE-NIEUNCIEUC
-0x86D1	0xB162	# HANGUL SYLLABLE NIEUN-YE-NIEUNHIEUH
-0x86D2	0xB163	# HANGUL SYLLABLE NIEUN-YE-TIKEUT
-0x86D3	0xB164	# HANGUL SYLLABLE NIEUN-YE-RIEUL
-0x86D4	0xB165	# HANGUL SYLLABLE NIEUN-YE-RIEULKIYEOK
-0x86D5	0xB166	# HANGUL SYLLABLE NIEUN-YE-RIEULMIEUM
-0x86D6	0xB167	# HANGUL SYLLABLE NIEUN-YE-RIEULPIEUP
-0x86D7	0xB168	# HANGUL SYLLABLE NIEUN-YE-RIEULSIOS
-0x86D8	0xB169	# HANGUL SYLLABLE NIEUN-YE-RIEULTHIEUTH
-0x86D9	0xB16A	# HANGUL SYLLABLE NIEUN-YE-RIEULPHIEUPH
-0x86DA	0xB16B	# HANGUL SYLLABLE NIEUN-YE-RIEULHIEUH
-0x86DB	0xB16C	# HANGUL SYLLABLE NIEUN-YE-MIEUM
-0x86DC	0xB16D	# HANGUL SYLLABLE NIEUN-YE-PIEUP
-0x86DD	0xB16E	# HANGUL SYLLABLE NIEUN-YE-PIEUPSIOS
-0x86DE	0xB16F	# HANGUL SYLLABLE NIEUN-YE-SIOS
-0x86DF	0xB170	# HANGUL SYLLABLE NIEUN-YE-SSANGSIOS
-0x86E0	0xB171	# HANGUL SYLLABLE NIEUN-YE-IEUNG
-0x86E1	0xB172	# HANGUL SYLLABLE NIEUN-YE-CIEUC
-0x86E2	0xB173	# HANGUL SYLLABLE NIEUN-YE-CHIEUCH
-0x86E3	0xB174	# HANGUL SYLLABLE NIEUN-YE-KHIEUKH
-0x86E4	0xB175	# HANGUL SYLLABLE NIEUN-YE-THIEUTH
-0x86E5	0xB176	# HANGUL SYLLABLE NIEUN-YE-PHIEUPH
-0x86E6	0xB177	# HANGUL SYLLABLE NIEUN-YE-HIEUH
-0x86E7	0xB17A	# HANGUL SYLLABLE NIEUN-O-SSANGKIYEOK
-0x86E8	0xB17B	# HANGUL SYLLABLE NIEUN-O-KIYEOKSIOS
-0x86E9	0xB17D	# HANGUL SYLLABLE NIEUN-O-NIEUNCIEUC
-0x86EA	0xB17E	# HANGUL SYLLABLE NIEUN-O-NIEUNHIEUH
-0x86EB	0xB17F	# HANGUL SYLLABLE NIEUN-O-TIKEUT
-0x86EC	0xB181	# HANGUL SYLLABLE NIEUN-O-RIEULKIYEOK
-0x86ED	0xB183	# HANGUL SYLLABLE NIEUN-O-RIEULPIEUP
-0x86EE	0xB184	# HANGUL SYLLABLE NIEUN-O-RIEULSIOS
-0x86EF	0xB185	# HANGUL SYLLABLE NIEUN-O-RIEULTHIEUTH
-0x86F0	0xB186	# HANGUL SYLLABLE NIEUN-O-RIEULPHIEUPH
-0x86F1	0xB187	# HANGUL SYLLABLE NIEUN-O-RIEULHIEUH
-0x86F2	0xB18A	# HANGUL SYLLABLE NIEUN-O-PIEUPSIOS
-0x86F3	0xB18C	# HANGUL SYLLABLE NIEUN-O-SSANGSIOS
-0x86F4	0xB18E	# HANGUL SYLLABLE NIEUN-O-CIEUC
-0x86F5	0xB18F	# HANGUL SYLLABLE NIEUN-O-CHIEUCH
-0x86F6	0xB190	# HANGUL SYLLABLE NIEUN-O-KHIEUKH
-0x86F7	0xB191	# HANGUL SYLLABLE NIEUN-O-THIEUTH
-0x86F8	0xB195	# HANGUL SYLLABLE NIEUN-WA-KIYEOK
-0x86F9	0xB196	# HANGUL SYLLABLE NIEUN-WA-SSANGKIYEOK
-0x86FA	0xB197	# HANGUL SYLLABLE NIEUN-WA-KIYEOKSIOS
-0x86FB	0xB199	# HANGUL SYLLABLE NIEUN-WA-NIEUNCIEUC
-0x86FC	0xB19A	# HANGUL SYLLABLE NIEUN-WA-NIEUNHIEUH
-0x86FD	0xB19B	# HANGUL SYLLABLE NIEUN-WA-TIKEUT
-0x86FE	0xB19D	# HANGUL SYLLABLE NIEUN-WA-RIEULKIYEOK
-0x8741	0xB19E	# HANGUL SYLLABLE NIEUN-WA-RIEULMIEUM
-0x8742	0xB19F	# HANGUL SYLLABLE NIEUN-WA-RIEULPIEUP
-0x8743	0xB1A0	# HANGUL SYLLABLE NIEUN-WA-RIEULSIOS
-0x8744	0xB1A1	# HANGUL SYLLABLE NIEUN-WA-RIEULTHIEUTH
-0x8745	0xB1A2	# HANGUL SYLLABLE NIEUN-WA-RIEULPHIEUPH
-0x8746	0xB1A3	# HANGUL SYLLABLE NIEUN-WA-RIEULHIEUH
-0x8747	0xB1A4	# HANGUL SYLLABLE NIEUN-WA-MIEUM
-0x8748	0xB1A5	# HANGUL SYLLABLE NIEUN-WA-PIEUP
-0x8749	0xB1A6	# HANGUL SYLLABLE NIEUN-WA-PIEUPSIOS
-0x874A	0xB1A7	# HANGUL SYLLABLE NIEUN-WA-SIOS
-0x874B	0xB1A9	# HANGUL SYLLABLE NIEUN-WA-IEUNG
-0x874C	0xB1AA	# HANGUL SYLLABLE NIEUN-WA-CIEUC
-0x874D	0xB1AB	# HANGUL SYLLABLE NIEUN-WA-CHIEUCH
-0x874E	0xB1AC	# HANGUL SYLLABLE NIEUN-WA-KHIEUKH
-0x874F	0xB1AD	# HANGUL SYLLABLE NIEUN-WA-THIEUTH
-0x8750	0xB1AE	# HANGUL SYLLABLE NIEUN-WA-PHIEUPH
-0x8751	0xB1AF	# HANGUL SYLLABLE NIEUN-WA-HIEUH
-0x8752	0xB1B0	# HANGUL SYLLABLE NIEUN-WAE
-0x8753	0xB1B1	# HANGUL SYLLABLE NIEUN-WAE-KIYEOK
-0x8754	0xB1B2	# HANGUL SYLLABLE NIEUN-WAE-SSANGKIYEOK
-0x8755	0xB1B3	# HANGUL SYLLABLE NIEUN-WAE-KIYEOKSIOS
-0x8756	0xB1B4	# HANGUL SYLLABLE NIEUN-WAE-NIEUN
-0x8757	0xB1B5	# HANGUL SYLLABLE NIEUN-WAE-NIEUNCIEUC
-0x8758	0xB1B6	# HANGUL SYLLABLE NIEUN-WAE-NIEUNHIEUH
-0x8759	0xB1B7	# HANGUL SYLLABLE NIEUN-WAE-TIKEUT
-0x875A	0xB1B8	# HANGUL SYLLABLE NIEUN-WAE-RIEUL
-0x8761	0xB1B9	# HANGUL SYLLABLE NIEUN-WAE-RIEULKIYEOK
-0x8762	0xB1BA	# HANGUL SYLLABLE NIEUN-WAE-RIEULMIEUM
-0x8763	0xB1BB	# HANGUL SYLLABLE NIEUN-WAE-RIEULPIEUP
-0x8764	0xB1BC	# HANGUL SYLLABLE NIEUN-WAE-RIEULSIOS
-0x8765	0xB1BD	# HANGUL SYLLABLE NIEUN-WAE-RIEULTHIEUTH
-0x8766	0xB1BE	# HANGUL SYLLABLE NIEUN-WAE-RIEULPHIEUPH
-0x8767	0xB1BF	# HANGUL SYLLABLE NIEUN-WAE-RIEULHIEUH
-0x8768	0xB1C0	# HANGUL SYLLABLE NIEUN-WAE-MIEUM
-0x8769	0xB1C1	# HANGUL SYLLABLE NIEUN-WAE-PIEUP
-0x876A	0xB1C2	# HANGUL SYLLABLE NIEUN-WAE-PIEUPSIOS
-0x876B	0xB1C3	# HANGUL SYLLABLE NIEUN-WAE-SIOS
-0x876C	0xB1C4	# HANGUL SYLLABLE NIEUN-WAE-SSANGSIOS
-0x876D	0xB1C5	# HANGUL SYLLABLE NIEUN-WAE-IEUNG
-0x876E	0xB1C6	# HANGUL SYLLABLE NIEUN-WAE-CIEUC
-0x876F	0xB1C7	# HANGUL SYLLABLE NIEUN-WAE-CHIEUCH
-0x8770	0xB1C8	# HANGUL SYLLABLE NIEUN-WAE-KHIEUKH
-0x8771	0xB1C9	# HANGUL SYLLABLE NIEUN-WAE-THIEUTH
-0x8772	0xB1CA	# HANGUL SYLLABLE NIEUN-WAE-PHIEUPH
-0x8773	0xB1CB	# HANGUL SYLLABLE NIEUN-WAE-HIEUH
-0x8774	0xB1CD	# HANGUL SYLLABLE NIEUN-OE-KIYEOK
-0x8775	0xB1CE	# HANGUL SYLLABLE NIEUN-OE-SSANGKIYEOK
-0x8776	0xB1CF	# HANGUL SYLLABLE NIEUN-OE-KIYEOKSIOS
-0x8777	0xB1D1	# HANGUL SYLLABLE NIEUN-OE-NIEUNCIEUC
-0x8778	0xB1D2	# HANGUL SYLLABLE NIEUN-OE-NIEUNHIEUH
-0x8779	0xB1D3	# HANGUL SYLLABLE NIEUN-OE-TIKEUT
-0x877A	0xB1D5	# HANGUL SYLLABLE NIEUN-OE-RIEULKIYEOK
-0x8781	0xB1D6	# HANGUL SYLLABLE NIEUN-OE-RIEULMIEUM
-0x8782	0xB1D7	# HANGUL SYLLABLE NIEUN-OE-RIEULPIEUP
-0x8783	0xB1D8	# HANGUL SYLLABLE NIEUN-OE-RIEULSIOS
-0x8784	0xB1D9	# HANGUL SYLLABLE NIEUN-OE-RIEULTHIEUTH
-0x8785	0xB1DA	# HANGUL SYLLABLE NIEUN-OE-RIEULPHIEUPH
-0x8786	0xB1DB	# HANGUL SYLLABLE NIEUN-OE-RIEULHIEUH
-0x8787	0xB1DE	# HANGUL SYLLABLE NIEUN-OE-PIEUPSIOS
-0x8788	0xB1E0	# HANGUL SYLLABLE NIEUN-OE-SSANGSIOS
-0x8789	0xB1E1	# HANGUL SYLLABLE NIEUN-OE-IEUNG
-0x878A	0xB1E2	# HANGUL SYLLABLE NIEUN-OE-CIEUC
-0x878B	0xB1E3	# HANGUL SYLLABLE NIEUN-OE-CHIEUCH
-0x878C	0xB1E4	# HANGUL SYLLABLE NIEUN-OE-KHIEUKH
-0x878D	0xB1E5	# HANGUL SYLLABLE NIEUN-OE-THIEUTH
-0x878E	0xB1E6	# HANGUL SYLLABLE NIEUN-OE-PHIEUPH
-0x878F	0xB1E7	# HANGUL SYLLABLE NIEUN-OE-HIEUH
-0x8790	0xB1EA	# HANGUL SYLLABLE NIEUN-YO-SSANGKIYEOK
-0x8791	0xB1EB	# HANGUL SYLLABLE NIEUN-YO-KIYEOKSIOS
-0x8792	0xB1ED	# HANGUL SYLLABLE NIEUN-YO-NIEUNCIEUC
-0x8793	0xB1EE	# HANGUL SYLLABLE NIEUN-YO-NIEUNHIEUH
-0x8794	0xB1EF	# HANGUL SYLLABLE NIEUN-YO-TIKEUT
-0x8795	0xB1F1	# HANGUL SYLLABLE NIEUN-YO-RIEULKIYEOK
-0x8796	0xB1F2	# HANGUL SYLLABLE NIEUN-YO-RIEULMIEUM
-0x8797	0xB1F3	# HANGUL SYLLABLE NIEUN-YO-RIEULPIEUP
-0x8798	0xB1F4	# HANGUL SYLLABLE NIEUN-YO-RIEULSIOS
-0x8799	0xB1F5	# HANGUL SYLLABLE NIEUN-YO-RIEULTHIEUTH
-0x879A	0xB1F6	# HANGUL SYLLABLE NIEUN-YO-RIEULPHIEUPH
-0x879B	0xB1F7	# HANGUL SYLLABLE NIEUN-YO-RIEULHIEUH
-0x879C	0xB1F8	# HANGUL SYLLABLE NIEUN-YO-MIEUM
-0x879D	0xB1FA	# HANGUL SYLLABLE NIEUN-YO-PIEUPSIOS
-0x879E	0xB1FC	# HANGUL SYLLABLE NIEUN-YO-SSANGSIOS
-0x879F	0xB1FE	# HANGUL SYLLABLE NIEUN-YO-CIEUC
-0x87A0	0xB1FF	# HANGUL SYLLABLE NIEUN-YO-CHIEUCH
-0x87A1	0xB200	# HANGUL SYLLABLE NIEUN-YO-KHIEUKH
-0x87A2	0xB201	# HANGUL SYLLABLE NIEUN-YO-THIEUTH
-0x87A3	0xB202	# HANGUL SYLLABLE NIEUN-YO-PHIEUPH
-0x87A4	0xB203	# HANGUL SYLLABLE NIEUN-YO-HIEUH
-0x87A5	0xB206	# HANGUL SYLLABLE NIEUN-U-SSANGKIYEOK
-0x87A6	0xB207	# HANGUL SYLLABLE NIEUN-U-KIYEOKSIOS
-0x87A7	0xB209	# HANGUL SYLLABLE NIEUN-U-NIEUNCIEUC
-0x87A8	0xB20A	# HANGUL SYLLABLE NIEUN-U-NIEUNHIEUH
-0x87A9	0xB20D	# HANGUL SYLLABLE NIEUN-U-RIEULKIYEOK
-0x87AA	0xB20E	# HANGUL SYLLABLE NIEUN-U-RIEULMIEUM
-0x87AB	0xB20F	# HANGUL SYLLABLE NIEUN-U-RIEULPIEUP
-0x87AC	0xB210	# HANGUL SYLLABLE NIEUN-U-RIEULSIOS
-0x87AD	0xB211	# HANGUL SYLLABLE NIEUN-U-RIEULTHIEUTH
-0x87AE	0xB212	# HANGUL SYLLABLE NIEUN-U-RIEULPHIEUPH
-0x87AF	0xB213	# HANGUL SYLLABLE NIEUN-U-RIEULHIEUH
-0x87B0	0xB216	# HANGUL SYLLABLE NIEUN-U-PIEUPSIOS
-0x87B1	0xB218	# HANGUL SYLLABLE NIEUN-U-SSANGSIOS
-0x87B2	0xB21A	# HANGUL SYLLABLE NIEUN-U-CIEUC
-0x87B3	0xB21B	# HANGUL SYLLABLE NIEUN-U-CHIEUCH
-0x87B4	0xB21C	# HANGUL SYLLABLE NIEUN-U-KHIEUKH
-0x87B5	0xB21D	# HANGUL SYLLABLE NIEUN-U-THIEUTH
-0x87B6	0xB21E	# HANGUL SYLLABLE NIEUN-U-PHIEUPH
-0x87B7	0xB21F	# HANGUL SYLLABLE NIEUN-U-HIEUH
-0x87B8	0xB221	# HANGUL SYLLABLE NIEUN-WEO-KIYEOK
-0x87B9	0xB222	# HANGUL SYLLABLE NIEUN-WEO-SSANGKIYEOK
-0x87BA	0xB223	# HANGUL SYLLABLE NIEUN-WEO-KIYEOKSIOS
-0x87BB	0xB224	# HANGUL SYLLABLE NIEUN-WEO-NIEUN
-0x87BC	0xB225	# HANGUL SYLLABLE NIEUN-WEO-NIEUNCIEUC
-0x87BD	0xB226	# HANGUL SYLLABLE NIEUN-WEO-NIEUNHIEUH
-0x87BE	0xB227	# HANGUL SYLLABLE NIEUN-WEO-TIKEUT
-0x87BF	0xB228	# HANGUL SYLLABLE NIEUN-WEO-RIEUL
-0x87C0	0xB229	# HANGUL SYLLABLE NIEUN-WEO-RIEULKIYEOK
-0x87C1	0xB22A	# HANGUL SYLLABLE NIEUN-WEO-RIEULMIEUM
-0x87C2	0xB22B	# HANGUL SYLLABLE NIEUN-WEO-RIEULPIEUP
-0x87C3	0xB22C	# HANGUL SYLLABLE NIEUN-WEO-RIEULSIOS
-0x87C4	0xB22D	# HANGUL SYLLABLE NIEUN-WEO-RIEULTHIEUTH
-0x87C5	0xB22E	# HANGUL SYLLABLE NIEUN-WEO-RIEULPHIEUPH
-0x87C6	0xB22F	# HANGUL SYLLABLE NIEUN-WEO-RIEULHIEUH
-0x87C7	0xB230	# HANGUL SYLLABLE NIEUN-WEO-MIEUM
-0x87C8	0xB231	# HANGUL SYLLABLE NIEUN-WEO-PIEUP
-0x87C9	0xB232	# HANGUL SYLLABLE NIEUN-WEO-PIEUPSIOS
-0x87CA	0xB233	# HANGUL SYLLABLE NIEUN-WEO-SIOS
-0x87CB	0xB235	# HANGUL SYLLABLE NIEUN-WEO-IEUNG
-0x87CC	0xB236	# HANGUL SYLLABLE NIEUN-WEO-CIEUC
-0x87CD	0xB237	# HANGUL SYLLABLE NIEUN-WEO-CHIEUCH
-0x87CE	0xB238	# HANGUL SYLLABLE NIEUN-WEO-KHIEUKH
-0x87CF	0xB239	# HANGUL SYLLABLE NIEUN-WEO-THIEUTH
-0x87D0	0xB23A	# HANGUL SYLLABLE NIEUN-WEO-PHIEUPH
-0x87D1	0xB23B	# HANGUL SYLLABLE NIEUN-WEO-HIEUH
-0x87D2	0xB23D	# HANGUL SYLLABLE NIEUN-WE-KIYEOK
-0x87D3	0xB23E	# HANGUL SYLLABLE NIEUN-WE-SSANGKIYEOK
-0x87D4	0xB23F	# HANGUL SYLLABLE NIEUN-WE-KIYEOKSIOS
-0x87D5	0xB240	# HANGUL SYLLABLE NIEUN-WE-NIEUN
-0x87D6	0xB241	# HANGUL SYLLABLE NIEUN-WE-NIEUNCIEUC
-0x87D7	0xB242	# HANGUL SYLLABLE NIEUN-WE-NIEUNHIEUH
-0x87D8	0xB243	# HANGUL SYLLABLE NIEUN-WE-TIKEUT
-0x87D9	0xB244	# HANGUL SYLLABLE NIEUN-WE-RIEUL
-0x87DA	0xB245	# HANGUL SYLLABLE NIEUN-WE-RIEULKIYEOK
-0x87DB	0xB246	# HANGUL SYLLABLE NIEUN-WE-RIEULMIEUM
-0x87DC	0xB247	# HANGUL SYLLABLE NIEUN-WE-RIEULPIEUP
-0x87DD	0xB248	# HANGUL SYLLABLE NIEUN-WE-RIEULSIOS
-0x87DE	0xB249	# HANGUL SYLLABLE NIEUN-WE-RIEULTHIEUTH
-0x87DF	0xB24A	# HANGUL SYLLABLE NIEUN-WE-RIEULPHIEUPH
-0x87E0	0xB24B	# HANGUL SYLLABLE NIEUN-WE-RIEULHIEUH
-0x87E1	0xB24C	# HANGUL SYLLABLE NIEUN-WE-MIEUM
-0x87E2	0xB24D	# HANGUL SYLLABLE NIEUN-WE-PIEUP
-0x87E3	0xB24E	# HANGUL SYLLABLE NIEUN-WE-PIEUPSIOS
-0x87E4	0xB24F	# HANGUL SYLLABLE NIEUN-WE-SIOS
-0x87E5	0xB250	# HANGUL SYLLABLE NIEUN-WE-SSANGSIOS
-0x87E6	0xB251	# HANGUL SYLLABLE NIEUN-WE-IEUNG
-0x87E7	0xB252	# HANGUL SYLLABLE NIEUN-WE-CIEUC
-0x87E8	0xB253	# HANGUL SYLLABLE NIEUN-WE-CHIEUCH
-0x87E9	0xB254	# HANGUL SYLLABLE NIEUN-WE-KHIEUKH
-0x87EA	0xB255	# HANGUL SYLLABLE NIEUN-WE-THIEUTH
-0x87EB	0xB256	# HANGUL SYLLABLE NIEUN-WE-PHIEUPH
-0x87EC	0xB257	# HANGUL SYLLABLE NIEUN-WE-HIEUH
-0x87ED	0xB259	# HANGUL SYLLABLE NIEUN-WI-KIYEOK
-0x87EE	0xB25A	# HANGUL SYLLABLE NIEUN-WI-SSANGKIYEOK
-0x87EF	0xB25B	# HANGUL SYLLABLE NIEUN-WI-KIYEOKSIOS
-0x87F0	0xB25D	# HANGUL SYLLABLE NIEUN-WI-NIEUNCIEUC
-0x87F1	0xB25E	# HANGUL SYLLABLE NIEUN-WI-NIEUNHIEUH
-0x87F2	0xB25F	# HANGUL SYLLABLE NIEUN-WI-TIKEUT
-0x87F3	0xB261	# HANGUL SYLLABLE NIEUN-WI-RIEULKIYEOK
-0x87F4	0xB262	# HANGUL SYLLABLE NIEUN-WI-RIEULMIEUM
-0x87F5	0xB263	# HANGUL SYLLABLE NIEUN-WI-RIEULPIEUP
-0x87F6	0xB264	# HANGUL SYLLABLE NIEUN-WI-RIEULSIOS
-0x87F7	0xB265	# HANGUL SYLLABLE NIEUN-WI-RIEULTHIEUTH
-0x87F8	0xB266	# HANGUL SYLLABLE NIEUN-WI-RIEULPHIEUPH
-0x87F9	0xB267	# HANGUL SYLLABLE NIEUN-WI-RIEULHIEUH
-0x87FA	0xB26A	# HANGUL SYLLABLE NIEUN-WI-PIEUPSIOS
-0x87FB	0xB26B	# HANGUL SYLLABLE NIEUN-WI-SIOS
-0x87FC	0xB26C	# HANGUL SYLLABLE NIEUN-WI-SSANGSIOS
-0x87FD	0xB26D	# HANGUL SYLLABLE NIEUN-WI-IEUNG
-0x87FE	0xB26E	# HANGUL SYLLABLE NIEUN-WI-CIEUC
-0x8841	0xB26F	# HANGUL SYLLABLE NIEUN-WI-CHIEUCH
-0x8842	0xB270	# HANGUL SYLLABLE NIEUN-WI-KHIEUKH
-0x8843	0xB271	# HANGUL SYLLABLE NIEUN-WI-THIEUTH
-0x8844	0xB272	# HANGUL SYLLABLE NIEUN-WI-PHIEUPH
-0x8845	0xB273	# HANGUL SYLLABLE NIEUN-WI-HIEUH
-0x8846	0xB276	# HANGUL SYLLABLE NIEUN-YU-SSANGKIYEOK
-0x8847	0xB277	# HANGUL SYLLABLE NIEUN-YU-KIYEOKSIOS
-0x8848	0xB278	# HANGUL SYLLABLE NIEUN-YU-NIEUN
-0x8849	0xB279	# HANGUL SYLLABLE NIEUN-YU-NIEUNCIEUC
-0x884A	0xB27A	# HANGUL SYLLABLE NIEUN-YU-NIEUNHIEUH
-0x884B	0xB27B	# HANGUL SYLLABLE NIEUN-YU-TIKEUT
-0x884C	0xB27D	# HANGUL SYLLABLE NIEUN-YU-RIEULKIYEOK
-0x884D	0xB27E	# HANGUL SYLLABLE NIEUN-YU-RIEULMIEUM
-0x884E	0xB27F	# HANGUL SYLLABLE NIEUN-YU-RIEULPIEUP
-0x884F	0xB280	# HANGUL SYLLABLE NIEUN-YU-RIEULSIOS
-0x8850	0xB281	# HANGUL SYLLABLE NIEUN-YU-RIEULTHIEUTH
-0x8851	0xB282	# HANGUL SYLLABLE NIEUN-YU-RIEULPHIEUPH
-0x8852	0xB283	# HANGUL SYLLABLE NIEUN-YU-RIEULHIEUH
-0x8853	0xB286	# HANGUL SYLLABLE NIEUN-YU-PIEUPSIOS
-0x8854	0xB287	# HANGUL SYLLABLE NIEUN-YU-SIOS
-0x8855	0xB288	# HANGUL SYLLABLE NIEUN-YU-SSANGSIOS
-0x8856	0xB28A	# HANGUL SYLLABLE NIEUN-YU-CIEUC
-0x8857	0xB28B	# HANGUL SYLLABLE NIEUN-YU-CHIEUCH
-0x8858	0xB28C	# HANGUL SYLLABLE NIEUN-YU-KHIEUKH
-0x8859	0xB28D	# HANGUL SYLLABLE NIEUN-YU-THIEUTH
-0x885A	0xB28E	# HANGUL SYLLABLE NIEUN-YU-PHIEUPH
-0x8861	0xB28F	# HANGUL SYLLABLE NIEUN-YU-HIEUH
-0x8862	0xB292	# HANGUL SYLLABLE NIEUN-EU-SSANGKIYEOK
-0x8863	0xB293	# HANGUL SYLLABLE NIEUN-EU-KIYEOKSIOS
-0x8864	0xB295	# HANGUL SYLLABLE NIEUN-EU-NIEUNCIEUC
-0x8865	0xB296	# HANGUL SYLLABLE NIEUN-EU-NIEUNHIEUH
-0x8866	0xB297	# HANGUL SYLLABLE NIEUN-EU-TIKEUT
-0x8867	0xB29B	# HANGUL SYLLABLE NIEUN-EU-RIEULPIEUP
-0x8868	0xB29C	# HANGUL SYLLABLE NIEUN-EU-RIEULSIOS
-0x8869	0xB29D	# HANGUL SYLLABLE NIEUN-EU-RIEULTHIEUTH
-0x886A	0xB29E	# HANGUL SYLLABLE NIEUN-EU-RIEULPHIEUPH
-0x886B	0xB29F	# HANGUL SYLLABLE NIEUN-EU-RIEULHIEUH
-0x886C	0xB2A2	# HANGUL SYLLABLE NIEUN-EU-PIEUPSIOS
-0x886D	0xB2A4	# HANGUL SYLLABLE NIEUN-EU-SSANGSIOS
-0x886E	0xB2A7	# HANGUL SYLLABLE NIEUN-EU-CHIEUCH
-0x886F	0xB2A8	# HANGUL SYLLABLE NIEUN-EU-KHIEUKH
-0x8870	0xB2A9	# HANGUL SYLLABLE NIEUN-EU-THIEUTH
-0x8871	0xB2AB	# HANGUL SYLLABLE NIEUN-EU-HIEUH
-0x8872	0xB2AD	# HANGUL SYLLABLE NIEUN-YI-KIYEOK
-0x8873	0xB2AE	# HANGUL SYLLABLE NIEUN-YI-SSANGKIYEOK
-0x8874	0xB2AF	# HANGUL SYLLABLE NIEUN-YI-KIYEOKSIOS
-0x8875	0xB2B1	# HANGUL SYLLABLE NIEUN-YI-NIEUNCIEUC
-0x8876	0xB2B2	# HANGUL SYLLABLE NIEUN-YI-NIEUNHIEUH
-0x8877	0xB2B3	# HANGUL SYLLABLE NIEUN-YI-TIKEUT
-0x8878	0xB2B5	# HANGUL SYLLABLE NIEUN-YI-RIEULKIYEOK
-0x8879	0xB2B6	# HANGUL SYLLABLE NIEUN-YI-RIEULMIEUM
-0x887A	0xB2B7	# HANGUL SYLLABLE NIEUN-YI-RIEULPIEUP
-0x8881	0xB2B8	# HANGUL SYLLABLE NIEUN-YI-RIEULSIOS
-0x8882	0xB2B9	# HANGUL SYLLABLE NIEUN-YI-RIEULTHIEUTH
-0x8883	0xB2BA	# HANGUL SYLLABLE NIEUN-YI-RIEULPHIEUPH
-0x8884	0xB2BB	# HANGUL SYLLABLE NIEUN-YI-RIEULHIEUH
-0x8885	0xB2BC	# HANGUL SYLLABLE NIEUN-YI-MIEUM
-0x8886	0xB2BD	# HANGUL SYLLABLE NIEUN-YI-PIEUP
-0x8887	0xB2BE	# HANGUL SYLLABLE NIEUN-YI-PIEUPSIOS
-0x8888	0xB2BF	# HANGUL SYLLABLE NIEUN-YI-SIOS
-0x8889	0xB2C0	# HANGUL SYLLABLE NIEUN-YI-SSANGSIOS
-0x888A	0xB2C1	# HANGUL SYLLABLE NIEUN-YI-IEUNG
-0x888B	0xB2C2	# HANGUL SYLLABLE NIEUN-YI-CIEUC
-0x888C	0xB2C3	# HANGUL SYLLABLE NIEUN-YI-CHIEUCH
-0x888D	0xB2C4	# HANGUL SYLLABLE NIEUN-YI-KHIEUKH
-0x888E	0xB2C5	# HANGUL SYLLABLE NIEUN-YI-THIEUTH
-0x888F	0xB2C6	# HANGUL SYLLABLE NIEUN-YI-PHIEUPH
-0x8890	0xB2C7	# HANGUL SYLLABLE NIEUN-YI-HIEUH
-0x8891	0xB2CA	# HANGUL SYLLABLE NIEUN-I-SSANGKIYEOK
-0x8892	0xB2CB	# HANGUL SYLLABLE NIEUN-I-KIYEOKSIOS
-0x8893	0xB2CD	# HANGUL SYLLABLE NIEUN-I-NIEUNCIEUC
-0x8894	0xB2CE	# HANGUL SYLLABLE NIEUN-I-NIEUNHIEUH
-0x8895	0xB2CF	# HANGUL SYLLABLE NIEUN-I-TIKEUT
-0x8896	0xB2D1	# HANGUL SYLLABLE NIEUN-I-RIEULKIYEOK
-0x8897	0xB2D3	# HANGUL SYLLABLE NIEUN-I-RIEULPIEUP--<3/22/95>
-0x8898	0xB2D4	# HANGUL SYLLABLE NIEUN-I-RIEULSIOS---<3/22/95>
-0x8899	0xB2D5	# HANGUL SYLLABLE NIEUN-I-RIEULTHIEUTH<3/22/95>
-0x889A	0xB2D6	# HANGUL SYLLABLE NIEUN-I-RIEULPHIEUPH<3/22/95>
-0x889B	0xB2D7	# HANGUL SYLLABLE NIEUN-I-RIEULHIEUH
-0x889C	0xB2DA	# HANGUL SYLLABLE NIEUN-I-PIEUPSIOS
-0x889D	0xB2DC	# HANGUL SYLLABLE NIEUN-I-SSANGSIOS
-0x889E	0xB2DE	# HANGUL SYLLABLE NIEUN-I-CIEUC
-0x889F	0xB2DF	# HANGUL SYLLABLE NIEUN-I-CHIEUCH
-0x88A0	0xB2E0	# HANGUL SYLLABLE NIEUN-I-KHIEUKH
-0x88A1	0xB2E1	# HANGUL SYLLABLE NIEUN-I-THIEUTH
-0x88A2	0xB2E3	# HANGUL SYLLABLE NIEUN-I-HIEUH
-0x88A3	0xB2E7	# HANGUL SYLLABLE TIKEUT-A-KIYEOKSIOS
-0x88A4	0xB2E9	# HANGUL SYLLABLE TIKEUT-A-NIEUNCIEUC
-0x88A5	0xB2EA	# HANGUL SYLLABLE TIKEUT-A-NIEUNHIEUH
-0x88A6	0xB2F0	# HANGUL SYLLABLE TIKEUT-A-RIEULSIOS
-0x88A7	0xB2F1	# HANGUL SYLLABLE TIKEUT-A-RIEULTHIEUTH
-0x88A8	0xB2F2	# HANGUL SYLLABLE TIKEUT-A-RIEULPHIEUPH
-0x88A9	0xB2F6	# HANGUL SYLLABLE TIKEUT-A-PIEUPSIOS
-0x88AA	0xB2FC	# HANGUL SYLLABLE TIKEUT-A-KHIEUKH
-0x88AB	0xB2FD	# HANGUL SYLLABLE TIKEUT-A-THIEUTH
-0x88AC	0xB2FE	# HANGUL SYLLABLE TIKEUT-A-PHIEUPH
-0x88AD	0xB302	# HANGUL SYLLABLE TIKEUT-AE-SSANGKIYEOK
-0x88AE	0xB303	# HANGUL SYLLABLE TIKEUT-AE-KIYEOKSIOS
-0x88AF	0xB305	# HANGUL SYLLABLE TIKEUT-AE-NIEUNCIEUC
-0x88B0	0xB306	# HANGUL SYLLABLE TIKEUT-AE-NIEUNHIEUH
-0x88B1	0xB307	# HANGUL SYLLABLE TIKEUT-AE-TIKEUT
-0x88B2	0xB309	# HANGUL SYLLABLE TIKEUT-AE-RIEULKIYEOK
-0x88B3	0xB30A	# HANGUL SYLLABLE TIKEUT-AE-RIEULMIEUM
-0x88B4	0xB30B	# HANGUL SYLLABLE TIKEUT-AE-RIEULPIEUP
-0x88B5	0xB30C	# HANGUL SYLLABLE TIKEUT-AE-RIEULSIOS
-0x88B6	0xB30D	# HANGUL SYLLABLE TIKEUT-AE-RIEULTHIEUTH
-0x88B7	0xB30E	# HANGUL SYLLABLE TIKEUT-AE-RIEULPHIEUPH
-0x88B8	0xB30F	# HANGUL SYLLABLE TIKEUT-AE-RIEULHIEUH
-0x88B9	0xB312	# HANGUL SYLLABLE TIKEUT-AE-PIEUPSIOS
-0x88BA	0xB316	# HANGUL SYLLABLE TIKEUT-AE-CIEUC
-0x88BB	0xB317	# HANGUL SYLLABLE TIKEUT-AE-CHIEUCH
-0x88BC	0xB318	# HANGUL SYLLABLE TIKEUT-AE-KHIEUKH
-0x88BD	0xB319	# HANGUL SYLLABLE TIKEUT-AE-THIEUTH
-0x88BE	0xB31A	# HANGUL SYLLABLE TIKEUT-AE-PHIEUPH
-0x88BF	0xB31B	# HANGUL SYLLABLE TIKEUT-AE-HIEUH
-0x88C0	0xB31D	# HANGUL SYLLABLE TIKEUT-YA-KIYEOK
-0x88C1	0xB31E	# HANGUL SYLLABLE TIKEUT-YA-SSANGKIYEOK
-0x88C2	0xB31F	# HANGUL SYLLABLE TIKEUT-YA-KIYEOKSIOS
-0x88C3	0xB320	# HANGUL SYLLABLE TIKEUT-YA-NIEUN
-0x88C4	0xB321	# HANGUL SYLLABLE TIKEUT-YA-NIEUNCIEUC
-0x88C5	0xB322	# HANGUL SYLLABLE TIKEUT-YA-NIEUNHIEUH
-0x88C6	0xB323	# HANGUL SYLLABLE TIKEUT-YA-TIKEUT
-0x88C7	0xB324	# HANGUL SYLLABLE TIKEUT-YA-RIEUL
-0x88C8	0xB325	# HANGUL SYLLABLE TIKEUT-YA-RIEULKIYEOK
-0x88C9	0xB326	# HANGUL SYLLABLE TIKEUT-YA-RIEULMIEUM
-0x88CA	0xB327	# HANGUL SYLLABLE TIKEUT-YA-RIEULPIEUP
-0x88CB	0xB328	# HANGUL SYLLABLE TIKEUT-YA-RIEULSIOS
-0x88CC	0xB329	# HANGUL SYLLABLE TIKEUT-YA-RIEULTHIEUTH
-0x88CD	0xB32A	# HANGUL SYLLABLE TIKEUT-YA-RIEULPHIEUPH
-0x88CE	0xB32B	# HANGUL SYLLABLE TIKEUT-YA-RIEULHIEUH
-0x88CF	0xB32C	# HANGUL SYLLABLE TIKEUT-YA-MIEUM
-0x88D0	0xB32D	# HANGUL SYLLABLE TIKEUT-YA-PIEUP
-0x88D1	0xB32E	# HANGUL SYLLABLE TIKEUT-YA-PIEUPSIOS
-0x88D2	0xB32F	# HANGUL SYLLABLE TIKEUT-YA-SIOS
-0x88D3	0xB330	# HANGUL SYLLABLE TIKEUT-YA-SSANGSIOS
-0x88D4	0xB331	# HANGUL SYLLABLE TIKEUT-YA-IEUNG
-0x88D5	0xB332	# HANGUL SYLLABLE TIKEUT-YA-CIEUC
-0x88D6	0xB333	# HANGUL SYLLABLE TIKEUT-YA-CHIEUCH
-0x88D7	0xB334	# HANGUL SYLLABLE TIKEUT-YA-KHIEUKH
-0x88D8	0xB335	# HANGUL SYLLABLE TIKEUT-YA-THIEUTH
-0x88D9	0xB336	# HANGUL SYLLABLE TIKEUT-YA-PHIEUPH
-0x88DA	0xB337	# HANGUL SYLLABLE TIKEUT-YA-HIEUH
-0x88DB	0xB338	# HANGUL SYLLABLE TIKEUT-YAE
-0x88DC	0xB339	# HANGUL SYLLABLE TIKEUT-YAE-KIYEOK
-0x88DD	0xB33A	# HANGUL SYLLABLE TIKEUT-YAE-SSANGKIYEOK
-0x88DE	0xB33B	# HANGUL SYLLABLE TIKEUT-YAE-KIYEOKSIOS
-0x88DF	0xB33C	# HANGUL SYLLABLE TIKEUT-YAE-NIEUN
-0x88E0	0xB33D	# HANGUL SYLLABLE TIKEUT-YAE-NIEUNCIEUC
-0x88E1	0xB33E	# HANGUL SYLLABLE TIKEUT-YAE-NIEUNHIEUH
-0x88E2	0xB33F	# HANGUL SYLLABLE TIKEUT-YAE-TIKEUT
-0x88E3	0xB340	# HANGUL SYLLABLE TIKEUT-YAE-RIEUL
-0x88E4	0xB341	# HANGUL SYLLABLE TIKEUT-YAE-RIEULKIYEOK
-0x88E5	0xB342	# HANGUL SYLLABLE TIKEUT-YAE-RIEULMIEUM
-0x88E6	0xB343	# HANGUL SYLLABLE TIKEUT-YAE-RIEULPIEUP
-0x88E7	0xB344	# HANGUL SYLLABLE TIKEUT-YAE-RIEULSIOS
-0x88E8	0xB345	# HANGUL SYLLABLE TIKEUT-YAE-RIEULTHIEUTH
-0x88E9	0xB346	# HANGUL SYLLABLE TIKEUT-YAE-RIEULPHIEUPH
-0x88EA	0xB347	# HANGUL SYLLABLE TIKEUT-YAE-RIEULHIEUH
-0x88EB	0xB348	# HANGUL SYLLABLE TIKEUT-YAE-MIEUM
-0x88EC	0xB349	# HANGUL SYLLABLE TIKEUT-YAE-PIEUP
-0x88ED	0xB34A	# HANGUL SYLLABLE TIKEUT-YAE-PIEUPSIOS
-0x88EE	0xB34B	# HANGUL SYLLABLE TIKEUT-YAE-SIOS
-0x88EF	0xB34C	# HANGUL SYLLABLE TIKEUT-YAE-SSANGSIOS
-0x88F0	0xB34D	# HANGUL SYLLABLE TIKEUT-YAE-IEUNG
-0x88F1	0xB34E	# HANGUL SYLLABLE TIKEUT-YAE-CIEUC
-0x88F2	0xB34F	# HANGUL SYLLABLE TIKEUT-YAE-CHIEUCH
-0x88F3	0xB350	# HANGUL SYLLABLE TIKEUT-YAE-KHIEUKH
-0x88F4	0xB351	# HANGUL SYLLABLE TIKEUT-YAE-THIEUTH
-0x88F5	0xB352	# HANGUL SYLLABLE TIKEUT-YAE-PHIEUPH
-0x88F6	0xB353	# HANGUL SYLLABLE TIKEUT-YAE-HIEUH
-0x88F7	0xB357	# HANGUL SYLLABLE TIKEUT-EO-KIYEOKSIOS
-0x88F8	0xB359	# HANGUL SYLLABLE TIKEUT-EO-NIEUNCIEUC
-0x88F9	0xB35A	# HANGUL SYLLABLE TIKEUT-EO-NIEUNHIEUH
-0x88FA	0xB35D	# HANGUL SYLLABLE TIKEUT-EO-RIEULKIYEOK
-0x88FB	0xB360	# HANGUL SYLLABLE TIKEUT-EO-RIEULSIOS
-0x88FC	0xB361	# HANGUL SYLLABLE TIKEUT-EO-RIEULTHIEUTH
-0x88FD	0xB362	# HANGUL SYLLABLE TIKEUT-EO-RIEULPHIEUPH
-0x88FE	0xB363	# HANGUL SYLLABLE TIKEUT-EO-RIEULHIEUH
-0x8941	0xB366	# HANGUL SYLLABLE TIKEUT-EO-PIEUPSIOS
-0x8942	0xB368	# HANGUL SYLLABLE TIKEUT-EO-SSANGSIOS
-0x8943	0xB36A	# HANGUL SYLLABLE TIKEUT-EO-CIEUC
-0x8944	0xB36C	# HANGUL SYLLABLE TIKEUT-EO-KHIEUKH
-0x8945	0xB36D	# HANGUL SYLLABLE TIKEUT-EO-THIEUTH
-0x8946	0xB36F	# HANGUL SYLLABLE TIKEUT-EO-HIEUH
-0x8947	0xB372	# HANGUL SYLLABLE TIKEUT-E-SSANGKIYEOK
-0x8948	0xB373	# HANGUL SYLLABLE TIKEUT-E-KIYEOKSIOS
-0x8949	0xB375	# HANGUL SYLLABLE TIKEUT-E-NIEUNCIEUC
-0x894A	0xB376	# HANGUL SYLLABLE TIKEUT-E-NIEUNHIEUH
-0x894B	0xB377	# HANGUL SYLLABLE TIKEUT-E-TIKEUT
-0x894C	0xB379	# HANGUL SYLLABLE TIKEUT-E-RIEULKIYEOK
-0x894D	0xB37A	# HANGUL SYLLABLE TIKEUT-E-RIEULMIEUM
-0x894E	0xB37B	# HANGUL SYLLABLE TIKEUT-E-RIEULPIEUP
-0x894F	0xB37C	# HANGUL SYLLABLE TIKEUT-E-RIEULSIOS
-0x8950	0xB37D	# HANGUL SYLLABLE TIKEUT-E-RIEULTHIEUTH
-0x8951	0xB37E	# HANGUL SYLLABLE TIKEUT-E-RIEULPHIEUPH
-0x8952	0xB37F	# HANGUL SYLLABLE TIKEUT-E-RIEULHIEUH
-0x8953	0xB382	# HANGUL SYLLABLE TIKEUT-E-PIEUPSIOS
-0x8954	0xB386	# HANGUL SYLLABLE TIKEUT-E-CIEUC
-0x8955	0xB387	# HANGUL SYLLABLE TIKEUT-E-CHIEUCH
-0x8956	0xB388	# HANGUL SYLLABLE TIKEUT-E-KHIEUKH
-0x8957	0xB389	# HANGUL SYLLABLE TIKEUT-E-THIEUTH
-0x8958	0xB38A	# HANGUL SYLLABLE TIKEUT-E-PHIEUPH
-0x8959	0xB38B	# HANGUL SYLLABLE TIKEUT-E-HIEUH
-0x895A	0xB38D	# HANGUL SYLLABLE TIKEUT-YEO-KIYEOK
-0x8961	0xB38E	# HANGUL SYLLABLE TIKEUT-YEO-SSANGKIYEOK
-0x8962	0xB38F	# HANGUL SYLLABLE TIKEUT-YEO-KIYEOKSIOS
-0x8963	0xB391	# HANGUL SYLLABLE TIKEUT-YEO-NIEUNCIEUC
-0x8964	0xB392	# HANGUL SYLLABLE TIKEUT-YEO-NIEUNHIEUH
-0x8965	0xB393	# HANGUL SYLLABLE TIKEUT-YEO-TIKEUT
-0x8966	0xB395	# HANGUL SYLLABLE TIKEUT-YEO-RIEULKIYEOK
-0x8967	0xB396	# HANGUL SYLLABLE TIKEUT-YEO-RIEULMIEUM
-0x8968	0xB397	# HANGUL SYLLABLE TIKEUT-YEO-RIEULPIEUP
-0x8969	0xB398	# HANGUL SYLLABLE TIKEUT-YEO-RIEULSIOS
-0x896A	0xB399	# HANGUL SYLLABLE TIKEUT-YEO-RIEULTHIEUTH
-0x896B	0xB39A	# HANGUL SYLLABLE TIKEUT-YEO-RIEULPHIEUPH
-0x896C	0xB39B	# HANGUL SYLLABLE TIKEUT-YEO-RIEULHIEUH
-0x896D	0xB39C	# HANGUL SYLLABLE TIKEUT-YEO-MIEUM
-0x896E	0xB39D	# HANGUL SYLLABLE TIKEUT-YEO-PIEUP
-0x896F	0xB39E	# HANGUL SYLLABLE TIKEUT-YEO-PIEUPSIOS
-0x8970	0xB39F	# HANGUL SYLLABLE TIKEUT-YEO-SIOS
-0x8971	0xB3A2	# HANGUL SYLLABLE TIKEUT-YEO-CIEUC
-0x8972	0xB3A3	# HANGUL SYLLABLE TIKEUT-YEO-CHIEUCH
-0x8973	0xB3A4	# HANGUL SYLLABLE TIKEUT-YEO-KHIEUKH
-0x8974	0xB3A5	# HANGUL SYLLABLE TIKEUT-YEO-THIEUTH
-0x8975	0xB3A6	# HANGUL SYLLABLE TIKEUT-YEO-PHIEUPH
-0x8976	0xB3A7	# HANGUL SYLLABLE TIKEUT-YEO-HIEUH
-0x8977	0xB3A9	# HANGUL SYLLABLE TIKEUT-YE-KIYEOK
-0x8978	0xB3AA	# HANGUL SYLLABLE TIKEUT-YE-SSANGKIYEOK
-0x8979	0xB3AB	# HANGUL SYLLABLE TIKEUT-YE-KIYEOKSIOS
-0x897A	0xB3AD	# HANGUL SYLLABLE TIKEUT-YE-NIEUNCIEUC
-0x8981	0xB3AE	# HANGUL SYLLABLE TIKEUT-YE-NIEUNHIEUH
-0x8982	0xB3AF	# HANGUL SYLLABLE TIKEUT-YE-TIKEUT
-0x8983	0xB3B0	# HANGUL SYLLABLE TIKEUT-YE-RIEUL
-0x8984	0xB3B1	# HANGUL SYLLABLE TIKEUT-YE-RIEULKIYEOK
-0x8985	0xB3B2	# HANGUL SYLLABLE TIKEUT-YE-RIEULMIEUM
-0x8986	0xB3B3	# HANGUL SYLLABLE TIKEUT-YE-RIEULPIEUP
-0x8987	0xB3B4	# HANGUL SYLLABLE TIKEUT-YE-RIEULSIOS
-0x8988	0xB3B5	# HANGUL SYLLABLE TIKEUT-YE-RIEULTHIEUTH
-0x8989	0xB3B6	# HANGUL SYLLABLE TIKEUT-YE-RIEULPHIEUPH
-0x898A	0xB3B7	# HANGUL SYLLABLE TIKEUT-YE-RIEULHIEUH
-0x898B	0xB3B8	# HANGUL SYLLABLE TIKEUT-YE-MIEUM
-0x898C	0xB3B9	# HANGUL SYLLABLE TIKEUT-YE-PIEUP
-0x898D	0xB3BA	# HANGUL SYLLABLE TIKEUT-YE-PIEUPSIOS
-0x898E	0xB3BB	# HANGUL SYLLABLE TIKEUT-YE-SIOS
-0x898F	0xB3BC	# HANGUL SYLLABLE TIKEUT-YE-SSANGSIOS
-0x8990	0xB3BD	# HANGUL SYLLABLE TIKEUT-YE-IEUNG
-0x8991	0xB3BE	# HANGUL SYLLABLE TIKEUT-YE-CIEUC
-0x8992	0xB3BF	# HANGUL SYLLABLE TIKEUT-YE-CHIEUCH
-0x8993	0xB3C0	# HANGUL SYLLABLE TIKEUT-YE-KHIEUKH
-0x8994	0xB3C1	# HANGUL SYLLABLE TIKEUT-YE-THIEUTH
-0x8995	0xB3C2	# HANGUL SYLLABLE TIKEUT-YE-PHIEUPH
-0x8996	0xB3C3	# HANGUL SYLLABLE TIKEUT-YE-HIEUH
-0x8997	0xB3C6	# HANGUL SYLLABLE TIKEUT-O-SSANGKIYEOK
-0x8998	0xB3C7	# HANGUL SYLLABLE TIKEUT-O-KIYEOKSIOS
-0x8999	0xB3C9	# HANGUL SYLLABLE TIKEUT-O-NIEUNCIEUC
-0x899A	0xB3CA	# HANGUL SYLLABLE TIKEUT-O-NIEUNHIEUH
-0x899B	0xB3CD	# HANGUL SYLLABLE TIKEUT-O-RIEULKIYEOK
-0x899C	0xB3CF	# HANGUL SYLLABLE TIKEUT-O-RIEULPIEUP
-0x899D	0xB3D1	# HANGUL SYLLABLE TIKEUT-O-RIEULTHIEUTH
-0x899E	0xB3D2	# HANGUL SYLLABLE TIKEUT-O-RIEULPHIEUPH
-0x899F	0xB3D3	# HANGUL SYLLABLE TIKEUT-O-RIEULHIEUH
-0x89A0	0xB3D6	# HANGUL SYLLABLE TIKEUT-O-PIEUPSIOS
-0x89A1	0xB3D8	# HANGUL SYLLABLE TIKEUT-O-SSANGSIOS
-0x89A2	0xB3DA	# HANGUL SYLLABLE TIKEUT-O-CIEUC
-0x89A3	0xB3DC	# HANGUL SYLLABLE TIKEUT-O-KHIEUKH
-0x89A4	0xB3DE	# HANGUL SYLLABLE TIKEUT-O-PHIEUPH
-0x89A5	0xB3DF	# HANGUL SYLLABLE TIKEUT-O-HIEUH
-0x89A6	0xB3E1	# HANGUL SYLLABLE TIKEUT-WA-KIYEOK
-0x89A7	0xB3E2	# HANGUL SYLLABLE TIKEUT-WA-SSANGKIYEOK
-0x89A8	0xB3E3	# HANGUL SYLLABLE TIKEUT-WA-KIYEOKSIOS
-0x89A9	0xB3E5	# HANGUL SYLLABLE TIKEUT-WA-NIEUNCIEUC
-0x89AA	0xB3E6	# HANGUL SYLLABLE TIKEUT-WA-NIEUNHIEUH
-0x89AB	0xB3E7	# HANGUL SYLLABLE TIKEUT-WA-TIKEUT
-0x89AC	0xB3E9	# HANGUL SYLLABLE TIKEUT-WA-RIEULKIYEOK
-0x89AD	0xB3EA	# HANGUL SYLLABLE TIKEUT-WA-RIEULMIEUM
-0x89AE	0xB3EB	# HANGUL SYLLABLE TIKEUT-WA-RIEULPIEUP
-0x89AF	0xB3EC	# HANGUL SYLLABLE TIKEUT-WA-RIEULSIOS
-0x89B0	0xB3ED	# HANGUL SYLLABLE TIKEUT-WA-RIEULTHIEUTH
-0x89B1	0xB3EE	# HANGUL SYLLABLE TIKEUT-WA-RIEULPHIEUPH
-0x89B2	0xB3EF	# HANGUL SYLLABLE TIKEUT-WA-RIEULHIEUH
-0x89B3	0xB3F0	# HANGUL SYLLABLE TIKEUT-WA-MIEUM
-0x89B4	0xB3F1	# HANGUL SYLLABLE TIKEUT-WA-PIEUP
-0x89B5	0xB3F2	# HANGUL SYLLABLE TIKEUT-WA-PIEUPSIOS
-0x89B6	0xB3F3	# HANGUL SYLLABLE TIKEUT-WA-SIOS
-0x89B7	0xB3F4	# HANGUL SYLLABLE TIKEUT-WA-SSANGSIOS
-0x89B8	0xB3F5	# HANGUL SYLLABLE TIKEUT-WA-IEUNG
-0x89B9	0xB3F6	# HANGUL SYLLABLE TIKEUT-WA-CIEUC
-0x89BA	0xB3F7	# HANGUL SYLLABLE TIKEUT-WA-CHIEUCH
-0x89BB	0xB3F8	# HANGUL SYLLABLE TIKEUT-WA-KHIEUKH
-0x89BC	0xB3F9	# HANGUL SYLLABLE TIKEUT-WA-THIEUTH
-0x89BD	0xB3FA	# HANGUL SYLLABLE TIKEUT-WA-PHIEUPH
-0x89BE	0xB3FB	# HANGUL SYLLABLE TIKEUT-WA-HIEUH
-0x89BF	0xB3FD	# HANGUL SYLLABLE TIKEUT-WAE-KIYEOK
-0x89C0	0xB3FE	# HANGUL SYLLABLE TIKEUT-WAE-SSANGKIYEOK
-0x89C1	0xB3FF	# HANGUL SYLLABLE TIKEUT-WAE-KIYEOKSIOS
-0x89C2	0xB400	# HANGUL SYLLABLE TIKEUT-WAE-NIEUN
-0x89C3	0xB401	# HANGUL SYLLABLE TIKEUT-WAE-NIEUNCIEUC
-0x89C4	0xB402	# HANGUL SYLLABLE TIKEUT-WAE-NIEUNHIEUH
-0x89C5	0xB403	# HANGUL SYLLABLE TIKEUT-WAE-TIKEUT
-0x89C6	0xB404	# HANGUL SYLLABLE TIKEUT-WAE-RIEUL
-0x89C7	0xB405	# HANGUL SYLLABLE TIKEUT-WAE-RIEULKIYEOK
-0x89C8	0xB406	# HANGUL SYLLABLE TIKEUT-WAE-RIEULMIEUM
-0x89C9	0xB407	# HANGUL SYLLABLE TIKEUT-WAE-RIEULPIEUP
-0x89CA	0xB408	# HANGUL SYLLABLE TIKEUT-WAE-RIEULSIOS
-0x89CB	0xB409	# HANGUL SYLLABLE TIKEUT-WAE-RIEULTHIEUTH
-0x89CC	0xB40A	# HANGUL SYLLABLE TIKEUT-WAE-RIEULPHIEUPH
-0x89CD	0xB40B	# HANGUL SYLLABLE TIKEUT-WAE-RIEULHIEUH
-0x89CE	0xB40C	# HANGUL SYLLABLE TIKEUT-WAE-MIEUM
-0x89CF	0xB40D	# HANGUL SYLLABLE TIKEUT-WAE-PIEUP
-0x89D0	0xB40E	# HANGUL SYLLABLE TIKEUT-WAE-PIEUPSIOS
-0x89D1	0xB40F	# HANGUL SYLLABLE TIKEUT-WAE-SIOS
-0x89D2	0xB411	# HANGUL SYLLABLE TIKEUT-WAE-IEUNG
-0x89D3	0xB412	# HANGUL SYLLABLE TIKEUT-WAE-CIEUC
-0x89D4	0xB413	# HANGUL SYLLABLE TIKEUT-WAE-CHIEUCH
-0x89D5	0xB414	# HANGUL SYLLABLE TIKEUT-WAE-KHIEUKH
-0x89D6	0xB415	# HANGUL SYLLABLE TIKEUT-WAE-THIEUTH
-0x89D7	0xB416	# HANGUL SYLLABLE TIKEUT-WAE-PHIEUPH
-0x89D8	0xB417	# HANGUL SYLLABLE TIKEUT-WAE-HIEUH
-0x89D9	0xB419	# HANGUL SYLLABLE TIKEUT-OE-KIYEOK
-0x89DA	0xB41A	# HANGUL SYLLABLE TIKEUT-OE-SSANGKIYEOK
-0x89DB	0xB41B	# HANGUL SYLLABLE TIKEUT-OE-KIYEOKSIOS
-0x89DC	0xB41D	# HANGUL SYLLABLE TIKEUT-OE-NIEUNCIEUC
-0x89DD	0xB41E	# HANGUL SYLLABLE TIKEUT-OE-NIEUNHIEUH
-0x89DE	0xB41F	# HANGUL SYLLABLE TIKEUT-OE-TIKEUT
-0x89DF	0xB421	# HANGUL SYLLABLE TIKEUT-OE-RIEULKIYEOK
-0x89E0	0xB422	# HANGUL SYLLABLE TIKEUT-OE-RIEULMIEUM
-0x89E1	0xB423	# HANGUL SYLLABLE TIKEUT-OE-RIEULPIEUP
-0x89E2	0xB424	# HANGUL SYLLABLE TIKEUT-OE-RIEULSIOS
-0x89E3	0xB425	# HANGUL SYLLABLE TIKEUT-OE-RIEULTHIEUTH
-0x89E4	0xB426	# HANGUL SYLLABLE TIKEUT-OE-RIEULPHIEUPH
-0x89E5	0xB427	# HANGUL SYLLABLE TIKEUT-OE-RIEULHIEUH
-0x89E6	0xB42A	# HANGUL SYLLABLE TIKEUT-OE-PIEUPSIOS
-0x89E7	0xB42C	# HANGUL SYLLABLE TIKEUT-OE-SSANGSIOS
-0x89E8	0xB42D	# HANGUL SYLLABLE TIKEUT-OE-IEUNG
-0x89E9	0xB42E	# HANGUL SYLLABLE TIKEUT-OE-CIEUC
-0x89EA	0xB42F	# HANGUL SYLLABLE TIKEUT-OE-CHIEUCH
-0x89EB	0xB430	# HANGUL SYLLABLE TIKEUT-OE-KHIEUKH
-0x89EC	0xB431	# HANGUL SYLLABLE TIKEUT-OE-THIEUTH
-0x89ED	0xB432	# HANGUL SYLLABLE TIKEUT-OE-PHIEUPH
-0x89EE	0xB433	# HANGUL SYLLABLE TIKEUT-OE-HIEUH
-0x89EF	0xB435	# HANGUL SYLLABLE TIKEUT-YO-KIYEOK
-0x89F0	0xB436	# HANGUL SYLLABLE TIKEUT-YO-SSANGKIYEOK
-0x89F1	0xB437	# HANGUL SYLLABLE TIKEUT-YO-KIYEOKSIOS
-0x89F2	0xB438	# HANGUL SYLLABLE TIKEUT-YO-NIEUN
-0x89F3	0xB439	# HANGUL SYLLABLE TIKEUT-YO-NIEUNCIEUC
-0x89F4	0xB43A	# HANGUL SYLLABLE TIKEUT-YO-NIEUNHIEUH
-0x89F5	0xB43B	# HANGUL SYLLABLE TIKEUT-YO-TIKEUT
-0x89F6	0xB43C	# HANGUL SYLLABLE TIKEUT-YO-RIEUL
-0x89F7	0xB43D	# HANGUL SYLLABLE TIKEUT-YO-RIEULKIYEOK
-0x89F8	0xB43E	# HANGUL SYLLABLE TIKEUT-YO-RIEULMIEUM
-0x89F9	0xB43F	# HANGUL SYLLABLE TIKEUT-YO-RIEULPIEUP
-0x89FA	0xB440	# HANGUL SYLLABLE TIKEUT-YO-RIEULSIOS
-0x89FB	0xB441	# HANGUL SYLLABLE TIKEUT-YO-RIEULTHIEUTH
-0x89FC	0xB442	# HANGUL SYLLABLE TIKEUT-YO-RIEULPHIEUPH
-0x89FD	0xB443	# HANGUL SYLLABLE TIKEUT-YO-RIEULHIEUH
-0x89FE	0xB444	# HANGUL SYLLABLE TIKEUT-YO-MIEUM
-0x8A41	0xB445	# HANGUL SYLLABLE TIKEUT-YO-PIEUP
-0x8A42	0xB446	# HANGUL SYLLABLE TIKEUT-YO-PIEUPSIOS
-0x8A43	0xB447	# HANGUL SYLLABLE TIKEUT-YO-SIOS
-0x8A44	0xB448	# HANGUL SYLLABLE TIKEUT-YO-SSANGSIOS
-0x8A45	0xB449	# HANGUL SYLLABLE TIKEUT-YO-IEUNG
-0x8A46	0xB44A	# HANGUL SYLLABLE TIKEUT-YO-CIEUC
-0x8A47	0xB44B	# HANGUL SYLLABLE TIKEUT-YO-CHIEUCH
-0x8A48	0xB44C	# HANGUL SYLLABLE TIKEUT-YO-KHIEUKH
-0x8A49	0xB44D	# HANGUL SYLLABLE TIKEUT-YO-THIEUTH
-0x8A4A	0xB44E	# HANGUL SYLLABLE TIKEUT-YO-PHIEUPH
-0x8A4B	0xB44F	# HANGUL SYLLABLE TIKEUT-YO-HIEUH
-0x8A4C	0xB452	# HANGUL SYLLABLE TIKEUT-U-SSANGKIYEOK
-0x8A4D	0xB453	# HANGUL SYLLABLE TIKEUT-U-KIYEOKSIOS
-0x8A4E	0xB455	# HANGUL SYLLABLE TIKEUT-U-NIEUNCIEUC
-0x8A4F	0xB456	# HANGUL SYLLABLE TIKEUT-U-NIEUNHIEUH
-0x8A50	0xB457	# HANGUL SYLLABLE TIKEUT-U-TIKEUT
-0x8A51	0xB459	# HANGUL SYLLABLE TIKEUT-U-RIEULKIYEOK
-0x8A52	0xB45A	# HANGUL SYLLABLE TIKEUT-U-RIEULMIEUM
-0x8A53	0xB45B	# HANGUL SYLLABLE TIKEUT-U-RIEULPIEUP
-0x8A54	0xB45C	# HANGUL SYLLABLE TIKEUT-U-RIEULSIOS
-0x8A55	0xB45D	# HANGUL SYLLABLE TIKEUT-U-RIEULTHIEUTH
-0x8A56	0xB45E	# HANGUL SYLLABLE TIKEUT-U-RIEULPHIEUPH
-0x8A57	0xB45F	# HANGUL SYLLABLE TIKEUT-U-RIEULHIEUH
-0x8A58	0xB462	# HANGUL SYLLABLE TIKEUT-U-PIEUPSIOS
-0x8A59	0xB464	# HANGUL SYLLABLE TIKEUT-U-SSANGSIOS
-0x8A5A	0xB466	# HANGUL SYLLABLE TIKEUT-U-CIEUC
-0x8A61	0xB467	# HANGUL SYLLABLE TIKEUT-U-CHIEUCH
-0x8A62	0xB468	# HANGUL SYLLABLE TIKEUT-U-KHIEUKH
-0x8A63	0xB469	# HANGUL SYLLABLE TIKEUT-U-THIEUTH
-0x8A64	0xB46A	# HANGUL SYLLABLE TIKEUT-U-PHIEUPH
-0x8A65	0xB46B	# HANGUL SYLLABLE TIKEUT-U-HIEUH
-0x8A66	0xB46D	# HANGUL SYLLABLE TIKEUT-WEO-KIYEOK
-0x8A67	0xB46E	# HANGUL SYLLABLE TIKEUT-WEO-SSANGKIYEOK
-0x8A68	0xB46F	# HANGUL SYLLABLE TIKEUT-WEO-KIYEOKSIOS
-0x8A69	0xB470	# HANGUL SYLLABLE TIKEUT-WEO-NIEUN
-0x8A6A	0xB471	# HANGUL SYLLABLE TIKEUT-WEO-NIEUNCIEUC
-0x8A6B	0xB472	# HANGUL SYLLABLE TIKEUT-WEO-NIEUNHIEUH
-0x8A6C	0xB473	# HANGUL SYLLABLE TIKEUT-WEO-TIKEUT
-0x8A6D	0xB474	# HANGUL SYLLABLE TIKEUT-WEO-RIEUL
-0x8A6E	0xB475	# HANGUL SYLLABLE TIKEUT-WEO-RIEULKIYEOK
-0x8A6F	0xB476	# HANGUL SYLLABLE TIKEUT-WEO-RIEULMIEUM
-0x8A70	0xB477	# HANGUL SYLLABLE TIKEUT-WEO-RIEULPIEUP
-0x8A71	0xB478	# HANGUL SYLLABLE TIKEUT-WEO-RIEULSIOS
-0x8A72	0xB479	# HANGUL SYLLABLE TIKEUT-WEO-RIEULTHIEUTH
-0x8A73	0xB47A	# HANGUL SYLLABLE TIKEUT-WEO-RIEULPHIEUPH
-0x8A74	0xB47B	# HANGUL SYLLABLE TIKEUT-WEO-RIEULHIEUH
-0x8A75	0xB47C	# HANGUL SYLLABLE TIKEUT-WEO-MIEUM
-0x8A76	0xB47D	# HANGUL SYLLABLE TIKEUT-WEO-PIEUP
-0x8A77	0xB47E	# HANGUL SYLLABLE TIKEUT-WEO-PIEUPSIOS
-0x8A78	0xB47F	# HANGUL SYLLABLE TIKEUT-WEO-SIOS
-0x8A79	0xB481	# HANGUL SYLLABLE TIKEUT-WEO-IEUNG
-0x8A7A	0xB482	# HANGUL SYLLABLE TIKEUT-WEO-CIEUC
-0x8A81	0xB483	# HANGUL SYLLABLE TIKEUT-WEO-CHIEUCH
-0x8A82	0xB484	# HANGUL SYLLABLE TIKEUT-WEO-KHIEUKH
-0x8A83	0xB485	# HANGUL SYLLABLE TIKEUT-WEO-THIEUTH
-0x8A84	0xB486	# HANGUL SYLLABLE TIKEUT-WEO-PHIEUPH
-0x8A85	0xB487	# HANGUL SYLLABLE TIKEUT-WEO-HIEUH
-0x8A86	0xB489	# HANGUL SYLLABLE TIKEUT-WE-KIYEOK
-0x8A87	0xB48A	# HANGUL SYLLABLE TIKEUT-WE-SSANGKIYEOK
-0x8A88	0xB48B	# HANGUL SYLLABLE TIKEUT-WE-KIYEOKSIOS
-0x8A89	0xB48C	# HANGUL SYLLABLE TIKEUT-WE-NIEUN
-0x8A8A	0xB48D	# HANGUL SYLLABLE TIKEUT-WE-NIEUNCIEUC
-0x8A8B	0xB48E	# HANGUL SYLLABLE TIKEUT-WE-NIEUNHIEUH
-0x8A8C	0xB48F	# HANGUL SYLLABLE TIKEUT-WE-TIKEUT
-0x8A8D	0xB490	# HANGUL SYLLABLE TIKEUT-WE-RIEUL
-0x8A8E	0xB491	# HANGUL SYLLABLE TIKEUT-WE-RIEULKIYEOK
-0x8A8F	0xB492	# HANGUL SYLLABLE TIKEUT-WE-RIEULMIEUM
-0x8A90	0xB493	# HANGUL SYLLABLE TIKEUT-WE-RIEULPIEUP
-0x8A91	0xB494	# HANGUL SYLLABLE TIKEUT-WE-RIEULSIOS
-0x8A92	0xB495	# HANGUL SYLLABLE TIKEUT-WE-RIEULTHIEUTH
-0x8A93	0xB496	# HANGUL SYLLABLE TIKEUT-WE-RIEULPHIEUPH
-0x8A94	0xB497	# HANGUL SYLLABLE TIKEUT-WE-RIEULHIEUH
-0x8A95	0xB498	# HANGUL SYLLABLE TIKEUT-WE-MIEUM
-0x8A96	0xB499	# HANGUL SYLLABLE TIKEUT-WE-PIEUP
-0x8A97	0xB49A	# HANGUL SYLLABLE TIKEUT-WE-PIEUPSIOS
-0x8A98	0xB49B	# HANGUL SYLLABLE TIKEUT-WE-SIOS
-0x8A99	0xB49C	# HANGUL SYLLABLE TIKEUT-WE-SSANGSIOS
-0x8A9A	0xB49E	# HANGUL SYLLABLE TIKEUT-WE-CIEUC
-0x8A9B	0xB49F	# HANGUL SYLLABLE TIKEUT-WE-CHIEUCH
-0x8A9C	0xB4A0	# HANGUL SYLLABLE TIKEUT-WE-KHIEUKH
-0x8A9D	0xB4A1	# HANGUL SYLLABLE TIKEUT-WE-THIEUTH
-0x8A9E	0xB4A2	# HANGUL SYLLABLE TIKEUT-WE-PHIEUPH
-0x8A9F	0xB4A3	# HANGUL SYLLABLE TIKEUT-WE-HIEUH
-0x8AA0	0xB4A5	# HANGUL SYLLABLE TIKEUT-WI-KIYEOK
-0x8AA1	0xB4A6	# HANGUL SYLLABLE TIKEUT-WI-SSANGKIYEOK
-0x8AA2	0xB4A7	# HANGUL SYLLABLE TIKEUT-WI-KIYEOKSIOS
-0x8AA3	0xB4A9	# HANGUL SYLLABLE TIKEUT-WI-NIEUNCIEUC
-0x8AA4	0xB4AA	# HANGUL SYLLABLE TIKEUT-WI-NIEUNHIEUH
-0x8AA5	0xB4AB	# HANGUL SYLLABLE TIKEUT-WI-TIKEUT
-0x8AA6	0xB4AD	# HANGUL SYLLABLE TIKEUT-WI-RIEULKIYEOK
-0x8AA7	0xB4AE	# HANGUL SYLLABLE TIKEUT-WI-RIEULMIEUM
-0x8AA8	0xB4AF	# HANGUL SYLLABLE TIKEUT-WI-RIEULPIEUP
-0x8AA9	0xB4B0	# HANGUL SYLLABLE TIKEUT-WI-RIEULSIOS
-0x8AAA	0xB4B1	# HANGUL SYLLABLE TIKEUT-WI-RIEULTHIEUTH
-0x8AAB	0xB4B2	# HANGUL SYLLABLE TIKEUT-WI-RIEULPHIEUPH
-0x8AAC	0xB4B3	# HANGUL SYLLABLE TIKEUT-WI-RIEULHIEUH
-0x8AAD	0xB4B4	# HANGUL SYLLABLE TIKEUT-WI-MIEUM
-0x8AAE	0xB4B6	# HANGUL SYLLABLE TIKEUT-WI-PIEUPSIOS
-0x8AAF	0xB4B8	# HANGUL SYLLABLE TIKEUT-WI-SSANGSIOS
-0x8AB0	0xB4BA	# HANGUL SYLLABLE TIKEUT-WI-CIEUC
-0x8AB1	0xB4BB	# HANGUL SYLLABLE TIKEUT-WI-CHIEUCH
-0x8AB2	0xB4BC	# HANGUL SYLLABLE TIKEUT-WI-KHIEUKH
-0x8AB3	0xB4BD	# HANGUL SYLLABLE TIKEUT-WI-THIEUTH
-0x8AB4	0xB4BE	# HANGUL SYLLABLE TIKEUT-WI-PHIEUPH
-0x8AB5	0xB4BF	# HANGUL SYLLABLE TIKEUT-WI-HIEUH
-0x8AB6	0xB4C1	# HANGUL SYLLABLE TIKEUT-YU-KIYEOK
-0x8AB7	0xB4C2	# HANGUL SYLLABLE TIKEUT-YU-SSANGKIYEOK
-0x8AB8	0xB4C3	# HANGUL SYLLABLE TIKEUT-YU-KIYEOKSIOS
-0x8AB9	0xB4C5	# HANGUL SYLLABLE TIKEUT-YU-NIEUNCIEUC
-0x8ABA	0xB4C6	# HANGUL SYLLABLE TIKEUT-YU-NIEUNHIEUH
-0x8ABB	0xB4C7	# HANGUL SYLLABLE TIKEUT-YU-TIKEUT
-0x8ABC	0xB4C9	# HANGUL SYLLABLE TIKEUT-YU-RIEULKIYEOK
-0x8ABD	0xB4CA	# HANGUL SYLLABLE TIKEUT-YU-RIEULMIEUM
-0x8ABE	0xB4CB	# HANGUL SYLLABLE TIKEUT-YU-RIEULPIEUP
-0x8ABF	0xB4CC	# HANGUL SYLLABLE TIKEUT-YU-RIEULSIOS
-0x8AC0	0xB4CD	# HANGUL SYLLABLE TIKEUT-YU-RIEULTHIEUTH
-0x8AC1	0xB4CE	# HANGUL SYLLABLE TIKEUT-YU-RIEULPHIEUPH
-0x8AC2	0xB4CF	# HANGUL SYLLABLE TIKEUT-YU-RIEULHIEUH
-0x8AC3	0xB4D1	# HANGUL SYLLABLE TIKEUT-YU-PIEUP
-0x8AC4	0xB4D2	# HANGUL SYLLABLE TIKEUT-YU-PIEUPSIOS
-0x8AC5	0xB4D3	# HANGUL SYLLABLE TIKEUT-YU-SIOS
-0x8AC6	0xB4D4	# HANGUL SYLLABLE TIKEUT-YU-SSANGSIOS
-0x8AC7	0xB4D6	# HANGUL SYLLABLE TIKEUT-YU-CIEUC
-0x8AC8	0xB4D7	# HANGUL SYLLABLE TIKEUT-YU-CHIEUCH
-0x8AC9	0xB4D8	# HANGUL SYLLABLE TIKEUT-YU-KHIEUKH
-0x8ACA	0xB4D9	# HANGUL SYLLABLE TIKEUT-YU-THIEUTH
-0x8ACB	0xB4DA	# HANGUL SYLLABLE TIKEUT-YU-PHIEUPH
-0x8ACC	0xB4DB	# HANGUL SYLLABLE TIKEUT-YU-HIEUH
-0x8ACD	0xB4DE	# HANGUL SYLLABLE TIKEUT-EU-SSANGKIYEOK
-0x8ACE	0xB4DF	# HANGUL SYLLABLE TIKEUT-EU-KIYEOKSIOS
-0x8ACF	0xB4E1	# HANGUL SYLLABLE TIKEUT-EU-NIEUNCIEUC
-0x8AD0	0xB4E2	# HANGUL SYLLABLE TIKEUT-EU-NIEUNHIEUH
-0x8AD1	0xB4E5	# HANGUL SYLLABLE TIKEUT-EU-RIEULKIYEOK
-0x8AD2	0xB4E7	# HANGUL SYLLABLE TIKEUT-EU-RIEULPIEUP
-0x8AD3	0xB4E8	# HANGUL SYLLABLE TIKEUT-EU-RIEULSIOS
-0x8AD4	0xB4E9	# HANGUL SYLLABLE TIKEUT-EU-RIEULTHIEUTH
-0x8AD5	0xB4EA	# HANGUL SYLLABLE TIKEUT-EU-RIEULPHIEUPH
-0x8AD6	0xB4EB	# HANGUL SYLLABLE TIKEUT-EU-RIEULHIEUH
-0x8AD7	0xB4EE	# HANGUL SYLLABLE TIKEUT-EU-PIEUPSIOS
-0x8AD8	0xB4F0	# HANGUL SYLLABLE TIKEUT-EU-SSANGSIOS
-0x8AD9	0xB4F2	# HANGUL SYLLABLE TIKEUT-EU-CIEUC
-0x8ADA	0xB4F3	# HANGUL SYLLABLE TIKEUT-EU-CHIEUCH
-0x8ADB	0xB4F4	# HANGUL SYLLABLE TIKEUT-EU-KHIEUKH
-0x8ADC	0xB4F5	# HANGUL SYLLABLE TIKEUT-EU-THIEUTH
-0x8ADD	0xB4F6	# HANGUL SYLLABLE TIKEUT-EU-PHIEUPH
-0x8ADE	0xB4F7	# HANGUL SYLLABLE TIKEUT-EU-HIEUH
-0x8ADF	0xB4F9	# HANGUL SYLLABLE TIKEUT-YI-KIYEOK
-0x8AE0	0xB4FA	# HANGUL SYLLABLE TIKEUT-YI-SSANGKIYEOK
-0x8AE1	0xB4FB	# HANGUL SYLLABLE TIKEUT-YI-KIYEOKSIOS
-0x8AE2	0xB4FC	# HANGUL SYLLABLE TIKEUT-YI-NIEUN
-0x8AE3	0xB4FD	# HANGUL SYLLABLE TIKEUT-YI-NIEUNCIEUC
-0x8AE4	0xB4FE	# HANGUL SYLLABLE TIKEUT-YI-NIEUNHIEUH
-0x8AE5	0xB4FF	# HANGUL SYLLABLE TIKEUT-YI-TIKEUT
-0x8AE6	0xB500	# HANGUL SYLLABLE TIKEUT-YI-RIEUL
-0x8AE7	0xB501	# HANGUL SYLLABLE TIKEUT-YI-RIEULKIYEOK
-0x8AE8	0xB502	# HANGUL SYLLABLE TIKEUT-YI-RIEULMIEUM
-0x8AE9	0xB503	# HANGUL SYLLABLE TIKEUT-YI-RIEULPIEUP
-0x8AEA	0xB504	# HANGUL SYLLABLE TIKEUT-YI-RIEULSIOS
-0x8AEB	0xB505	# HANGUL SYLLABLE TIKEUT-YI-RIEULTHIEUTH
-0x8AEC	0xB506	# HANGUL SYLLABLE TIKEUT-YI-RIEULPHIEUPH
-0x8AED	0xB507	# HANGUL SYLLABLE TIKEUT-YI-RIEULHIEUH
-0x8AEE	0xB508	# HANGUL SYLLABLE TIKEUT-YI-MIEUM
-0x8AEF	0xB509	# HANGUL SYLLABLE TIKEUT-YI-PIEUP
-0x8AF0	0xB50A	# HANGUL SYLLABLE TIKEUT-YI-PIEUPSIOS
-0x8AF1	0xB50B	# HANGUL SYLLABLE TIKEUT-YI-SIOS
-0x8AF2	0xB50C	# HANGUL SYLLABLE TIKEUT-YI-SSANGSIOS
-0x8AF3	0xB50D	# HANGUL SYLLABLE TIKEUT-YI-IEUNG
-0x8AF4	0xB50E	# HANGUL SYLLABLE TIKEUT-YI-CIEUC
-0x8AF5	0xB50F	# HANGUL SYLLABLE TIKEUT-YI-CHIEUCH
-0x8AF6	0xB510	# HANGUL SYLLABLE TIKEUT-YI-KHIEUKH
-0x8AF7	0xB511	# HANGUL SYLLABLE TIKEUT-YI-THIEUTH
-0x8AF8	0xB512	# HANGUL SYLLABLE TIKEUT-YI-PHIEUPH
-0x8AF9	0xB513	# HANGUL SYLLABLE TIKEUT-YI-HIEUH
-0x8AFA	0xB516	# HANGUL SYLLABLE TIKEUT-I-SSANGKIYEOK
-0x8AFB	0xB517	# HANGUL SYLLABLE TIKEUT-I-KIYEOKSIOS
-0x8AFC	0xB519	# HANGUL SYLLABLE TIKEUT-I-NIEUNCIEUC
-0x8AFD	0xB51A	# HANGUL SYLLABLE TIKEUT-I-NIEUNHIEUH
-0x8AFE	0xB51D	# HANGUL SYLLABLE TIKEUT-I-RIEULKIYEOK
-0x8B41	0xB51E	# HANGUL SYLLABLE TIKEUT-I-RIEULMIEUM
-0x8B42	0xB51F	# HANGUL SYLLABLE TIKEUT-I-RIEULPIEUP
-0x8B43	0xB520	# HANGUL SYLLABLE TIKEUT-I-RIEULSIOS
-0x8B44	0xB521	# HANGUL SYLLABLE TIKEUT-I-RIEULTHIEUTH
-0x8B45	0xB522	# HANGUL SYLLABLE TIKEUT-I-RIEULPHIEUPH
-0x8B46	0xB523	# HANGUL SYLLABLE TIKEUT-I-RIEULHIEUH
-0x8B47	0xB526	# HANGUL SYLLABLE TIKEUT-I-PIEUPSIOS
-0x8B48	0xB52B	# HANGUL SYLLABLE TIKEUT-I-CHIEUCH
-0x8B49	0xB52C	# HANGUL SYLLABLE TIKEUT-I-KHIEUKH
-0x8B4A	0xB52D	# HANGUL SYLLABLE TIKEUT-I-THIEUTH
-0x8B4B	0xB52E	# HANGUL SYLLABLE TIKEUT-I-PHIEUPH
-0x8B4C	0xB52F	# HANGUL SYLLABLE TIKEUT-I-HIEUH
-0x8B4D	0xB532	# HANGUL SYLLABLE SSANGTIKEUT-A-SSANGKIYEOK
-0x8B4E	0xB533	# HANGUL SYLLABLE SSANGTIKEUT-A-KIYEOKSIOS
-0x8B4F	0xB535	# HANGUL SYLLABLE SSANGTIKEUT-A-NIEUNCIEUC
-0x8B50	0xB536	# HANGUL SYLLABLE SSANGTIKEUT-A-NIEUNHIEUH
-0x8B51	0xB537	# HANGUL SYLLABLE SSANGTIKEUT-A-TIKEUT
-0x8B52	0xB539	# HANGUL SYLLABLE SSANGTIKEUT-A-RIEULKIYEOK
-0x8B53	0xB53A	# HANGUL SYLLABLE SSANGTIKEUT-A-RIEULMIEUM
-0x8B54	0xB53B	# HANGUL SYLLABLE SSANGTIKEUT-A-RIEULPIEUP
-0x8B55	0xB53C	# HANGUL SYLLABLE SSANGTIKEUT-A-RIEULSIOS
-0x8B56	0xB53D	# HANGUL SYLLABLE SSANGTIKEUT-A-RIEULTHIEUTH
-0x8B57	0xB53E	# HANGUL SYLLABLE SSANGTIKEUT-A-RIEULPHIEUPH
-0x8B58	0xB53F	# HANGUL SYLLABLE SSANGTIKEUT-A-RIEULHIEUH
-0x8B59	0xB542	# HANGUL SYLLABLE SSANGTIKEUT-A-PIEUPSIOS
-0x8B5A	0xB546	# HANGUL SYLLABLE SSANGTIKEUT-A-CIEUC
-0x8B61	0xB547	# HANGUL SYLLABLE SSANGTIKEUT-A-CHIEUCH
-0x8B62	0xB548	# HANGUL SYLLABLE SSANGTIKEUT-A-KHIEUKH
-0x8B63	0xB549	# HANGUL SYLLABLE SSANGTIKEUT-A-THIEUTH
-0x8B64	0xB54A	# HANGUL SYLLABLE SSANGTIKEUT-A-PHIEUPH
-0x8B65	0xB54E	# HANGUL SYLLABLE SSANGTIKEUT-AE-SSANGKIYEOK
-0x8B66	0xB54F	# HANGUL SYLLABLE SSANGTIKEUT-AE-KIYEOKSIOS
-0x8B67	0xB551	# HANGUL SYLLABLE SSANGTIKEUT-AE-NIEUNCIEUC
-0x8B68	0xB552	# HANGUL SYLLABLE SSANGTIKEUT-AE-NIEUNHIEUH
-0x8B69	0xB553	# HANGUL SYLLABLE SSANGTIKEUT-AE-TIKEUT
-0x8B6A	0xB555	# HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULKIYEOK
-0x8B6B	0xB556	# HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULMIEUM
-0x8B6C	0xB557	# HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULPIEUP
-0x8B6D	0xB558	# HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULSIOS
-0x8B6E	0xB559	# HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULTHIEUTH
-0x8B6F	0xB55A	# HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULPHIEUPH
-0x8B70	0xB55B	# HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULHIEUH
-0x8B71	0xB55E	# HANGUL SYLLABLE SSANGTIKEUT-AE-PIEUPSIOS
-0x8B72	0xB562	# HANGUL SYLLABLE SSANGTIKEUT-AE-CIEUC
-0x8B73	0xB563	# HANGUL SYLLABLE SSANGTIKEUT-AE-CHIEUCH
-0x8B74	0xB564	# HANGUL SYLLABLE SSANGTIKEUT-AE-KHIEUKH
-0x8B75	0xB565	# HANGUL SYLLABLE SSANGTIKEUT-AE-THIEUTH
-0x8B76	0xB566	# HANGUL SYLLABLE SSANGTIKEUT-AE-PHIEUPH
-0x8B77	0xB567	# HANGUL SYLLABLE SSANGTIKEUT-AE-HIEUH
-0x8B78	0xB568	# HANGUL SYLLABLE SSANGTIKEUT-YA
-0x8B79	0xB569	# HANGUL SYLLABLE SSANGTIKEUT-YA-KIYEOK
-0x8B7A	0xB56A	# HANGUL SYLLABLE SSANGTIKEUT-YA-SSANGKIYEOK
-0x8B81	0xB56B	# HANGUL SYLLABLE SSANGTIKEUT-YA-KIYEOKSIOS
-0x8B82	0xB56C	# HANGUL SYLLABLE SSANGTIKEUT-YA-NIEUN
-0x8B83	0xB56D	# HANGUL SYLLABLE SSANGTIKEUT-YA-NIEUNCIEUC
-0x8B84	0xB56E	# HANGUL SYLLABLE SSANGTIKEUT-YA-NIEUNHIEUH
-0x8B85	0xB56F	# HANGUL SYLLABLE SSANGTIKEUT-YA-TIKEUT
-0x8B86	0xB570	# HANGUL SYLLABLE SSANGTIKEUT-YA-RIEUL
-0x8B87	0xB571	# HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULKIYEOK
-0x8B88	0xB572	# HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULMIEUM
-0x8B89	0xB573	# HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULPIEUP
-0x8B8A	0xB574	# HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULSIOS
-0x8B8B	0xB575	# HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULTHIEUTH
-0x8B8C	0xB576	# HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULPHIEUPH
-0x8B8D	0xB577	# HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULHIEUH
-0x8B8E	0xB578	# HANGUL SYLLABLE SSANGTIKEUT-YA-MIEUM
-0x8B8F	0xB579	# HANGUL SYLLABLE SSANGTIKEUT-YA-PIEUP
-0x8B90	0xB57A	# HANGUL SYLLABLE SSANGTIKEUT-YA-PIEUPSIOS
-0x8B91	0xB57B	# HANGUL SYLLABLE SSANGTIKEUT-YA-SIOS
-0x8B92	0xB57C	# HANGUL SYLLABLE SSANGTIKEUT-YA-SSANGSIOS
-0x8B93	0xB57D	# HANGUL SYLLABLE SSANGTIKEUT-YA-IEUNG
-0x8B94	0xB57E	# HANGUL SYLLABLE SSANGTIKEUT-YA-CIEUC
-0x8B95	0xB57F	# HANGUL SYLLABLE SSANGTIKEUT-YA-CHIEUCH
-0x8B96	0xB580	# HANGUL SYLLABLE SSANGTIKEUT-YA-KHIEUKH
-0x8B97	0xB581	# HANGUL SYLLABLE SSANGTIKEUT-YA-THIEUTH
-0x8B98	0xB582	# HANGUL SYLLABLE SSANGTIKEUT-YA-PHIEUPH
-0x8B99	0xB583	# HANGUL SYLLABLE SSANGTIKEUT-YA-HIEUH
-0x8B9A	0xB584	# HANGUL SYLLABLE SSANGTIKEUT-YAE
-0x8B9B	0xB585	# HANGUL SYLLABLE SSANGTIKEUT-YAE-KIYEOK
-0x8B9C	0xB586	# HANGUL SYLLABLE SSANGTIKEUT-YAE-SSANGKIYEOK
-0x8B9D	0xB587	# HANGUL SYLLABLE SSANGTIKEUT-YAE-KIYEOKSIOS
-0x8B9E	0xB588	# HANGUL SYLLABLE SSANGTIKEUT-YAE-NIEUN
-0x8B9F	0xB589	# HANGUL SYLLABLE SSANGTIKEUT-YAE-NIEUNCIEUC
-0x8BA0	0xB58A	# HANGUL SYLLABLE SSANGTIKEUT-YAE-NIEUNHIEUH
-0x8BA1	0xB58B	# HANGUL SYLLABLE SSANGTIKEUT-YAE-TIKEUT
-0x8BA2	0xB58C	# HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEUL
-0x8BA3	0xB58D	# HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULKIYEOK
-0x8BA4	0xB58E	# HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULMIEUM
-0x8BA5	0xB58F	# HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULPIEUP
-0x8BA6	0xB590	# HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULSIOS
-0x8BA7	0xB591	# HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULTHIEUTH
-0x8BA8	0xB592	# HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULPHIEUPH
-0x8BA9	0xB593	# HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULHIEUH
-0x8BAA	0xB594	# HANGUL SYLLABLE SSANGTIKEUT-YAE-MIEUM
-0x8BAB	0xB595	# HANGUL SYLLABLE SSANGTIKEUT-YAE-PIEUP
-0x8BAC	0xB596	# HANGUL SYLLABLE SSANGTIKEUT-YAE-PIEUPSIOS
-0x8BAD	0xB597	# HANGUL SYLLABLE SSANGTIKEUT-YAE-SIOS
-0x8BAE	0xB598	# HANGUL SYLLABLE SSANGTIKEUT-YAE-SSANGSIOS
-0x8BAF	0xB599	# HANGUL SYLLABLE SSANGTIKEUT-YAE-IEUNG
-0x8BB0	0xB59A	# HANGUL SYLLABLE SSANGTIKEUT-YAE-CIEUC
-0x8BB1	0xB59B	# HANGUL SYLLABLE SSANGTIKEUT-YAE-CHIEUCH
-0x8BB2	0xB59C	# HANGUL SYLLABLE SSANGTIKEUT-YAE-KHIEUKH
-0x8BB3	0xB59D	# HANGUL SYLLABLE SSANGTIKEUT-YAE-THIEUTH
-0x8BB4	0xB59E	# HANGUL SYLLABLE SSANGTIKEUT-YAE-PHIEUPH
-0x8BB5	0xB59F	# HANGUL SYLLABLE SSANGTIKEUT-YAE-HIEUH
-0x8BB6	0xB5A2	# HANGUL SYLLABLE SSANGTIKEUT-EO-SSANGKIYEOK
-0x8BB7	0xB5A3	# HANGUL SYLLABLE SSANGTIKEUT-EO-KIYEOKSIOS
-0x8BB8	0xB5A5	# HANGUL SYLLABLE SSANGTIKEUT-EO-NIEUNCIEUC
-0x8BB9	0xB5A6	# HANGUL SYLLABLE SSANGTIKEUT-EO-NIEUNHIEUH
-0x8BBA	0xB5A7	# HANGUL SYLLABLE SSANGTIKEUT-EO-TIKEUT
-0x8BBB	0xB5A9	# HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULKIYEOK
-0x8BBC	0xB5AC	# HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULSIOS
-0x8BBD	0xB5AD	# HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULTHIEUTH
-0x8BBE	0xB5AE	# HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULPHIEUPH
-0x8BBF	0xB5AF	# HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULHIEUH
-0x8BC0	0xB5B2	# HANGUL SYLLABLE SSANGTIKEUT-EO-PIEUPSIOS
-0x8BC1	0xB5B6	# HANGUL SYLLABLE SSANGTIKEUT-EO-CIEUC
-0x8BC2	0xB5B7	# HANGUL SYLLABLE SSANGTIKEUT-EO-CHIEUCH
-0x8BC3	0xB5B8	# HANGUL SYLLABLE SSANGTIKEUT-EO-KHIEUKH
-0x8BC4	0xB5B9	# HANGUL SYLLABLE SSANGTIKEUT-EO-THIEUTH
-0x8BC5	0xB5BA	# HANGUL SYLLABLE SSANGTIKEUT-EO-PHIEUPH
-0x8BC6	0xB5BE	# HANGUL SYLLABLE SSANGTIKEUT-E-SSANGKIYEOK
-0x8BC7	0xB5BF	# HANGUL SYLLABLE SSANGTIKEUT-E-KIYEOKSIOS
-0x8BC8	0xB5C1	# HANGUL SYLLABLE SSANGTIKEUT-E-NIEUNCIEUC
-0x8BC9	0xB5C2	# HANGUL SYLLABLE SSANGTIKEUT-E-NIEUNHIEUH
-0x8BCA	0xB5C3	# HANGUL SYLLABLE SSANGTIKEUT-E-TIKEUT
-0x8BCB	0xB5C5	# HANGUL SYLLABLE SSANGTIKEUT-E-RIEULKIYEOK
-0x8BCC	0xB5C6	# HANGUL SYLLABLE SSANGTIKEUT-E-RIEULMIEUM
-0x8BCD	0xB5C7	# HANGUL SYLLABLE SSANGTIKEUT-E-RIEULPIEUP
-0x8BCE	0xB5C8	# HANGUL SYLLABLE SSANGTIKEUT-E-RIEULSIOS
-0x8BCF	0xB5C9	# HANGUL SYLLABLE SSANGTIKEUT-E-RIEULTHIEUTH
-0x8BD0	0xB5CA	# HANGUL SYLLABLE SSANGTIKEUT-E-RIEULPHIEUPH
-0x8BD1	0xB5CB	# HANGUL SYLLABLE SSANGTIKEUT-E-RIEULHIEUH
-0x8BD2	0xB5CE	# HANGUL SYLLABLE SSANGTIKEUT-E-PIEUPSIOS
-0x8BD3	0xB5D2	# HANGUL SYLLABLE SSANGTIKEUT-E-CIEUC
-0x8BD4	0xB5D3	# HANGUL SYLLABLE SSANGTIKEUT-E-CHIEUCH
-0x8BD5	0xB5D4	# HANGUL SYLLABLE SSANGTIKEUT-E-KHIEUKH
-0x8BD6	0xB5D5	# HANGUL SYLLABLE SSANGTIKEUT-E-THIEUTH
-0x8BD7	0xB5D6	# HANGUL SYLLABLE SSANGTIKEUT-E-PHIEUPH
-0x8BD8	0xB5D7	# HANGUL SYLLABLE SSANGTIKEUT-E-HIEUH
-0x8BD9	0xB5D9	# HANGUL SYLLABLE SSANGTIKEUT-YEO-KIYEOK
-0x8BDA	0xB5DA	# HANGUL SYLLABLE SSANGTIKEUT-YEO-SSANGKIYEOK
-0x8BDB	0xB5DB	# HANGUL SYLLABLE SSANGTIKEUT-YEO-KIYEOKSIOS
-0x8BDC	0xB5DC	# HANGUL SYLLABLE SSANGTIKEUT-YEO-NIEUN
-0x8BDD	0xB5DD	# HANGUL SYLLABLE SSANGTIKEUT-YEO-NIEUNCIEUC
-0x8BDE	0xB5DE	# HANGUL SYLLABLE SSANGTIKEUT-YEO-NIEUNHIEUH
-0x8BDF	0xB5DF	# HANGUL SYLLABLE SSANGTIKEUT-YEO-TIKEUT
-0x8BE0	0xB5E0	# HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEUL
-0x8BE1	0xB5E1	# HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULKIYEOK
-0x8BE2	0xB5E2	# HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULMIEUM
-0x8BE3	0xB5E3	# HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULPIEUP
-0x8BE4	0xB5E4	# HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULSIOS
-0x8BE5	0xB5E5	# HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULTHIEUTH
-0x8BE6	0xB5E6	# HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULPHIEUPH
-0x8BE7	0xB5E7	# HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULHIEUH
-0x8BE8	0xB5E8	# HANGUL SYLLABLE SSANGTIKEUT-YEO-MIEUM
-0x8BE9	0xB5E9	# HANGUL SYLLABLE SSANGTIKEUT-YEO-PIEUP
-0x8BEA	0xB5EA	# HANGUL SYLLABLE SSANGTIKEUT-YEO-PIEUPSIOS
-0x8BEB	0xB5EB	# HANGUL SYLLABLE SSANGTIKEUT-YEO-SIOS
-0x8BEC	0xB5ED	# HANGUL SYLLABLE SSANGTIKEUT-YEO-IEUNG
-0x8BED	0xB5EE	# HANGUL SYLLABLE SSANGTIKEUT-YEO-CIEUC
-0x8BEE	0xB5EF	# HANGUL SYLLABLE SSANGTIKEUT-YEO-CHIEUCH
-0x8BEF	0xB5F0	# HANGUL SYLLABLE SSANGTIKEUT-YEO-KHIEUKH
-0x8BF0	0xB5F1	# HANGUL SYLLABLE SSANGTIKEUT-YEO-THIEUTH
-0x8BF1	0xB5F2	# HANGUL SYLLABLE SSANGTIKEUT-YEO-PHIEUPH
-0x8BF2	0xB5F3	# HANGUL SYLLABLE SSANGTIKEUT-YEO-HIEUH
-0x8BF3	0xB5F4	# HANGUL SYLLABLE SSANGTIKEUT-YE
-0x8BF4	0xB5F5	# HANGUL SYLLABLE SSANGTIKEUT-YE-KIYEOK
-0x8BF5	0xB5F6	# HANGUL SYLLABLE SSANGTIKEUT-YE-SSANGKIYEOK
-0x8BF6	0xB5F7	# HANGUL SYLLABLE SSANGTIKEUT-YE-KIYEOKSIOS
-0x8BF7	0xB5F8	# HANGUL SYLLABLE SSANGTIKEUT-YE-NIEUN
-0x8BF8	0xB5F9	# HANGUL SYLLABLE SSANGTIKEUT-YE-NIEUNCIEUC
-0x8BF9	0xB5FA	# HANGUL SYLLABLE SSANGTIKEUT-YE-NIEUNHIEUH
-0x8BFA	0xB5FB	# HANGUL SYLLABLE SSANGTIKEUT-YE-TIKEUT
-0x8BFB	0xB5FC	# HANGUL SYLLABLE SSANGTIKEUT-YE-RIEUL
-0x8BFC	0xB5FD	# HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULKIYEOK
-0x8BFD	0xB5FE	# HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULMIEUM
-0x8BFE	0xB5FF	# HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULPIEUP
-0x8C41	0xB600	# HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULSIOS
-0x8C42	0xB601	# HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULTHIEUTH
-0x8C43	0xB602	# HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULPHIEUPH
-0x8C44	0xB603	# HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULHIEUH
-0x8C45	0xB604	# HANGUL SYLLABLE SSANGTIKEUT-YE-MIEUM
-0x8C46	0xB605	# HANGUL SYLLABLE SSANGTIKEUT-YE-PIEUP
-0x8C47	0xB606	# HANGUL SYLLABLE SSANGTIKEUT-YE-PIEUPSIOS
-0x8C48	0xB607	# HANGUL SYLLABLE SSANGTIKEUT-YE-SIOS
-0x8C49	0xB608	# HANGUL SYLLABLE SSANGTIKEUT-YE-SSANGSIOS
-0x8C4A	0xB609	# HANGUL SYLLABLE SSANGTIKEUT-YE-IEUNG
-0x8C4B	0xB60A	# HANGUL SYLLABLE SSANGTIKEUT-YE-CIEUC
-0x8C4C	0xB60B	# HANGUL SYLLABLE SSANGTIKEUT-YE-CHIEUCH
-0x8C4D	0xB60C	# HANGUL SYLLABLE SSANGTIKEUT-YE-KHIEUKH
-0x8C4E	0xB60D	# HANGUL SYLLABLE SSANGTIKEUT-YE-THIEUTH
-0x8C4F	0xB60E	# HANGUL SYLLABLE SSANGTIKEUT-YE-PHIEUPH
-0x8C50	0xB60F	# HANGUL SYLLABLE SSANGTIKEUT-YE-HIEUH
-0x8C51	0xB612	# HANGUL SYLLABLE SSANGTIKEUT-O-SSANGKIYEOK
-0x8C52	0xB613	# HANGUL SYLLABLE SSANGTIKEUT-O-KIYEOKSIOS
-0x8C53	0xB615	# HANGUL SYLLABLE SSANGTIKEUT-O-NIEUNCIEUC
-0x8C54	0xB616	# HANGUL SYLLABLE SSANGTIKEUT-O-NIEUNHIEUH
-0x8C55	0xB617	# HANGUL SYLLABLE SSANGTIKEUT-O-TIKEUT
-0x8C56	0xB619	# HANGUL SYLLABLE SSANGTIKEUT-O-RIEULKIYEOK
-0x8C57	0xB61A	# HANGUL SYLLABLE SSANGTIKEUT-O-RIEULMIEUM
-0x8C58	0xB61B	# HANGUL SYLLABLE SSANGTIKEUT-O-RIEULPIEUP
-0x8C59	0xB61C	# HANGUL SYLLABLE SSANGTIKEUT-O-RIEULSIOS
-0x8C5A	0xB61D	# HANGUL SYLLABLE SSANGTIKEUT-O-RIEULTHIEUTH
-0x8C61	0xB61E	# HANGUL SYLLABLE SSANGTIKEUT-O-RIEULPHIEUPH
-0x8C62	0xB61F	# HANGUL SYLLABLE SSANGTIKEUT-O-RIEULHIEUH
-0x8C63	0xB620	# HANGUL SYLLABLE SSANGTIKEUT-O-MIEUM
-0x8C64	0xB621	# HANGUL SYLLABLE SSANGTIKEUT-O-PIEUP
-0x8C65	0xB622	# HANGUL SYLLABLE SSANGTIKEUT-O-PIEUPSIOS
-0x8C66	0xB623	# HANGUL SYLLABLE SSANGTIKEUT-O-SIOS
-0x8C67	0xB624	# HANGUL SYLLABLE SSANGTIKEUT-O-SSANGSIOS
-0x8C68	0xB626	# HANGUL SYLLABLE SSANGTIKEUT-O-CIEUC
-0x8C69	0xB627	# HANGUL SYLLABLE SSANGTIKEUT-O-CHIEUCH
-0x8C6A	0xB628	# HANGUL SYLLABLE SSANGTIKEUT-O-KHIEUKH
-0x8C6B	0xB629	# HANGUL SYLLABLE SSANGTIKEUT-O-THIEUTH
-0x8C6C	0xB62A	# HANGUL SYLLABLE SSANGTIKEUT-O-PHIEUPH
-0x8C6D	0xB62B	# HANGUL SYLLABLE SSANGTIKEUT-O-HIEUH
-0x8C6E	0xB62D	# HANGUL SYLLABLE SSANGTIKEUT-WA-KIYEOK
-0x8C6F	0xB62E	# HANGUL SYLLABLE SSANGTIKEUT-WA-SSANGKIYEOK
-0x8C70	0xB62F	# HANGUL SYLLABLE SSANGTIKEUT-WA-KIYEOKSIOS
-0x8C71	0xB630	# HANGUL SYLLABLE SSANGTIKEUT-WA-NIEUN
-0x8C72	0xB631	# HANGUL SYLLABLE SSANGTIKEUT-WA-NIEUNCIEUC
-0x8C73	0xB632	# HANGUL SYLLABLE SSANGTIKEUT-WA-NIEUNHIEUH
-0x8C74	0xB633	# HANGUL SYLLABLE SSANGTIKEUT-WA-TIKEUT
-0x8C75	0xB635	# HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULKIYEOK
-0x8C76	0xB636	# HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULMIEUM
-0x8C77	0xB637	# HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULPIEUP
-0x8C78	0xB638	# HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULSIOS
-0x8C79	0xB639	# HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULTHIEUTH
-0x8C7A	0xB63A	# HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULPHIEUPH
-0x8C81	0xB63B	# HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULHIEUH
-0x8C82	0xB63C	# HANGUL SYLLABLE SSANGTIKEUT-WA-MIEUM
-0x8C83	0xB63D	# HANGUL SYLLABLE SSANGTIKEUT-WA-PIEUP
-0x8C84	0xB63E	# HANGUL SYLLABLE SSANGTIKEUT-WA-PIEUPSIOS
-0x8C85	0xB63F	# HANGUL SYLLABLE SSANGTIKEUT-WA-SIOS
-0x8C86	0xB640	# HANGUL SYLLABLE SSANGTIKEUT-WA-SSANGSIOS
-0x8C87	0xB641	# HANGUL SYLLABLE SSANGTIKEUT-WA-IEUNG
-0x8C88	0xB642	# HANGUL SYLLABLE SSANGTIKEUT-WA-CIEUC
-0x8C89	0xB643	# HANGUL SYLLABLE SSANGTIKEUT-WA-CHIEUCH
-0x8C8A	0xB644	# HANGUL SYLLABLE SSANGTIKEUT-WA-KHIEUKH
-0x8C8B	0xB645	# HANGUL SYLLABLE SSANGTIKEUT-WA-THIEUTH
-0x8C8C	0xB646	# HANGUL SYLLABLE SSANGTIKEUT-WA-PHIEUPH
-0x8C8D	0xB647	# HANGUL SYLLABLE SSANGTIKEUT-WA-HIEUH
-0x8C8E	0xB649	# HANGUL SYLLABLE SSANGTIKEUT-WAE-KIYEOK
-0x8C8F	0xB64A	# HANGUL SYLLABLE SSANGTIKEUT-WAE-SSANGKIYEOK
-0x8C90	0xB64B	# HANGUL SYLLABLE SSANGTIKEUT-WAE-KIYEOKSIOS
-0x8C91	0xB64C	# HANGUL SYLLABLE SSANGTIKEUT-WAE-NIEUN
-0x8C92	0xB64D	# HANGUL SYLLABLE SSANGTIKEUT-WAE-NIEUNCIEUC
-0x8C93	0xB64E	# HANGUL SYLLABLE SSANGTIKEUT-WAE-NIEUNHIEUH
-0x8C94	0xB64F	# HANGUL SYLLABLE SSANGTIKEUT-WAE-TIKEUT
-0x8C95	0xB650	# HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEUL
-0x8C96	0xB651	# HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULKIYEOK
-0x8C97	0xB652	# HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULMIEUM
-0x8C98	0xB653	# HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULPIEUP
-0x8C99	0xB654	# HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULSIOS
-0x8C9A	0xB655	# HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULTHIEUTH
-0x8C9B	0xB656	# HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULPHIEUPH
-0x8C9C	0xB657	# HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULHIEUH
-0x8C9D	0xB658	# HANGUL SYLLABLE SSANGTIKEUT-WAE-MIEUM
-0x8C9E	0xB659	# HANGUL SYLLABLE SSANGTIKEUT-WAE-PIEUP
-0x8C9F	0xB65A	# HANGUL SYLLABLE SSANGTIKEUT-WAE-PIEUPSIOS
-0x8CA0	0xB65B	# HANGUL SYLLABLE SSANGTIKEUT-WAE-SIOS
-0x8CA1	0xB65C	# HANGUL SYLLABLE SSANGTIKEUT-WAE-SSANGSIOS
-0x8CA2	0xB65D	# HANGUL SYLLABLE SSANGTIKEUT-WAE-IEUNG
-0x8CA3	0xB65E	# HANGUL SYLLABLE SSANGTIKEUT-WAE-CIEUC
-0x8CA4	0xB65F	# HANGUL SYLLABLE SSANGTIKEUT-WAE-CHIEUCH
-0x8CA5	0xB660	# HANGUL SYLLABLE SSANGTIKEUT-WAE-KHIEUKH
-0x8CA6	0xB661	# HANGUL SYLLABLE SSANGTIKEUT-WAE-THIEUTH
-0x8CA7	0xB662	# HANGUL SYLLABLE SSANGTIKEUT-WAE-PHIEUPH
-0x8CA8	0xB663	# HANGUL SYLLABLE SSANGTIKEUT-WAE-HIEUH
-0x8CA9	0xB665	# HANGUL SYLLABLE SSANGTIKEUT-OE-KIYEOK
-0x8CAA	0xB666	# HANGUL SYLLABLE SSANGTIKEUT-OE-SSANGKIYEOK
-0x8CAB	0xB667	# HANGUL SYLLABLE SSANGTIKEUT-OE-KIYEOKSIOS
-0x8CAC	0xB669	# HANGUL SYLLABLE SSANGTIKEUT-OE-NIEUNCIEUC
-0x8CAD	0xB66A	# HANGUL SYLLABLE SSANGTIKEUT-OE-NIEUNHIEUH
-0x8CAE	0xB66B	# HANGUL SYLLABLE SSANGTIKEUT-OE-TIKEUT
-0x8CAF	0xB66C	# HANGUL SYLLABLE SSANGTIKEUT-OE-RIEUL
-0x8CB0	0xB66D	# HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULKIYEOK
-0x8CB1	0xB66E	# HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULMIEUM
-0x8CB2	0xB66F	# HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULPIEUP
-0x8CB3	0xB670	# HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULSIOS
-0x8CB4	0xB671	# HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULTHIEUTH
-0x8CB5	0xB672	# HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULPHIEUPH
-0x8CB6	0xB673	# HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULHIEUH
-0x8CB7	0xB674	# HANGUL SYLLABLE SSANGTIKEUT-OE-MIEUM
-0x8CB8	0xB675	# HANGUL SYLLABLE SSANGTIKEUT-OE-PIEUP
-0x8CB9	0xB676	# HANGUL SYLLABLE SSANGTIKEUT-OE-PIEUPSIOS
-0x8CBA	0xB677	# HANGUL SYLLABLE SSANGTIKEUT-OE-SIOS
-0x8CBB	0xB678	# HANGUL SYLLABLE SSANGTIKEUT-OE-SSANGSIOS
-0x8CBC	0xB679	# HANGUL SYLLABLE SSANGTIKEUT-OE-IEUNG
-0x8CBD	0xB67A	# HANGUL SYLLABLE SSANGTIKEUT-OE-CIEUC
-0x8CBE	0xB67B	# HANGUL SYLLABLE SSANGTIKEUT-OE-CHIEUCH
-0x8CBF	0xB67C	# HANGUL SYLLABLE SSANGTIKEUT-OE-KHIEUKH
-0x8CC0	0xB67D	# HANGUL SYLLABLE SSANGTIKEUT-OE-THIEUTH
-0x8CC1	0xB67E	# HANGUL SYLLABLE SSANGTIKEUT-OE-PHIEUPH
-0x8CC2	0xB67F	# HANGUL SYLLABLE SSANGTIKEUT-OE-HIEUH
-0x8CC3	0xB680	# HANGUL SYLLABLE SSANGTIKEUT-YO
-0x8CC4	0xB681	# HANGUL SYLLABLE SSANGTIKEUT-YO-KIYEOK
-0x8CC5	0xB682	# HANGUL SYLLABLE SSANGTIKEUT-YO-SSANGKIYEOK
-0x8CC6	0xB683	# HANGUL SYLLABLE SSANGTIKEUT-YO-KIYEOKSIOS
-0x8CC7	0xB684	# HANGUL SYLLABLE SSANGTIKEUT-YO-NIEUN
-0x8CC8	0xB685	# HANGUL SYLLABLE SSANGTIKEUT-YO-NIEUNCIEUC
-0x8CC9	0xB686	# HANGUL SYLLABLE SSANGTIKEUT-YO-NIEUNHIEUH
-0x8CCA	0xB687	# HANGUL SYLLABLE SSANGTIKEUT-YO-TIKEUT
-0x8CCB	0xB688	# HANGUL SYLLABLE SSANGTIKEUT-YO-RIEUL
-0x8CCC	0xB689	# HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULKIYEOK
-0x8CCD	0xB68A	# HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULMIEUM
-0x8CCE	0xB68B	# HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULPIEUP
-0x8CCF	0xB68C	# HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULSIOS
-0x8CD0	0xB68D	# HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULTHIEUTH
-0x8CD1	0xB68E	# HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULPHIEUPH
-0x8CD2	0xB68F	# HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULHIEUH
-0x8CD3	0xB690	# HANGUL SYLLABLE SSANGTIKEUT-YO-MIEUM
-0x8CD4	0xB691	# HANGUL SYLLABLE SSANGTIKEUT-YO-PIEUP
-0x8CD5	0xB692	# HANGUL SYLLABLE SSANGTIKEUT-YO-PIEUPSIOS
-0x8CD6	0xB693	# HANGUL SYLLABLE SSANGTIKEUT-YO-SIOS
-0x8CD7	0xB694	# HANGUL SYLLABLE SSANGTIKEUT-YO-SSANGSIOS
-0x8CD8	0xB695	# HANGUL SYLLABLE SSANGTIKEUT-YO-IEUNG
-0x8CD9	0xB696	# HANGUL SYLLABLE SSANGTIKEUT-YO-CIEUC
-0x8CDA	0xB697	# HANGUL SYLLABLE SSANGTIKEUT-YO-CHIEUCH
-0x8CDB	0xB698	# HANGUL SYLLABLE SSANGTIKEUT-YO-KHIEUKH
-0x8CDC	0xB699	# HANGUL SYLLABLE SSANGTIKEUT-YO-THIEUTH
-0x8CDD	0xB69A	# HANGUL SYLLABLE SSANGTIKEUT-YO-PHIEUPH
-0x8CDE	0xB69B	# HANGUL SYLLABLE SSANGTIKEUT-YO-HIEUH
-0x8CDF	0xB69E	# HANGUL SYLLABLE SSANGTIKEUT-U-SSANGKIYEOK
-0x8CE0	0xB69F	# HANGUL SYLLABLE SSANGTIKEUT-U-KIYEOKSIOS
-0x8CE1	0xB6A1	# HANGUL SYLLABLE SSANGTIKEUT-U-NIEUNCIEUC
-0x8CE2	0xB6A2	# HANGUL SYLLABLE SSANGTIKEUT-U-NIEUNHIEUH
-0x8CE3	0xB6A3	# HANGUL SYLLABLE SSANGTIKEUT-U-TIKEUT
-0x8CE4	0xB6A5	# HANGUL SYLLABLE SSANGTIKEUT-U-RIEULKIYEOK
-0x8CE5	0xB6A6	# HANGUL SYLLABLE SSANGTIKEUT-U-RIEULMIEUM
-0x8CE6	0xB6A7	# HANGUL SYLLABLE SSANGTIKEUT-U-RIEULPIEUP
-0x8CE7	0xB6A8	# HANGUL SYLLABLE SSANGTIKEUT-U-RIEULSIOS
-0x8CE8	0xB6A9	# HANGUL SYLLABLE SSANGTIKEUT-U-RIEULTHIEUTH
-0x8CE9	0xB6AA	# HANGUL SYLLABLE SSANGTIKEUT-U-RIEULPHIEUPH
-0x8CEA	0xB6AD	# HANGUL SYLLABLE SSANGTIKEUT-U-PIEUP
-0x8CEB	0xB6AE	# HANGUL SYLLABLE SSANGTIKEUT-U-PIEUPSIOS
-0x8CEC	0xB6AF	# HANGUL SYLLABLE SSANGTIKEUT-U-SIOS
-0x8CED	0xB6B0	# HANGUL SYLLABLE SSANGTIKEUT-U-SSANGSIOS
-0x8CEE	0xB6B2	# HANGUL SYLLABLE SSANGTIKEUT-U-CIEUC
-0x8CEF	0xB6B3	# HANGUL SYLLABLE SSANGTIKEUT-U-CHIEUCH
-0x8CF0	0xB6B4	# HANGUL SYLLABLE SSANGTIKEUT-U-KHIEUKH
-0x8CF1	0xB6B5	# HANGUL SYLLABLE SSANGTIKEUT-U-THIEUTH
-0x8CF2	0xB6B6	# HANGUL SYLLABLE SSANGTIKEUT-U-PHIEUPH
-0x8CF3	0xB6B7	# HANGUL SYLLABLE SSANGTIKEUT-U-HIEUH
-0x8CF4	0xB6B8	# HANGUL SYLLABLE SSANGTIKEUT-WEO
-0x8CF5	0xB6B9	# HANGUL SYLLABLE SSANGTIKEUT-WEO-KIYEOK
-0x8CF6	0xB6BA	# HANGUL SYLLABLE SSANGTIKEUT-WEO-SSANGKIYEOK
-0x8CF7	0xB6BB	# HANGUL SYLLABLE SSANGTIKEUT-WEO-KIYEOKSIOS
-0x8CF8	0xB6BC	# HANGUL SYLLABLE SSANGTIKEUT-WEO-NIEUN
-0x8CF9	0xB6BD	# HANGUL SYLLABLE SSANGTIKEUT-WEO-NIEUNCIEUC
-0x8CFA	0xB6BE	# HANGUL SYLLABLE SSANGTIKEUT-WEO-NIEUNHIEUH
-0x8CFB	0xB6BF	# HANGUL SYLLABLE SSANGTIKEUT-WEO-TIKEUT
-0x8CFC	0xB6C0	# HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEUL
-0x8CFD	0xB6C1	# HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULKIYEOK
-0x8CFE	0xB6C2	# HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULMIEUM
-0x8D41	0xB6C3	# HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULPIEUP
-0x8D42	0xB6C4	# HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULSIOS
-0x8D43	0xB6C5	# HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULTHIEUTH
-0x8D44	0xB6C6	# HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULPHIEUPH
-0x8D45	0xB6C7	# HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULHIEUH
-0x8D46	0xB6C8	# HANGUL SYLLABLE SSANGTIKEUT-WEO-MIEUM
-0x8D47	0xB6C9	# HANGUL SYLLABLE SSANGTIKEUT-WEO-PIEUP
-0x8D48	0xB6CA	# HANGUL SYLLABLE SSANGTIKEUT-WEO-PIEUPSIOS
-0x8D49	0xB6CB	# HANGUL SYLLABLE SSANGTIKEUT-WEO-SIOS
-0x8D4A	0xB6CC	# HANGUL SYLLABLE SSANGTIKEUT-WEO-SSANGSIOS
-0x8D4B	0xB6CD	# HANGUL SYLLABLE SSANGTIKEUT-WEO-IEUNG
-0x8D4C	0xB6CE	# HANGUL SYLLABLE SSANGTIKEUT-WEO-CIEUC
-0x8D4D	0xB6CF	# HANGUL SYLLABLE SSANGTIKEUT-WEO-CHIEUCH
-0x8D4E	0xB6D0	# HANGUL SYLLABLE SSANGTIKEUT-WEO-KHIEUKH
-0x8D4F	0xB6D1	# HANGUL SYLLABLE SSANGTIKEUT-WEO-THIEUTH
-0x8D50	0xB6D2	# HANGUL SYLLABLE SSANGTIKEUT-WEO-PHIEUPH
-0x8D51	0xB6D3	# HANGUL SYLLABLE SSANGTIKEUT-WEO-HIEUH
-0x8D52	0xB6D5	# HANGUL SYLLABLE SSANGTIKEUT-WE-KIYEOK
-0x8D53	0xB6D6	# HANGUL SYLLABLE SSANGTIKEUT-WE-SSANGKIYEOK
-0x8D54	0xB6D7	# HANGUL SYLLABLE SSANGTIKEUT-WE-KIYEOKSIOS
-0x8D55	0xB6D8	# HANGUL SYLLABLE SSANGTIKEUT-WE-NIEUN
-0x8D56	0xB6D9	# HANGUL SYLLABLE SSANGTIKEUT-WE-NIEUNCIEUC
-0x8D57	0xB6DA	# HANGUL SYLLABLE SSANGTIKEUT-WE-NIEUNHIEUH
-0x8D58	0xB6DB	# HANGUL SYLLABLE SSANGTIKEUT-WE-TIKEUT
-0x8D59	0xB6DC	# HANGUL SYLLABLE SSANGTIKEUT-WE-RIEUL
-0x8D5A	0xB6DD	# HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULKIYEOK
-0x8D61	0xB6DE	# HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULMIEUM
-0x8D62	0xB6DF	# HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULPIEUP
-0x8D63	0xB6E0	# HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULSIOS
-0x8D64	0xB6E1	# HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULTHIEUTH
-0x8D65	0xB6E2	# HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULPHIEUPH
-0x8D66	0xB6E3	# HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULHIEUH
-0x8D67	0xB6E4	# HANGUL SYLLABLE SSANGTIKEUT-WE-MIEUM
-0x8D68	0xB6E5	# HANGUL SYLLABLE SSANGTIKEUT-WE-PIEUP
-0x8D69	0xB6E6	# HANGUL SYLLABLE SSANGTIKEUT-WE-PIEUPSIOS
-0x8D6A	0xB6E7	# HANGUL SYLLABLE SSANGTIKEUT-WE-SIOS
-0x8D6B	0xB6E8	# HANGUL SYLLABLE SSANGTIKEUT-WE-SSANGSIOS
-0x8D6C	0xB6E9	# HANGUL SYLLABLE SSANGTIKEUT-WE-IEUNG
-0x8D6D	0xB6EA	# HANGUL SYLLABLE SSANGTIKEUT-WE-CIEUC
-0x8D6E	0xB6EB	# HANGUL SYLLABLE SSANGTIKEUT-WE-CHIEUCH
-0x8D6F	0xB6EC	# HANGUL SYLLABLE SSANGTIKEUT-WE-KHIEUKH
-0x8D70	0xB6ED	# HANGUL SYLLABLE SSANGTIKEUT-WE-THIEUTH
-0x8D71	0xB6EE	# HANGUL SYLLABLE SSANGTIKEUT-WE-PHIEUPH
-0x8D72	0xB6EF	# HANGUL SYLLABLE SSANGTIKEUT-WE-HIEUH
-0x8D73	0xB6F1	# HANGUL SYLLABLE SSANGTIKEUT-WI-KIYEOK
-0x8D74	0xB6F2	# HANGUL SYLLABLE SSANGTIKEUT-WI-SSANGKIYEOK
-0x8D75	0xB6F3	# HANGUL SYLLABLE SSANGTIKEUT-WI-KIYEOKSIOS
-0x8D76	0xB6F5	# HANGUL SYLLABLE SSANGTIKEUT-WI-NIEUNCIEUC
-0x8D77	0xB6F6	# HANGUL SYLLABLE SSANGTIKEUT-WI-NIEUNHIEUH
-0x8D78	0xB6F7	# HANGUL SYLLABLE SSANGTIKEUT-WI-TIKEUT
-0x8D79	0xB6F9	# HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULKIYEOK
-0x8D7A	0xB6FA	# HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULMIEUM
-0x8D81	0xB6FB	# HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULPIEUP
-0x8D82	0xB6FC	# HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULSIOS
-0x8D83	0xB6FD	# HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULTHIEUTH
-0x8D84	0xB6FE	# HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULPHIEUPH
-0x8D85	0xB6FF	# HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULHIEUH
-0x8D86	0xB702	# HANGUL SYLLABLE SSANGTIKEUT-WI-PIEUPSIOS
-0x8D87	0xB703	# HANGUL SYLLABLE SSANGTIKEUT-WI-SIOS
-0x8D88	0xB704	# HANGUL SYLLABLE SSANGTIKEUT-WI-SSANGSIOS
-0x8D89	0xB706	# HANGUL SYLLABLE SSANGTIKEUT-WI-CIEUC
-0x8D8A	0xB707	# HANGUL SYLLABLE SSANGTIKEUT-WI-CHIEUCH
-0x8D8B	0xB708	# HANGUL SYLLABLE SSANGTIKEUT-WI-KHIEUKH
-0x8D8C	0xB709	# HANGUL SYLLABLE SSANGTIKEUT-WI-THIEUTH
-0x8D8D	0xB70A	# HANGUL SYLLABLE SSANGTIKEUT-WI-PHIEUPH
-0x8D8E	0xB70B	# HANGUL SYLLABLE SSANGTIKEUT-WI-HIEUH
-0x8D8F	0xB70C	# HANGUL SYLLABLE SSANGTIKEUT-YU
-0x8D90	0xB70D	# HANGUL SYLLABLE SSANGTIKEUT-YU-KIYEOK
-0x8D91	0xB70E	# HANGUL SYLLABLE SSANGTIKEUT-YU-SSANGKIYEOK
-0x8D92	0xB70F	# HANGUL SYLLABLE SSANGTIKEUT-YU-KIYEOKSIOS
-0x8D93	0xB710	# HANGUL SYLLABLE SSANGTIKEUT-YU-NIEUN
-0x8D94	0xB711	# HANGUL SYLLABLE SSANGTIKEUT-YU-NIEUNCIEUC
-0x8D95	0xB712	# HANGUL SYLLABLE SSANGTIKEUT-YU-NIEUNHIEUH
-0x8D96	0xB713	# HANGUL SYLLABLE SSANGTIKEUT-YU-TIKEUT
-0x8D97	0xB714	# HANGUL SYLLABLE SSANGTIKEUT-YU-RIEUL
-0x8D98	0xB715	# HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULKIYEOK
-0x8D99	0xB716	# HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULMIEUM
-0x8D9A	0xB717	# HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULPIEUP
-0x8D9B	0xB718	# HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULSIOS
-0x8D9C	0xB719	# HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULTHIEUTH
-0x8D9D	0xB71A	# HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULPHIEUPH
-0x8D9E	0xB71B	# HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULHIEUH
-0x8D9F	0xB71C	# HANGUL SYLLABLE SSANGTIKEUT-YU-MIEUM
-0x8DA0	0xB71D	# HANGUL SYLLABLE SSANGTIKEUT-YU-PIEUP
-0x8DA1	0xB71E	# HANGUL SYLLABLE SSANGTIKEUT-YU-PIEUPSIOS
-0x8DA2	0xB71F	# HANGUL SYLLABLE SSANGTIKEUT-YU-SIOS
-0x8DA3	0xB720	# HANGUL SYLLABLE SSANGTIKEUT-YU-SSANGSIOS
-0x8DA4	0xB721	# HANGUL SYLLABLE SSANGTIKEUT-YU-IEUNG
-0x8DA5	0xB722	# HANGUL SYLLABLE SSANGTIKEUT-YU-CIEUC
-0x8DA6	0xB723	# HANGUL SYLLABLE SSANGTIKEUT-YU-CHIEUCH
-0x8DA7	0xB724	# HANGUL SYLLABLE SSANGTIKEUT-YU-KHIEUKH
-0x8DA8	0xB725	# HANGUL SYLLABLE SSANGTIKEUT-YU-THIEUTH
-0x8DA9	0xB726	# HANGUL SYLLABLE SSANGTIKEUT-YU-PHIEUPH
-0x8DAA	0xB727	# HANGUL SYLLABLE SSANGTIKEUT-YU-HIEUH
-0x8DAB	0xB72A	# HANGUL SYLLABLE SSANGTIKEUT-EU-SSANGKIYEOK
-0x8DAC	0xB72B	# HANGUL SYLLABLE SSANGTIKEUT-EU-KIYEOKSIOS
-0x8DAD	0xB72D	# HANGUL SYLLABLE SSANGTIKEUT-EU-NIEUNCIEUC
-0x8DAE	0xB72E	# HANGUL SYLLABLE SSANGTIKEUT-EU-NIEUNHIEUH
-0x8DAF	0xB731	# HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULKIYEOK
-0x8DB0	0xB732	# HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULMIEUM
-0x8DB1	0xB733	# HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULPIEUP
-0x8DB2	0xB734	# HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULSIOS
-0x8DB3	0xB735	# HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULTHIEUTH
-0x8DB4	0xB736	# HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULPHIEUPH
-0x8DB5	0xB737	# HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULHIEUH
-0x8DB6	0xB73A	# HANGUL SYLLABLE SSANGTIKEUT-EU-PIEUPSIOS
-0x8DB7	0xB73C	# HANGUL SYLLABLE SSANGTIKEUT-EU-SSANGSIOS
-0x8DB8	0xB73D	# HANGUL SYLLABLE SSANGTIKEUT-EU-IEUNG
-0x8DB9	0xB73E	# HANGUL SYLLABLE SSANGTIKEUT-EU-CIEUC
-0x8DBA	0xB73F	# HANGUL SYLLABLE SSANGTIKEUT-EU-CHIEUCH
-0x8DBB	0xB740	# HANGUL SYLLABLE SSANGTIKEUT-EU-KHIEUKH
-0x8DBC	0xB741	# HANGUL SYLLABLE SSANGTIKEUT-EU-THIEUTH
-0x8DBD	0xB742	# HANGUL SYLLABLE SSANGTIKEUT-EU-PHIEUPH
-0x8DBE	0xB743	# HANGUL SYLLABLE SSANGTIKEUT-EU-HIEUH
-0x8DBF	0xB745	# HANGUL SYLLABLE SSANGTIKEUT-YI-KIYEOK
-0x8DC0	0xB746	# HANGUL SYLLABLE SSANGTIKEUT-YI-SSANGKIYEOK
-0x8DC1	0xB747	# HANGUL SYLLABLE SSANGTIKEUT-YI-KIYEOKSIOS
-0x8DC2	0xB749	# HANGUL SYLLABLE SSANGTIKEUT-YI-NIEUNCIEUC
-0x8DC3	0xB74A	# HANGUL SYLLABLE SSANGTIKEUT-YI-NIEUNHIEUH
-0x8DC4	0xB74B	# HANGUL SYLLABLE SSANGTIKEUT-YI-TIKEUT
-0x8DC5	0xB74D	# HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULKIYEOK
-0x8DC6	0xB74E	# HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULMIEUM
-0x8DC7	0xB74F	# HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULPIEUP
-0x8DC8	0xB750	# HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULSIOS
-0x8DC9	0xB751	# HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULTHIEUTH
-0x8DCA	0xB752	# HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULPHIEUPH
-0x8DCB	0xB753	# HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULHIEUH
-0x8DCC	0xB756	# HANGUL SYLLABLE SSANGTIKEUT-YI-PIEUPSIOS
-0x8DCD	0xB757	# HANGUL SYLLABLE SSANGTIKEUT-YI-SIOS
-0x8DCE	0xB758	# HANGUL SYLLABLE SSANGTIKEUT-YI-SSANGSIOS
-0x8DCF	0xB759	# HANGUL SYLLABLE SSANGTIKEUT-YI-IEUNG
-0x8DD0	0xB75A	# HANGUL SYLLABLE SSANGTIKEUT-YI-CIEUC
-0x8DD1	0xB75B	# HANGUL SYLLABLE SSANGTIKEUT-YI-CHIEUCH
-0x8DD2	0xB75C	# HANGUL SYLLABLE SSANGTIKEUT-YI-KHIEUKH
-0x8DD3	0xB75D	# HANGUL SYLLABLE SSANGTIKEUT-YI-THIEUTH
-0x8DD4	0xB75E	# HANGUL SYLLABLE SSANGTIKEUT-YI-PHIEUPH
-0x8DD5	0xB75F	# HANGUL SYLLABLE SSANGTIKEUT-YI-HIEUH
-0x8DD6	0xB761	# HANGUL SYLLABLE SSANGTIKEUT-I-KIYEOK
-0x8DD7	0xB762	# HANGUL SYLLABLE SSANGTIKEUT-I-SSANGKIYEOK
-0x8DD8	0xB763	# HANGUL SYLLABLE SSANGTIKEUT-I-KIYEOKSIOS
-0x8DD9	0xB765	# HANGUL SYLLABLE SSANGTIKEUT-I-NIEUNCIEUC
-0x8DDA	0xB766	# HANGUL SYLLABLE SSANGTIKEUT-I-NIEUNHIEUH
-0x8DDB	0xB767	# HANGUL SYLLABLE SSANGTIKEUT-I-TIKEUT
-0x8DDC	0xB769	# HANGUL SYLLABLE SSANGTIKEUT-I-RIEULKIYEOK
-0x8DDD	0xB76A	# HANGUL SYLLABLE SSANGTIKEUT-I-RIEULMIEUM
-0x8DDE	0xB76B	# HANGUL SYLLABLE SSANGTIKEUT-I-RIEULPIEUP
-0x8DDF	0xB76C	# HANGUL SYLLABLE SSANGTIKEUT-I-RIEULSIOS
-0x8DE0	0xB76D	# HANGUL SYLLABLE SSANGTIKEUT-I-RIEULTHIEUTH
-0x8DE1	0xB76E	# HANGUL SYLLABLE SSANGTIKEUT-I-RIEULPHIEUPH
-0x8DE2	0xB76F	# HANGUL SYLLABLE SSANGTIKEUT-I-RIEULHIEUH
-0x8DE3	0xB772	# HANGUL SYLLABLE SSANGTIKEUT-I-PIEUPSIOS
-0x8DE4	0xB774	# HANGUL SYLLABLE SSANGTIKEUT-I-SSANGSIOS
-0x8DE5	0xB776	# HANGUL SYLLABLE SSANGTIKEUT-I-CIEUC
-0x8DE6	0xB777	# HANGUL SYLLABLE SSANGTIKEUT-I-CHIEUCH
-0x8DE7	0xB778	# HANGUL SYLLABLE SSANGTIKEUT-I-KHIEUKH
-0x8DE8	0xB779	# HANGUL SYLLABLE SSANGTIKEUT-I-THIEUTH
-0x8DE9	0xB77A	# HANGUL SYLLABLE SSANGTIKEUT-I-PHIEUPH
-0x8DEA	0xB77B	# HANGUL SYLLABLE SSANGTIKEUT-I-HIEUH
-0x8DEB	0xB77E	# HANGUL SYLLABLE RIEUL-A-SSANGKIYEOK
-0x8DEC	0xB77F	# HANGUL SYLLABLE RIEUL-A-KIYEOKSIOS
-0x8DED	0xB781	# HANGUL SYLLABLE RIEUL-A-NIEUNCIEUC
-0x8DEE	0xB782	# HANGUL SYLLABLE RIEUL-A-NIEUNHIEUH
-0x8DEF	0xB783	# HANGUL SYLLABLE RIEUL-A-TIKEUT
-0x8DF0	0xB785	# HANGUL SYLLABLE RIEUL-A-RIEULKIYEOK
-0x8DF1	0xB786	# HANGUL SYLLABLE RIEUL-A-RIEULMIEUM
-0x8DF2	0xB787	# HANGUL SYLLABLE RIEUL-A-RIEULPIEUP
-0x8DF3	0xB788	# HANGUL SYLLABLE RIEUL-A-RIEULSIOS
-0x8DF4	0xB789	# HANGUL SYLLABLE RIEUL-A-RIEULTHIEUTH
-0x8DF5	0xB78A	# HANGUL SYLLABLE RIEUL-A-RIEULPHIEUPH
-0x8DF6	0xB78B	# HANGUL SYLLABLE RIEUL-A-RIEULHIEUH
-0x8DF7	0xB78E	# HANGUL SYLLABLE RIEUL-A-PIEUPSIOS
-0x8DF8	0xB793	# HANGUL SYLLABLE RIEUL-A-CHIEUCH
-0x8DF9	0xB794	# HANGUL SYLLABLE RIEUL-A-KHIEUKH
-0x8DFA	0xB795	# HANGUL SYLLABLE RIEUL-A-THIEUTH
-0x8DFB	0xB79A	# HANGUL SYLLABLE RIEUL-AE-SSANGKIYEOK
-0x8DFC	0xB79B	# HANGUL SYLLABLE RIEUL-AE-KIYEOKSIOS
-0x8DFD	0xB79D	# HANGUL SYLLABLE RIEUL-AE-NIEUNCIEUC
-0x8DFE	0xB79E	# HANGUL SYLLABLE RIEUL-AE-NIEUNHIEUH
-0x8E41	0xB79F	# HANGUL SYLLABLE RIEUL-AE-TIKEUT
-0x8E42	0xB7A1	# HANGUL SYLLABLE RIEUL-AE-RIEULKIYEOK
-0x8E43	0xB7A2	# HANGUL SYLLABLE RIEUL-AE-RIEULMIEUM
-0x8E44	0xB7A3	# HANGUL SYLLABLE RIEUL-AE-RIEULPIEUP
-0x8E45	0xB7A4	# HANGUL SYLLABLE RIEUL-AE-RIEULSIOS
-0x8E46	0xB7A5	# HANGUL SYLLABLE RIEUL-AE-RIEULTHIEUTH
-0x8E47	0xB7A6	# HANGUL SYLLABLE RIEUL-AE-RIEULPHIEUPH
-0x8E48	0xB7A7	# HANGUL SYLLABLE RIEUL-AE-RIEULHIEUH
-0x8E49	0xB7AA	# HANGUL SYLLABLE RIEUL-AE-PIEUPSIOS
-0x8E4A	0xB7AE	# HANGUL SYLLABLE RIEUL-AE-CIEUC
-0x8E4B	0xB7AF	# HANGUL SYLLABLE RIEUL-AE-CHIEUCH
-0x8E4C	0xB7B0	# HANGUL SYLLABLE RIEUL-AE-KHIEUKH
-0x8E4D	0xB7B1	# HANGUL SYLLABLE RIEUL-AE-THIEUTH
-0x8E4E	0xB7B2	# HANGUL SYLLABLE RIEUL-AE-PHIEUPH
-0x8E4F	0xB7B3	# HANGUL SYLLABLE RIEUL-AE-HIEUH
-0x8E50	0xB7B6	# HANGUL SYLLABLE RIEUL-YA-SSANGKIYEOK
-0x8E51	0xB7B7	# HANGUL SYLLABLE RIEUL-YA-KIYEOKSIOS
-0x8E52	0xB7B9	# HANGUL SYLLABLE RIEUL-YA-NIEUNCIEUC
-0x8E53	0xB7BA	# HANGUL SYLLABLE RIEUL-YA-NIEUNHIEUH
-0x8E54	0xB7BB	# HANGUL SYLLABLE RIEUL-YA-TIKEUT
-0x8E55	0xB7BC	# HANGUL SYLLABLE RIEUL-YA-RIEUL
-0x8E56	0xB7BD	# HANGUL SYLLABLE RIEUL-YA-RIEULKIYEOK
-0x8E57	0xB7BE	# HANGUL SYLLABLE RIEUL-YA-RIEULMIEUM
-0x8E58	0xB7BF	# HANGUL SYLLABLE RIEUL-YA-RIEULPIEUP
-0x8E59	0xB7C0	# HANGUL SYLLABLE RIEUL-YA-RIEULSIOS
-0x8E5A	0xB7C1	# HANGUL SYLLABLE RIEUL-YA-RIEULTHIEUTH
-0x8E61	0xB7C2	# HANGUL SYLLABLE RIEUL-YA-RIEULPHIEUPH
-0x8E62	0xB7C3	# HANGUL SYLLABLE RIEUL-YA-RIEULHIEUH
-0x8E63	0xB7C4	# HANGUL SYLLABLE RIEUL-YA-MIEUM
-0x8E64	0xB7C5	# HANGUL SYLLABLE RIEUL-YA-PIEUP
-0x8E65	0xB7C6	# HANGUL SYLLABLE RIEUL-YA-PIEUPSIOS
-0x8E66	0xB7C8	# HANGUL SYLLABLE RIEUL-YA-SSANGSIOS
-0x8E67	0xB7CA	# HANGUL SYLLABLE RIEUL-YA-CIEUC
-0x8E68	0xB7CB	# HANGUL SYLLABLE RIEUL-YA-CHIEUCH
-0x8E69	0xB7CC	# HANGUL SYLLABLE RIEUL-YA-KHIEUKH
-0x8E6A	0xB7CD	# HANGUL SYLLABLE RIEUL-YA-THIEUTH
-0x8E6B	0xB7CE	# HANGUL SYLLABLE RIEUL-YA-PHIEUPH
-0x8E6C	0xB7CF	# HANGUL SYLLABLE RIEUL-YA-HIEUH
-0x8E6D	0xB7D0	# HANGUL SYLLABLE RIEUL-YAE
-0x8E6E	0xB7D1	# HANGUL SYLLABLE RIEUL-YAE-KIYEOK
-0x8E6F	0xB7D2	# HANGUL SYLLABLE RIEUL-YAE-SSANGKIYEOK
-0x8E70	0xB7D3	# HANGUL SYLLABLE RIEUL-YAE-KIYEOKSIOS
-0x8E71	0xB7D4	# HANGUL SYLLABLE RIEUL-YAE-NIEUN
-0x8E72	0xB7D5	# HANGUL SYLLABLE RIEUL-YAE-NIEUNCIEUC
-0x8E73	0xB7D6	# HANGUL SYLLABLE RIEUL-YAE-NIEUNHIEUH
-0x8E74	0xB7D7	# HANGUL SYLLABLE RIEUL-YAE-TIKEUT
-0x8E75	0xB7D8	# HANGUL SYLLABLE RIEUL-YAE-RIEUL
-0x8E76	0xB7D9	# HANGUL SYLLABLE RIEUL-YAE-RIEULKIYEOK
-0x8E77	0xB7DA	# HANGUL SYLLABLE RIEUL-YAE-RIEULMIEUM
-0x8E78	0xB7DB	# HANGUL SYLLABLE RIEUL-YAE-RIEULPIEUP
-0x8E79	0xB7DC	# HANGUL SYLLABLE RIEUL-YAE-RIEULSIOS
-0x8E7A	0xB7DD	# HANGUL SYLLABLE RIEUL-YAE-RIEULTHIEUTH
-0x8E81	0xB7DE	# HANGUL SYLLABLE RIEUL-YAE-RIEULPHIEUPH
-0x8E82	0xB7DF	# HANGUL SYLLABLE RIEUL-YAE-RIEULHIEUH
-0x8E83	0xB7E0	# HANGUL SYLLABLE RIEUL-YAE-MIEUM
-0x8E84	0xB7E1	# HANGUL SYLLABLE RIEUL-YAE-PIEUP
-0x8E85	0xB7E2	# HANGUL SYLLABLE RIEUL-YAE-PIEUPSIOS
-0x8E86	0xB7E3	# HANGUL SYLLABLE RIEUL-YAE-SIOS
-0x8E87	0xB7E4	# HANGUL SYLLABLE RIEUL-YAE-SSANGSIOS
-0x8E88	0xB7E5	# HANGUL SYLLABLE RIEUL-YAE-IEUNG
-0x8E89	0xB7E6	# HANGUL SYLLABLE RIEUL-YAE-CIEUC
-0x8E8A	0xB7E7	# HANGUL SYLLABLE RIEUL-YAE-CHIEUCH
-0x8E8B	0xB7E8	# HANGUL SYLLABLE RIEUL-YAE-KHIEUKH
-0x8E8C	0xB7E9	# HANGUL SYLLABLE RIEUL-YAE-THIEUTH
-0x8E8D	0xB7EA	# HANGUL SYLLABLE RIEUL-YAE-PHIEUPH
-0x8E8E	0xB7EB	# HANGUL SYLLABLE RIEUL-YAE-HIEUH
-0x8E8F	0xB7EE	# HANGUL SYLLABLE RIEUL-EO-SSANGKIYEOK
-0x8E90	0xB7EF	# HANGUL SYLLABLE RIEUL-EO-KIYEOKSIOS
-0x8E91	0xB7F1	# HANGUL SYLLABLE RIEUL-EO-NIEUNCIEUC
-0x8E92	0xB7F2	# HANGUL SYLLABLE RIEUL-EO-NIEUNHIEUH
-0x8E93	0xB7F3	# HANGUL SYLLABLE RIEUL-EO-TIKEUT
-0x8E94	0xB7F5	# HANGUL SYLLABLE RIEUL-EO-RIEULKIYEOK
-0x8E95	0xB7F6	# HANGUL SYLLABLE RIEUL-EO-RIEULMIEUM
-0x8E96	0xB7F7	# HANGUL SYLLABLE RIEUL-EO-RIEULPIEUP
-0x8E97	0xB7F8	# HANGUL SYLLABLE RIEUL-EO-RIEULSIOS
-0x8E98	0xB7F9	# HANGUL SYLLABLE RIEUL-EO-RIEULTHIEUTH
-0x8E99	0xB7FA	# HANGUL SYLLABLE RIEUL-EO-RIEULPHIEUPH
-0x8E9A	0xB7FB	# HANGUL SYLLABLE RIEUL-EO-RIEULHIEUH
-0x8E9B	0xB7FE	# HANGUL SYLLABLE RIEUL-EO-PIEUPSIOS
-0x8E9C	0xB802	# HANGUL SYLLABLE RIEUL-EO-CIEUC
-0x8E9D	0xB803	# HANGUL SYLLABLE RIEUL-EO-CHIEUCH
-0x8E9E	0xB804	# HANGUL SYLLABLE RIEUL-EO-KHIEUKH
-0x8E9F	0xB805	# HANGUL SYLLABLE RIEUL-EO-THIEUTH
-0x8EA0	0xB806	# HANGUL SYLLABLE RIEUL-EO-PHIEUPH
-0x8EA1	0xB80A	# HANGUL SYLLABLE RIEUL-E-SSANGKIYEOK
-0x8EA2	0xB80B	# HANGUL SYLLABLE RIEUL-E-KIYEOKSIOS
-0x8EA3	0xB80D	# HANGUL SYLLABLE RIEUL-E-NIEUNCIEUC
-0x8EA4	0xB80E	# HANGUL SYLLABLE RIEUL-E-NIEUNHIEUH
-0x8EA5	0xB80F	# HANGUL SYLLABLE RIEUL-E-TIKEUT
-0x8EA6	0xB811	# HANGUL SYLLABLE RIEUL-E-RIEULKIYEOK
-0x8EA7	0xB812	# HANGUL SYLLABLE RIEUL-E-RIEULMIEUM
-0x8EA8	0xB813	# HANGUL SYLLABLE RIEUL-E-RIEULPIEUP
-0x8EA9	0xB814	# HANGUL SYLLABLE RIEUL-E-RIEULSIOS
-0x8EAA	0xB815	# HANGUL SYLLABLE RIEUL-E-RIEULTHIEUTH
-0x8EAB	0xB816	# HANGUL SYLLABLE RIEUL-E-RIEULPHIEUPH
-0x8EAC	0xB817	# HANGUL SYLLABLE RIEUL-E-RIEULHIEUH
-0x8EAD	0xB81A	# HANGUL SYLLABLE RIEUL-E-PIEUPSIOS
-0x8EAE	0xB81C	# HANGUL SYLLABLE RIEUL-E-SSANGSIOS
-0x8EAF	0xB81E	# HANGUL SYLLABLE RIEUL-E-CIEUC
-0x8EB0	0xB81F	# HANGUL SYLLABLE RIEUL-E-CHIEUCH
-0x8EB1	0xB820	# HANGUL SYLLABLE RIEUL-E-KHIEUKH
-0x8EB2	0xB821	# HANGUL SYLLABLE RIEUL-E-THIEUTH
-0x8EB3	0xB822	# HANGUL SYLLABLE RIEUL-E-PHIEUPH
-0x8EB4	0xB823	# HANGUL SYLLABLE RIEUL-E-HIEUH
-0x8EB5	0xB826	# HANGUL SYLLABLE RIEUL-YEO-SSANGKIYEOK
-0x8EB6	0xB827	# HANGUL SYLLABLE RIEUL-YEO-KIYEOKSIOS
-0x8EB7	0xB829	# HANGUL SYLLABLE RIEUL-YEO-NIEUNCIEUC
-0x8EB8	0xB82A	# HANGUL SYLLABLE RIEUL-YEO-NIEUNHIEUH
-0x8EB9	0xB82B	# HANGUL SYLLABLE RIEUL-YEO-TIKEUT
-0x8EBA	0xB82D	# HANGUL SYLLABLE RIEUL-YEO-RIEULKIYEOK
-0x8EBB	0xB82E	# HANGUL SYLLABLE RIEUL-YEO-RIEULMIEUM
-0x8EBC	0xB82F	# HANGUL SYLLABLE RIEUL-YEO-RIEULPIEUP
-0x8EBD	0xB830	# HANGUL SYLLABLE RIEUL-YEO-RIEULSIOS
-0x8EBE	0xB831	# HANGUL SYLLABLE RIEUL-YEO-RIEULTHIEUTH
-0x8EBF	0xB832	# HANGUL SYLLABLE RIEUL-YEO-RIEULPHIEUPH
-0x8EC0	0xB833	# HANGUL SYLLABLE RIEUL-YEO-RIEULHIEUH
-0x8EC1	0xB836	# HANGUL SYLLABLE RIEUL-YEO-PIEUPSIOS
-0x8EC2	0xB83A	# HANGUL SYLLABLE RIEUL-YEO-CIEUC
-0x8EC3	0xB83B	# HANGUL SYLLABLE RIEUL-YEO-CHIEUCH
-0x8EC4	0xB83C	# HANGUL SYLLABLE RIEUL-YEO-KHIEUKH
-0x8EC5	0xB83D	# HANGUL SYLLABLE RIEUL-YEO-THIEUTH
-0x8EC6	0xB83E	# HANGUL SYLLABLE RIEUL-YEO-PHIEUPH
-0x8EC7	0xB83F	# HANGUL SYLLABLE RIEUL-YEO-HIEUH
-0x8EC8	0xB841	# HANGUL SYLLABLE RIEUL-YE-KIYEOK
-0x8EC9	0xB842	# HANGUL SYLLABLE RIEUL-YE-SSANGKIYEOK
-0x8ECA	0xB843	# HANGUL SYLLABLE RIEUL-YE-KIYEOKSIOS
-0x8ECB	0xB845	# HANGUL SYLLABLE RIEUL-YE-NIEUNCIEUC
-0x8ECC	0xB846	# HANGUL SYLLABLE RIEUL-YE-NIEUNHIEUH
-0x8ECD	0xB847	# HANGUL SYLLABLE RIEUL-YE-TIKEUT
-0x8ECE	0xB848	# HANGUL SYLLABLE RIEUL-YE-RIEUL
-0x8ECF	0xB849	# HANGUL SYLLABLE RIEUL-YE-RIEULKIYEOK
-0x8ED0	0xB84A	# HANGUL SYLLABLE RIEUL-YE-RIEULMIEUM
-0x8ED1	0xB84B	# HANGUL SYLLABLE RIEUL-YE-RIEULPIEUP
-0x8ED2	0xB84C	# HANGUL SYLLABLE RIEUL-YE-RIEULSIOS
-0x8ED3	0xB84D	# HANGUL SYLLABLE RIEUL-YE-RIEULTHIEUTH
-0x8ED4	0xB84E	# HANGUL SYLLABLE RIEUL-YE-RIEULPHIEUPH
-0x8ED5	0xB84F	# HANGUL SYLLABLE RIEUL-YE-RIEULHIEUH
-0x8ED6	0xB850	# HANGUL SYLLABLE RIEUL-YE-MIEUM
-0x8ED7	0xB852	# HANGUL SYLLABLE RIEUL-YE-PIEUPSIOS
-0x8ED8	0xB854	# HANGUL SYLLABLE RIEUL-YE-SSANGSIOS
-0x8ED9	0xB855	# HANGUL SYLLABLE RIEUL-YE-IEUNG
-0x8EDA	0xB856	# HANGUL SYLLABLE RIEUL-YE-CIEUC
-0x8EDB	0xB857	# HANGUL SYLLABLE RIEUL-YE-CHIEUCH
-0x8EDC	0xB858	# HANGUL SYLLABLE RIEUL-YE-KHIEUKH
-0x8EDD	0xB859	# HANGUL SYLLABLE RIEUL-YE-THIEUTH
-0x8EDE	0xB85A	# HANGUL SYLLABLE RIEUL-YE-PHIEUPH
-0x8EDF	0xB85B	# HANGUL SYLLABLE RIEUL-YE-HIEUH
-0x8EE0	0xB85E	# HANGUL SYLLABLE RIEUL-O-SSANGKIYEOK
-0x8EE1	0xB85F	# HANGUL SYLLABLE RIEUL-O-KIYEOKSIOS
-0x8EE2	0xB861	# HANGUL SYLLABLE RIEUL-O-NIEUNCIEUC
-0x8EE3	0xB862	# HANGUL SYLLABLE RIEUL-O-NIEUNHIEUH
-0x8EE4	0xB863	# HANGUL SYLLABLE RIEUL-O-TIKEUT
-0x8EE5	0xB865	# HANGUL SYLLABLE RIEUL-O-RIEULKIYEOK
-0x8EE6	0xB866	# HANGUL SYLLABLE RIEUL-O-RIEULMIEUM
-0x8EE7	0xB867	# HANGUL SYLLABLE RIEUL-O-RIEULPIEUP
-0x8EE8	0xB868	# HANGUL SYLLABLE RIEUL-O-RIEULSIOS
-0x8EE9	0xB869	# HANGUL SYLLABLE RIEUL-O-RIEULTHIEUTH
-0x8EEA	0xB86A	# HANGUL SYLLABLE RIEUL-O-RIEULPHIEUPH
-0x8EEB	0xB86B	# HANGUL SYLLABLE RIEUL-O-RIEULHIEUH
-0x8EEC	0xB86E	# HANGUL SYLLABLE RIEUL-O-PIEUPSIOS
-0x8EED	0xB870	# HANGUL SYLLABLE RIEUL-O-SSANGSIOS
-0x8EEE	0xB872	# HANGUL SYLLABLE RIEUL-O-CIEUC
-0x8EEF	0xB873	# HANGUL SYLLABLE RIEUL-O-CHIEUCH
-0x8EF0	0xB874	# HANGUL SYLLABLE RIEUL-O-KHIEUKH
-0x8EF1	0xB875	# HANGUL SYLLABLE RIEUL-O-THIEUTH
-0x8EF2	0xB876	# HANGUL SYLLABLE RIEUL-O-PHIEUPH
-0x8EF3	0xB877	# HANGUL SYLLABLE RIEUL-O-HIEUH
-0x8EF4	0xB879	# HANGUL SYLLABLE RIEUL-WA-KIYEOK
-0x8EF5	0xB87A	# HANGUL SYLLABLE RIEUL-WA-SSANGKIYEOK
-0x8EF6	0xB87B	# HANGUL SYLLABLE RIEUL-WA-KIYEOKSIOS
-0x8EF7	0xB87D	# HANGUL SYLLABLE RIEUL-WA-NIEUNCIEUC
-0x8EF8	0xB87E	# HANGUL SYLLABLE RIEUL-WA-NIEUNHIEUH
-0x8EF9	0xB87F	# HANGUL SYLLABLE RIEUL-WA-TIKEUT
-0x8EFA	0xB880	# HANGUL SYLLABLE RIEUL-WA-RIEUL
-0x8EFB	0xB881	# HANGUL SYLLABLE RIEUL-WA-RIEULKIYEOK
-0x8EFC	0xB882	# HANGUL SYLLABLE RIEUL-WA-RIEULMIEUM
-0x8EFD	0xB883	# HANGUL SYLLABLE RIEUL-WA-RIEULPIEUP
-0x8EFE	0xB884	# HANGUL SYLLABLE RIEUL-WA-RIEULSIOS
-0x8F41	0xB885	# HANGUL SYLLABLE RIEUL-WA-RIEULTHIEUTH
-0x8F42	0xB886	# HANGUL SYLLABLE RIEUL-WA-RIEULPHIEUPH
-0x8F43	0xB887	# HANGUL SYLLABLE RIEUL-WA-RIEULHIEUH
-0x8F44	0xB888	# HANGUL SYLLABLE RIEUL-WA-MIEUM
-0x8F45	0xB889	# HANGUL SYLLABLE RIEUL-WA-PIEUP
-0x8F46	0xB88A	# HANGUL SYLLABLE RIEUL-WA-PIEUPSIOS
-0x8F47	0xB88B	# HANGUL SYLLABLE RIEUL-WA-SIOS
-0x8F48	0xB88C	# HANGUL SYLLABLE RIEUL-WA-SSANGSIOS
-0x8F49	0xB88E	# HANGUL SYLLABLE RIEUL-WA-CIEUC
-0x8F4A	0xB88F	# HANGUL SYLLABLE RIEUL-WA-CHIEUCH
-0x8F4B	0xB890	# HANGUL SYLLABLE RIEUL-WA-KHIEUKH
-0x8F4C	0xB891	# HANGUL SYLLABLE RIEUL-WA-THIEUTH
-0x8F4D	0xB892	# HANGUL SYLLABLE RIEUL-WA-PHIEUPH
-0x8F4E	0xB893	# HANGUL SYLLABLE RIEUL-WA-HIEUH
-0x8F4F	0xB894	# HANGUL SYLLABLE RIEUL-WAE
-0x8F50	0xB895	# HANGUL SYLLABLE RIEUL-WAE-KIYEOK
-0x8F51	0xB896	# HANGUL SYLLABLE RIEUL-WAE-SSANGKIYEOK
-0x8F52	0xB897	# HANGUL SYLLABLE RIEUL-WAE-KIYEOKSIOS
-0x8F53	0xB898	# HANGUL SYLLABLE RIEUL-WAE-NIEUN
-0x8F54	0xB899	# HANGUL SYLLABLE RIEUL-WAE-NIEUNCIEUC
-0x8F55	0xB89A	# HANGUL SYLLABLE RIEUL-WAE-NIEUNHIEUH
-0x8F56	0xB89B	# HANGUL SYLLABLE RIEUL-WAE-TIKEUT
-0x8F57	0xB89C	# HANGUL SYLLABLE RIEUL-WAE-RIEUL
-0x8F58	0xB89D	# HANGUL SYLLABLE RIEUL-WAE-RIEULKIYEOK
-0x8F59	0xB89E	# HANGUL SYLLABLE RIEUL-WAE-RIEULMIEUM
-0x8F5A	0xB89F	# HANGUL SYLLABLE RIEUL-WAE-RIEULPIEUP
-0x8F61	0xB8A0	# HANGUL SYLLABLE RIEUL-WAE-RIEULSIOS
-0x8F62	0xB8A1	# HANGUL SYLLABLE RIEUL-WAE-RIEULTHIEUTH
-0x8F63	0xB8A2	# HANGUL SYLLABLE RIEUL-WAE-RIEULPHIEUPH
-0x8F64	0xB8A3	# HANGUL SYLLABLE RIEUL-WAE-RIEULHIEUH
-0x8F65	0xB8A4	# HANGUL SYLLABLE RIEUL-WAE-MIEUM
-0x8F66	0xB8A5	# HANGUL SYLLABLE RIEUL-WAE-PIEUP
-0x8F67	0xB8A6	# HANGUL SYLLABLE RIEUL-WAE-PIEUPSIOS
-0x8F68	0xB8A7	# HANGUL SYLLABLE RIEUL-WAE-SIOS
-0x8F69	0xB8A9	# HANGUL SYLLABLE RIEUL-WAE-IEUNG
-0x8F6A	0xB8AA	# HANGUL SYLLABLE RIEUL-WAE-CIEUC
-0x8F6B	0xB8AB	# HANGUL SYLLABLE RIEUL-WAE-CHIEUCH
-0x8F6C	0xB8AC	# HANGUL SYLLABLE RIEUL-WAE-KHIEUKH
-0x8F6D	0xB8AD	# HANGUL SYLLABLE RIEUL-WAE-THIEUTH
-0x8F6E	0xB8AE	# HANGUL SYLLABLE RIEUL-WAE-PHIEUPH
-0x8F6F	0xB8AF	# HANGUL SYLLABLE RIEUL-WAE-HIEUH
-0x8F70	0xB8B1	# HANGUL SYLLABLE RIEUL-OE-KIYEOK
-0x8F71	0xB8B2	# HANGUL SYLLABLE RIEUL-OE-SSANGKIYEOK
-0x8F72	0xB8B3	# HANGUL SYLLABLE RIEUL-OE-KIYEOKSIOS
-0x8F73	0xB8B5	# HANGUL SYLLABLE RIEUL-OE-NIEUNCIEUC
-0x8F74	0xB8B6	# HANGUL SYLLABLE RIEUL-OE-NIEUNHIEUH
-0x8F75	0xB8B7	# HANGUL SYLLABLE RIEUL-OE-TIKEUT
-0x8F76	0xB8B9	# HANGUL SYLLABLE RIEUL-OE-RIEULKIYEOK
-0x8F77	0xB8BA	# HANGUL SYLLABLE RIEUL-OE-RIEULMIEUM
-0x8F78	0xB8BB	# HANGUL SYLLABLE RIEUL-OE-RIEULPIEUP
-0x8F79	0xB8BC	# HANGUL SYLLABLE RIEUL-OE-RIEULSIOS
-0x8F7A	0xB8BD	# HANGUL SYLLABLE RIEUL-OE-RIEULTHIEUTH
-0x8F81	0xB8BE	# HANGUL SYLLABLE RIEUL-OE-RIEULPHIEUPH
-0x8F82	0xB8BF	# HANGUL SYLLABLE RIEUL-OE-RIEULHIEUH
-0x8F83	0xB8C2	# HANGUL SYLLABLE RIEUL-OE-PIEUPSIOS
-0x8F84	0xB8C4	# HANGUL SYLLABLE RIEUL-OE-SSANGSIOS
-0x8F85	0xB8C6	# HANGUL SYLLABLE RIEUL-OE-CIEUC
-0x8F86	0xB8C7	# HANGUL SYLLABLE RIEUL-OE-CHIEUCH
-0x8F87	0xB8C8	# HANGUL SYLLABLE RIEUL-OE-KHIEUKH
-0x8F88	0xB8C9	# HANGUL SYLLABLE RIEUL-OE-THIEUTH
-0x8F89	0xB8CA	# HANGUL SYLLABLE RIEUL-OE-PHIEUPH
-0x8F8A	0xB8CB	# HANGUL SYLLABLE RIEUL-OE-HIEUH
-0x8F8B	0xB8CD	# HANGUL SYLLABLE RIEUL-YO-KIYEOK
-0x8F8C	0xB8CE	# HANGUL SYLLABLE RIEUL-YO-SSANGKIYEOK
-0x8F8D	0xB8CF	# HANGUL SYLLABLE RIEUL-YO-KIYEOKSIOS
-0x8F8E	0xB8D1	# HANGUL SYLLABLE RIEUL-YO-NIEUNCIEUC
-0x8F8F	0xB8D2	# HANGUL SYLLABLE RIEUL-YO-NIEUNHIEUH
-0x8F90	0xB8D3	# HANGUL SYLLABLE RIEUL-YO-TIKEUT
-0x8F91	0xB8D5	# HANGUL SYLLABLE RIEUL-YO-RIEULKIYEOK
-0x8F92	0xB8D6	# HANGUL SYLLABLE RIEUL-YO-RIEULMIEUM
-0x8F93	0xB8D7	# HANGUL SYLLABLE RIEUL-YO-RIEULPIEUP
-0x8F94	0xB8D8	# HANGUL SYLLABLE RIEUL-YO-RIEULSIOS
-0x8F95	0xB8D9	# HANGUL SYLLABLE RIEUL-YO-RIEULTHIEUTH
-0x8F96	0xB8DA	# HANGUL SYLLABLE RIEUL-YO-RIEULPHIEUPH
-0x8F97	0xB8DB	# HANGUL SYLLABLE RIEUL-YO-RIEULHIEUH
-0x8F98	0xB8DC	# HANGUL SYLLABLE RIEUL-YO-MIEUM
-0x8F99	0xB8DE	# HANGUL SYLLABLE RIEUL-YO-PIEUPSIOS
-0x8F9A	0xB8E0	# HANGUL SYLLABLE RIEUL-YO-SSANGSIOS
-0x8F9B	0xB8E2	# HANGUL SYLLABLE RIEUL-YO-CIEUC
-0x8F9C	0xB8E3	# HANGUL SYLLABLE RIEUL-YO-CHIEUCH
-0x8F9D	0xB8E4	# HANGUL SYLLABLE RIEUL-YO-KHIEUKH
-0x8F9E	0xB8E5	# HANGUL SYLLABLE RIEUL-YO-THIEUTH
-0x8F9F	0xB8E6	# HANGUL SYLLABLE RIEUL-YO-PHIEUPH
-0x8FA0	0xB8E7	# HANGUL SYLLABLE RIEUL-YO-HIEUH
-0x8FA1	0xB8EA	# HANGUL SYLLABLE RIEUL-U-SSANGKIYEOK
-0x8FA2	0xB8EB	# HANGUL SYLLABLE RIEUL-U-KIYEOKSIOS
-0x8FA3	0xB8ED	# HANGUL SYLLABLE RIEUL-U-NIEUNCIEUC
-0x8FA4	0xB8EE	# HANGUL SYLLABLE RIEUL-U-NIEUNHIEUH
-0x8FA5	0xB8EF	# HANGUL SYLLABLE RIEUL-U-TIKEUT
-0x8FA6	0xB8F1	# HANGUL SYLLABLE RIEUL-U-RIEULKIYEOK
-0x8FA7	0xB8F2	# HANGUL SYLLABLE RIEUL-U-RIEULMIEUM
-0x8FA8	0xB8F3	# HANGUL SYLLABLE RIEUL-U-RIEULPIEUP
-0x8FA9	0xB8F4	# HANGUL SYLLABLE RIEUL-U-RIEULSIOS
-0x8FAA	0xB8F5	# HANGUL SYLLABLE RIEUL-U-RIEULTHIEUTH
-0x8FAB	0xB8F6	# HANGUL SYLLABLE RIEUL-U-RIEULPHIEUPH
-0x8FAC	0xB8F7	# HANGUL SYLLABLE RIEUL-U-RIEULHIEUH
-0x8FAD	0xB8FA	# HANGUL SYLLABLE RIEUL-U-PIEUPSIOS
-0x8FAE	0xB8FC	# HANGUL SYLLABLE RIEUL-U-SSANGSIOS
-0x8FAF	0xB8FE	# HANGUL SYLLABLE RIEUL-U-CIEUC
-0x8FB0	0xB8FF	# HANGUL SYLLABLE RIEUL-U-CHIEUCH
-0x8FB1	0xB900	# HANGUL SYLLABLE RIEUL-U-KHIEUKH
-0x8FB2	0xB901	# HANGUL SYLLABLE RIEUL-U-THIEUTH
-0x8FB3	0xB902	# HANGUL SYLLABLE RIEUL-U-PHIEUPH
-0x8FB4	0xB903	# HANGUL SYLLABLE RIEUL-U-HIEUH
-0x8FB5	0xB905	# HANGUL SYLLABLE RIEUL-WEO-KIYEOK
-0x8FB6	0xB906	# HANGUL SYLLABLE RIEUL-WEO-SSANGKIYEOK
-0x8FB7	0xB907	# HANGUL SYLLABLE RIEUL-WEO-KIYEOKSIOS
-0x8FB8	0xB908	# HANGUL SYLLABLE RIEUL-WEO-NIEUN
-0x8FB9	0xB909	# HANGUL SYLLABLE RIEUL-WEO-NIEUNCIEUC
-0x8FBA	0xB90A	# HANGUL SYLLABLE RIEUL-WEO-NIEUNHIEUH
-0x8FBB	0xB90B	# HANGUL SYLLABLE RIEUL-WEO-TIKEUT
-0x8FBC	0xB90C	# HANGUL SYLLABLE RIEUL-WEO-RIEUL
-0x8FBD	0xB90D	# HANGUL SYLLABLE RIEUL-WEO-RIEULKIYEOK
-0x8FBE	0xB90E	# HANGUL SYLLABLE RIEUL-WEO-RIEULMIEUM
-0x8FBF	0xB90F	# HANGUL SYLLABLE RIEUL-WEO-RIEULPIEUP
-0x8FC0	0xB910	# HANGUL SYLLABLE RIEUL-WEO-RIEULSIOS
-0x8FC1	0xB911	# HANGUL SYLLABLE RIEUL-WEO-RIEULTHIEUTH
-0x8FC2	0xB912	# HANGUL SYLLABLE RIEUL-WEO-RIEULPHIEUPH
-0x8FC3	0xB913	# HANGUL SYLLABLE RIEUL-WEO-RIEULHIEUH
-0x8FC4	0xB914	# HANGUL SYLLABLE RIEUL-WEO-MIEUM
-0x8FC5	0xB915	# HANGUL SYLLABLE RIEUL-WEO-PIEUP
-0x8FC6	0xB916	# HANGUL SYLLABLE RIEUL-WEO-PIEUPSIOS
-0x8FC7	0xB917	# HANGUL SYLLABLE RIEUL-WEO-SIOS
-0x8FC8	0xB919	# HANGUL SYLLABLE RIEUL-WEO-IEUNG
-0x8FC9	0xB91A	# HANGUL SYLLABLE RIEUL-WEO-CIEUC
-0x8FCA	0xB91B	# HANGUL SYLLABLE RIEUL-WEO-CHIEUCH
-0x8FCB	0xB91C	# HANGUL SYLLABLE RIEUL-WEO-KHIEUKH
-0x8FCC	0xB91D	# HANGUL SYLLABLE RIEUL-WEO-THIEUTH
-0x8FCD	0xB91E	# HANGUL SYLLABLE RIEUL-WEO-PHIEUPH
-0x8FCE	0xB91F	# HANGUL SYLLABLE RIEUL-WEO-HIEUH
-0x8FCF	0xB921	# HANGUL SYLLABLE RIEUL-WE-KIYEOK
-0x8FD0	0xB922	# HANGUL SYLLABLE RIEUL-WE-SSANGKIYEOK
-0x8FD1	0xB923	# HANGUL SYLLABLE RIEUL-WE-KIYEOKSIOS
-0x8FD2	0xB924	# HANGUL SYLLABLE RIEUL-WE-NIEUN
-0x8FD3	0xB925	# HANGUL SYLLABLE RIEUL-WE-NIEUNCIEUC
-0x8FD4	0xB926	# HANGUL SYLLABLE RIEUL-WE-NIEUNHIEUH
-0x8FD5	0xB927	# HANGUL SYLLABLE RIEUL-WE-TIKEUT
-0x8FD6	0xB928	# HANGUL SYLLABLE RIEUL-WE-RIEUL
-0x8FD7	0xB929	# HANGUL SYLLABLE RIEUL-WE-RIEULKIYEOK
-0x8FD8	0xB92A	# HANGUL SYLLABLE RIEUL-WE-RIEULMIEUM
-0x8FD9	0xB92B	# HANGUL SYLLABLE RIEUL-WE-RIEULPIEUP
-0x8FDA	0xB92C	# HANGUL SYLLABLE RIEUL-WE-RIEULSIOS
-0x8FDB	0xB92D	# HANGUL SYLLABLE RIEUL-WE-RIEULTHIEUTH
-0x8FDC	0xB92E	# HANGUL SYLLABLE RIEUL-WE-RIEULPHIEUPH
-0x8FDD	0xB92F	# HANGUL SYLLABLE RIEUL-WE-RIEULHIEUH
-0x8FDE	0xB930	# HANGUL SYLLABLE RIEUL-WE-MIEUM
-0x8FDF	0xB931	# HANGUL SYLLABLE RIEUL-WE-PIEUP
-0x8FE0	0xB932	# HANGUL SYLLABLE RIEUL-WE-PIEUPSIOS
-0x8FE1	0xB933	# HANGUL SYLLABLE RIEUL-WE-SIOS
-0x8FE2	0xB934	# HANGUL SYLLABLE RIEUL-WE-SSANGSIOS
-0x8FE3	0xB935	# HANGUL SYLLABLE RIEUL-WE-IEUNG
-0x8FE4	0xB936	# HANGUL SYLLABLE RIEUL-WE-CIEUC
-0x8FE5	0xB937	# HANGUL SYLLABLE RIEUL-WE-CHIEUCH
-0x8FE6	0xB938	# HANGUL SYLLABLE RIEUL-WE-KHIEUKH
-0x8FE7	0xB939	# HANGUL SYLLABLE RIEUL-WE-THIEUTH
-0x8FE8	0xB93A	# HANGUL SYLLABLE RIEUL-WE-PHIEUPH
-0x8FE9	0xB93B	# HANGUL SYLLABLE RIEUL-WE-HIEUH
-0x8FEA	0xB93E	# HANGUL SYLLABLE RIEUL-WI-SSANGKIYEOK
-0x8FEB	0xB93F	# HANGUL SYLLABLE RIEUL-WI-KIYEOKSIOS
-0x8FEC	0xB941	# HANGUL SYLLABLE RIEUL-WI-NIEUNCIEUC
-0x8FED	0xB942	# HANGUL SYLLABLE RIEUL-WI-NIEUNHIEUH
-0x8FEE	0xB943	# HANGUL SYLLABLE RIEUL-WI-TIKEUT
-0x8FEF	0xB945	# HANGUL SYLLABLE RIEUL-WI-RIEULKIYEOK
-0x8FF0	0xB946	# HANGUL SYLLABLE RIEUL-WI-RIEULMIEUM
-0x8FF1	0xB947	# HANGUL SYLLABLE RIEUL-WI-RIEULPIEUP
-0x8FF2	0xB948	# HANGUL SYLLABLE RIEUL-WI-RIEULSIOS
-0x8FF3	0xB949	# HANGUL SYLLABLE RIEUL-WI-RIEULTHIEUTH
-0x8FF4	0xB94A	# HANGUL SYLLABLE RIEUL-WI-RIEULPHIEUPH
-0x8FF5	0xB94B	# HANGUL SYLLABLE RIEUL-WI-RIEULHIEUH
-0x8FF6	0xB94D	# HANGUL SYLLABLE RIEUL-WI-PIEUP
-0x8FF7	0xB94E	# HANGUL SYLLABLE RIEUL-WI-PIEUPSIOS
-0x8FF8	0xB950	# HANGUL SYLLABLE RIEUL-WI-SSANGSIOS
-0x8FF9	0xB952	# HANGUL SYLLABLE RIEUL-WI-CIEUC
-0x8FFA	0xB953	# HANGUL SYLLABLE RIEUL-WI-CHIEUCH
-0x8FFB	0xB954	# HANGUL SYLLABLE RIEUL-WI-KHIEUKH
-0x8FFC	0xB955	# HANGUL SYLLABLE RIEUL-WI-THIEUTH
-0x8FFD	0xB956	# HANGUL SYLLABLE RIEUL-WI-PHIEUPH
-0x8FFE	0xB957	# HANGUL SYLLABLE RIEUL-WI-HIEUH
-0x9041	0xB95A	# HANGUL SYLLABLE RIEUL-YU-SSANGKIYEOK
-0x9042	0xB95B	# HANGUL SYLLABLE RIEUL-YU-KIYEOKSIOS
-0x9043	0xB95D	# HANGUL SYLLABLE RIEUL-YU-NIEUNCIEUC
-0x9044	0xB95E	# HANGUL SYLLABLE RIEUL-YU-NIEUNHIEUH
-0x9045	0xB95F	# HANGUL SYLLABLE RIEUL-YU-TIKEUT
-0x9046	0xB961	# HANGUL SYLLABLE RIEUL-YU-RIEULKIYEOK
-0x9047	0xB962	# HANGUL SYLLABLE RIEUL-YU-RIEULMIEUM
-0x9048	0xB963	# HANGUL SYLLABLE RIEUL-YU-RIEULPIEUP
-0x9049	0xB964	# HANGUL SYLLABLE RIEUL-YU-RIEULSIOS
-0x904A	0xB965	# HANGUL SYLLABLE RIEUL-YU-RIEULTHIEUTH
-0x904B	0xB966	# HANGUL SYLLABLE RIEUL-YU-RIEULPHIEUPH
-0x904C	0xB967	# HANGUL SYLLABLE RIEUL-YU-RIEULHIEUH
-0x904D	0xB96A	# HANGUL SYLLABLE RIEUL-YU-PIEUPSIOS
-0x904E	0xB96C	# HANGUL SYLLABLE RIEUL-YU-SSANGSIOS
-0x904F	0xB96E	# HANGUL SYLLABLE RIEUL-YU-CIEUC
-0x9050	0xB96F	# HANGUL SYLLABLE RIEUL-YU-CHIEUCH
-0x9051	0xB970	# HANGUL SYLLABLE RIEUL-YU-KHIEUKH
-0x9052	0xB971	# HANGUL SYLLABLE RIEUL-YU-THIEUTH
-0x9053	0xB972	# HANGUL SYLLABLE RIEUL-YU-PHIEUPH
-0x9054	0xB973	# HANGUL SYLLABLE RIEUL-YU-HIEUH
-0x9055	0xB976	# HANGUL SYLLABLE RIEUL-EU-SSANGKIYEOK
-0x9056	0xB977	# HANGUL SYLLABLE RIEUL-EU-KIYEOKSIOS
-0x9057	0xB979	# HANGUL SYLLABLE RIEUL-EU-NIEUNCIEUC
-0x9058	0xB97A	# HANGUL SYLLABLE RIEUL-EU-NIEUNHIEUH
-0x9059	0xB97B	# HANGUL SYLLABLE RIEUL-EU-TIKEUT
-0x905A	0xB97D	# HANGUL SYLLABLE RIEUL-EU-RIEULKIYEOK
-0x9061	0xB97E	# HANGUL SYLLABLE RIEUL-EU-RIEULMIEUM
-0x9062	0xB97F	# HANGUL SYLLABLE RIEUL-EU-RIEULPIEUP
-0x9063	0xB980	# HANGUL SYLLABLE RIEUL-EU-RIEULSIOS
-0x9064	0xB981	# HANGUL SYLLABLE RIEUL-EU-RIEULTHIEUTH
-0x9065	0xB982	# HANGUL SYLLABLE RIEUL-EU-RIEULPHIEUPH
-0x9066	0xB983	# HANGUL SYLLABLE RIEUL-EU-RIEULHIEUH
-0x9067	0xB986	# HANGUL SYLLABLE RIEUL-EU-PIEUPSIOS
-0x9068	0xB988	# HANGUL SYLLABLE RIEUL-EU-SSANGSIOS
-0x9069	0xB98B	# HANGUL SYLLABLE RIEUL-EU-CHIEUCH
-0x906A	0xB98C	# HANGUL SYLLABLE RIEUL-EU-KHIEUKH
-0x906B	0xB98F	# HANGUL SYLLABLE RIEUL-EU-HIEUH
-0x906C	0xB990	# HANGUL SYLLABLE RIEUL-YI
-0x906D	0xB991	# HANGUL SYLLABLE RIEUL-YI-KIYEOK
-0x906E	0xB992	# HANGUL SYLLABLE RIEUL-YI-SSANGKIYEOK
-0x906F	0xB993	# HANGUL SYLLABLE RIEUL-YI-KIYEOKSIOS
-0x9070	0xB994	# HANGUL SYLLABLE RIEUL-YI-NIEUN
-0x9071	0xB995	# HANGUL SYLLABLE RIEUL-YI-NIEUNCIEUC
-0x9072	0xB996	# HANGUL SYLLABLE RIEUL-YI-NIEUNHIEUH
-0x9073	0xB997	# HANGUL SYLLABLE RIEUL-YI-TIKEUT
-0x9074	0xB998	# HANGUL SYLLABLE RIEUL-YI-RIEUL
-0x9075	0xB999	# HANGUL SYLLABLE RIEUL-YI-RIEULKIYEOK
-0x9076	0xB99A	# HANGUL SYLLABLE RIEUL-YI-RIEULMIEUM
-0x9077	0xB99B	# HANGUL SYLLABLE RIEUL-YI-RIEULPIEUP
-0x9078	0xB99C	# HANGUL SYLLABLE RIEUL-YI-RIEULSIOS
-0x9079	0xB99D	# HANGUL SYLLABLE RIEUL-YI-RIEULTHIEUTH
-0x907A	0xB99E	# HANGUL SYLLABLE RIEUL-YI-RIEULPHIEUPH
-0x9081	0xB99F	# HANGUL SYLLABLE RIEUL-YI-RIEULHIEUH
-0x9082	0xB9A0	# HANGUL SYLLABLE RIEUL-YI-MIEUM
-0x9083	0xB9A1	# HANGUL SYLLABLE RIEUL-YI-PIEUP
-0x9084	0xB9A2	# HANGUL SYLLABLE RIEUL-YI-PIEUPSIOS
-0x9085	0xB9A3	# HANGUL SYLLABLE RIEUL-YI-SIOS
-0x9086	0xB9A4	# HANGUL SYLLABLE RIEUL-YI-SSANGSIOS
-0x9087	0xB9A5	# HANGUL SYLLABLE RIEUL-YI-IEUNG
-0x9088	0xB9A6	# HANGUL SYLLABLE RIEUL-YI-CIEUC
-0x9089	0xB9A7	# HANGUL SYLLABLE RIEUL-YI-CHIEUCH
-0x908A	0xB9A8	# HANGUL SYLLABLE RIEUL-YI-KHIEUKH
-0x908B	0xB9A9	# HANGUL SYLLABLE RIEUL-YI-THIEUTH
-0x908C	0xB9AA	# HANGUL SYLLABLE RIEUL-YI-PHIEUPH
-0x908D	0xB9AB	# HANGUL SYLLABLE RIEUL-YI-HIEUH
-0x908E	0xB9AE	# HANGUL SYLLABLE RIEUL-I-SSANGKIYEOK
-0x908F	0xB9AF	# HANGUL SYLLABLE RIEUL-I-KIYEOKSIOS
-0x9090	0xB9B1	# HANGUL SYLLABLE RIEUL-I-NIEUNCIEUC
-0x9091	0xB9B2	# HANGUL SYLLABLE RIEUL-I-NIEUNHIEUH
-0x9092	0xB9B3	# HANGUL SYLLABLE RIEUL-I-TIKEUT
-0x9093	0xB9B5	# HANGUL SYLLABLE RIEUL-I-RIEULKIYEOK
-0x9094	0xB9B6	# HANGUL SYLLABLE RIEUL-I-RIEULMIEUM
-0x9095	0xB9B7	# HANGUL SYLLABLE RIEUL-I-RIEULPIEUP
-0x9096	0xB9B8	# HANGUL SYLLABLE RIEUL-I-RIEULSIOS
-0x9097	0xB9B9	# HANGUL SYLLABLE RIEUL-I-RIEULTHIEUTH
-0x9098	0xB9BA	# HANGUL SYLLABLE RIEUL-I-RIEULPHIEUPH
-0x9099	0xB9BB	# HANGUL SYLLABLE RIEUL-I-RIEULHIEUH
-0x909A	0xB9BE	# HANGUL SYLLABLE RIEUL-I-PIEUPSIOS
-0x909B	0xB9C0	# HANGUL SYLLABLE RIEUL-I-SSANGSIOS
-0x909C	0xB9C2	# HANGUL SYLLABLE RIEUL-I-CIEUC
-0x909D	0xB9C3	# HANGUL SYLLABLE RIEUL-I-CHIEUCH
-0x909E	0xB9C4	# HANGUL SYLLABLE RIEUL-I-KHIEUKH
-0x909F	0xB9C5	# HANGUL SYLLABLE RIEUL-I-THIEUTH
-0x90A0	0xB9C6	# HANGUL SYLLABLE RIEUL-I-PHIEUPH
-0x90A1	0xB9C7	# HANGUL SYLLABLE RIEUL-I-HIEUH
-0x90A2	0xB9CA	# HANGUL SYLLABLE MIEUM-A-SSANGKIYEOK
-0x90A3	0xB9CB	# HANGUL SYLLABLE MIEUM-A-KIYEOKSIOS
-0x90A4	0xB9CD	# HANGUL SYLLABLE MIEUM-A-NIEUNCIEUC
-0x90A5	0xB9D3	# HANGUL SYLLABLE MIEUM-A-RIEULPIEUP
-0x90A6	0xB9D4	# HANGUL SYLLABLE MIEUM-A-RIEULSIOS
-0x90A7	0xB9D5	# HANGUL SYLLABLE MIEUM-A-RIEULTHIEUTH
-0x90A8	0xB9D6	# HANGUL SYLLABLE MIEUM-A-RIEULPHIEUPH
-0x90A9	0xB9D7	# HANGUL SYLLABLE MIEUM-A-RIEULHIEUH
-0x90AA	0xB9DA	# HANGUL SYLLABLE MIEUM-A-PIEUPSIOS
-0x90AB	0xB9DC	# HANGUL SYLLABLE MIEUM-A-SSANGSIOS
-0x90AC	0xB9DF	# HANGUL SYLLABLE MIEUM-A-CHIEUCH
-0x90AD	0xB9E0	# HANGUL SYLLABLE MIEUM-A-KHIEUKH
-0x90AE	0xB9E2	# HANGUL SYLLABLE MIEUM-A-PHIEUPH
-0x90AF	0xB9E6	# HANGUL SYLLABLE MIEUM-AE-SSANGKIYEOK
-0x90B0	0xB9E7	# HANGUL SYLLABLE MIEUM-AE-KIYEOKSIOS
-0x90B1	0xB9E9	# HANGUL SYLLABLE MIEUM-AE-NIEUNCIEUC
-0x90B2	0xB9EA	# HANGUL SYLLABLE MIEUM-AE-NIEUNHIEUH
-0x90B3	0xB9EB	# HANGUL SYLLABLE MIEUM-AE-TIKEUT
-0x90B4	0xB9ED	# HANGUL SYLLABLE MIEUM-AE-RIEULKIYEOK
-0x90B5	0xB9EE	# HANGUL SYLLABLE MIEUM-AE-RIEULMIEUM
-0x90B6	0xB9EF	# HANGUL SYLLABLE MIEUM-AE-RIEULPIEUP
-0x90B7	0xB9F0	# HANGUL SYLLABLE MIEUM-AE-RIEULSIOS
-0x90B8	0xB9F1	# HANGUL SYLLABLE MIEUM-AE-RIEULTHIEUTH
-0x90B9	0xB9F2	# HANGUL SYLLABLE MIEUM-AE-RIEULPHIEUPH
-0x90BA	0xB9F3	# HANGUL SYLLABLE MIEUM-AE-RIEULHIEUH
-0x90BB	0xB9F6	# HANGUL SYLLABLE MIEUM-AE-PIEUPSIOS
-0x90BC	0xB9FB	# HANGUL SYLLABLE MIEUM-AE-CHIEUCH
-0x90BD	0xB9FC	# HANGUL SYLLABLE MIEUM-AE-KHIEUKH
-0x90BE	0xB9FD	# HANGUL SYLLABLE MIEUM-AE-THIEUTH
-0x90BF	0xB9FE	# HANGUL SYLLABLE MIEUM-AE-PHIEUPH
-0x90C0	0xB9FF	# HANGUL SYLLABLE MIEUM-AE-HIEUH
-0x90C1	0xBA02	# HANGUL SYLLABLE MIEUM-YA-SSANGKIYEOK
-0x90C2	0xBA03	# HANGUL SYLLABLE MIEUM-YA-KIYEOKSIOS
-0x90C3	0xBA04	# HANGUL SYLLABLE MIEUM-YA-NIEUN
-0x90C4	0xBA05	# HANGUL SYLLABLE MIEUM-YA-NIEUNCIEUC
-0x90C5	0xBA06	# HANGUL SYLLABLE MIEUM-YA-NIEUNHIEUH
-0x90C6	0xBA07	# HANGUL SYLLABLE MIEUM-YA-TIKEUT
-0x90C7	0xBA09	# HANGUL SYLLABLE MIEUM-YA-RIEULKIYEOK
-0x90C8	0xBA0A	# HANGUL SYLLABLE MIEUM-YA-RIEULMIEUM
-0x90C9	0xBA0B	# HANGUL SYLLABLE MIEUM-YA-RIEULPIEUP
-0x90CA	0xBA0C	# HANGUL SYLLABLE MIEUM-YA-RIEULSIOS
-0x90CB	0xBA0D	# HANGUL SYLLABLE MIEUM-YA-RIEULTHIEUTH
-0x90CC	0xBA0E	# HANGUL SYLLABLE MIEUM-YA-RIEULPHIEUPH
-0x90CD	0xBA0F	# HANGUL SYLLABLE MIEUM-YA-RIEULHIEUH
-0x90CE	0xBA10	# HANGUL SYLLABLE MIEUM-YA-MIEUM
-0x90CF	0xBA11	# HANGUL SYLLABLE MIEUM-YA-PIEUP
-0x90D0	0xBA12	# HANGUL SYLLABLE MIEUM-YA-PIEUPSIOS
-0x90D1	0xBA13	# HANGUL SYLLABLE MIEUM-YA-SIOS
-0x90D2	0xBA14	# HANGUL SYLLABLE MIEUM-YA-SSANGSIOS
-0x90D3	0xBA16	# HANGUL SYLLABLE MIEUM-YA-CIEUC
-0x90D4	0xBA17	# HANGUL SYLLABLE MIEUM-YA-CHIEUCH
-0x90D5	0xBA18	# HANGUL SYLLABLE MIEUM-YA-KHIEUKH
-0x90D6	0xBA19	# HANGUL SYLLABLE MIEUM-YA-THIEUTH
-0x90D7	0xBA1A	# HANGUL SYLLABLE MIEUM-YA-PHIEUPH
-0x90D8	0xBA1B	# HANGUL SYLLABLE MIEUM-YA-HIEUH
-0x90D9	0xBA1C	# HANGUL SYLLABLE MIEUM-YAE
-0x90DA	0xBA1D	# HANGUL SYLLABLE MIEUM-YAE-KIYEOK
-0x90DB	0xBA1E	# HANGUL SYLLABLE MIEUM-YAE-SSANGKIYEOK
-0x90DC	0xBA1F	# HANGUL SYLLABLE MIEUM-YAE-KIYEOKSIOS
-0x90DD	0xBA20	# HANGUL SYLLABLE MIEUM-YAE-NIEUN
-0x90DE	0xBA21	# HANGUL SYLLABLE MIEUM-YAE-NIEUNCIEUC
-0x90DF	0xBA22	# HANGUL SYLLABLE MIEUM-YAE-NIEUNHIEUH
-0x90E0	0xBA23	# HANGUL SYLLABLE MIEUM-YAE-TIKEUT
-0x90E1	0xBA24	# HANGUL SYLLABLE MIEUM-YAE-RIEUL
-0x90E2	0xBA25	# HANGUL SYLLABLE MIEUM-YAE-RIEULKIYEOK
-0x90E3	0xBA26	# HANGUL SYLLABLE MIEUM-YAE-RIEULMIEUM
-0x90E4	0xBA27	# HANGUL SYLLABLE MIEUM-YAE-RIEULPIEUP
-0x90E5	0xBA28	# HANGUL SYLLABLE MIEUM-YAE-RIEULSIOS
-0x90E6	0xBA29	# HANGUL SYLLABLE MIEUM-YAE-RIEULTHIEUTH
-0x90E7	0xBA2A	# HANGUL SYLLABLE MIEUM-YAE-RIEULPHIEUPH
-0x90E8	0xBA2B	# HANGUL SYLLABLE MIEUM-YAE-RIEULHIEUH
-0x90E9	0xBA2C	# HANGUL SYLLABLE MIEUM-YAE-MIEUM
-0x90EA	0xBA2D	# HANGUL SYLLABLE MIEUM-YAE-PIEUP
-0x90EB	0xBA2E	# HANGUL SYLLABLE MIEUM-YAE-PIEUPSIOS
-0x90EC	0xBA2F	# HANGUL SYLLABLE MIEUM-YAE-SIOS
-0x90ED	0xBA30	# HANGUL SYLLABLE MIEUM-YAE-SSANGSIOS
-0x90EE	0xBA31	# HANGUL SYLLABLE MIEUM-YAE-IEUNG
-0x90EF	0xBA32	# HANGUL SYLLABLE MIEUM-YAE-CIEUC
-0x90F0	0xBA33	# HANGUL SYLLABLE MIEUM-YAE-CHIEUCH
-0x90F1	0xBA34	# HANGUL SYLLABLE MIEUM-YAE-KHIEUKH
-0x90F2	0xBA35	# HANGUL SYLLABLE MIEUM-YAE-THIEUTH
-0x90F3	0xBA36	# HANGUL SYLLABLE MIEUM-YAE-PHIEUPH
-0x90F4	0xBA37	# HANGUL SYLLABLE MIEUM-YAE-HIEUH
-0x90F5	0xBA3A	# HANGUL SYLLABLE MIEUM-EO-SSANGKIYEOK
-0x90F6	0xBA3B	# HANGUL SYLLABLE MIEUM-EO-KIYEOKSIOS
-0x90F7	0xBA3D	# HANGUL SYLLABLE MIEUM-EO-NIEUNCIEUC
-0x90F8	0xBA3E	# HANGUL SYLLABLE MIEUM-EO-NIEUNHIEUH
-0x90F9	0xBA3F	# HANGUL SYLLABLE MIEUM-EO-TIKEUT
-0x90FA	0xBA41	# HANGUL SYLLABLE MIEUM-EO-RIEULKIYEOK
-0x90FB	0xBA43	# HANGUL SYLLABLE MIEUM-EO-RIEULPIEUP
-0x90FC	0xBA44	# HANGUL SYLLABLE MIEUM-EO-RIEULSIOS
-0x90FD	0xBA45	# HANGUL SYLLABLE MIEUM-EO-RIEULTHIEUTH
-0x90FE	0xBA46	# HANGUL SYLLABLE MIEUM-EO-RIEULPHIEUPH
-0x9141	0xBA47	# HANGUL SYLLABLE MIEUM-EO-RIEULHIEUH
-0x9142	0xBA4A	# HANGUL SYLLABLE MIEUM-EO-PIEUPSIOS
-0x9143	0xBA4C	# HANGUL SYLLABLE MIEUM-EO-SSANGSIOS
-0x9144	0xBA4F	# HANGUL SYLLABLE MIEUM-EO-CHIEUCH
-0x9145	0xBA50	# HANGUL SYLLABLE MIEUM-EO-KHIEUKH
-0x9146	0xBA51	# HANGUL SYLLABLE MIEUM-EO-THIEUTH
-0x9147	0xBA52	# HANGUL SYLLABLE MIEUM-EO-PHIEUPH
-0x9148	0xBA56	# HANGUL SYLLABLE MIEUM-E-SSANGKIYEOK
-0x9149	0xBA57	# HANGUL SYLLABLE MIEUM-E-KIYEOKSIOS
-0x914A	0xBA59	# HANGUL SYLLABLE MIEUM-E-NIEUNCIEUC
-0x914B	0xBA5A	# HANGUL SYLLABLE MIEUM-E-NIEUNHIEUH
-0x914C	0xBA5B	# HANGUL SYLLABLE MIEUM-E-TIKEUT
-0x914D	0xBA5D	# HANGUL SYLLABLE MIEUM-E-RIEULKIYEOK
-0x914E	0xBA5E	# HANGUL SYLLABLE MIEUM-E-RIEULMIEUM
-0x914F	0xBA5F	# HANGUL SYLLABLE MIEUM-E-RIEULPIEUP
-0x9150	0xBA60	# HANGUL SYLLABLE MIEUM-E-RIEULSIOS
-0x9151	0xBA61	# HANGUL SYLLABLE MIEUM-E-RIEULTHIEUTH
-0x9152	0xBA62	# HANGUL SYLLABLE MIEUM-E-RIEULPHIEUPH
-0x9153	0xBA63	# HANGUL SYLLABLE MIEUM-E-RIEULHIEUH
-0x9154	0xBA66	# HANGUL SYLLABLE MIEUM-E-PIEUPSIOS
-0x9155	0xBA6A	# HANGUL SYLLABLE MIEUM-E-CIEUC
-0x9156	0xBA6B	# HANGUL SYLLABLE MIEUM-E-CHIEUCH
-0x9157	0xBA6C	# HANGUL SYLLABLE MIEUM-E-KHIEUKH
-0x9158	0xBA6D	# HANGUL SYLLABLE MIEUM-E-THIEUTH
-0x9159	0xBA6E	# HANGUL SYLLABLE MIEUM-E-PHIEUPH
-0x915A	0xBA6F	# HANGUL SYLLABLE MIEUM-E-HIEUH
-0x9161	0xBA72	# HANGUL SYLLABLE MIEUM-YEO-SSANGKIYEOK
-0x9162	0xBA73	# HANGUL SYLLABLE MIEUM-YEO-KIYEOKSIOS
-0x9163	0xBA75	# HANGUL SYLLABLE MIEUM-YEO-NIEUNCIEUC
-0x9164	0xBA76	# HANGUL SYLLABLE MIEUM-YEO-NIEUNHIEUH
-0x9165	0xBA77	# HANGUL SYLLABLE MIEUM-YEO-TIKEUT
-0x9166	0xBA79	# HANGUL SYLLABLE MIEUM-YEO-RIEULKIYEOK
-0x9167	0xBA7A	# HANGUL SYLLABLE MIEUM-YEO-RIEULMIEUM
-0x9168	0xBA7B	# HANGUL SYLLABLE MIEUM-YEO-RIEULPIEUP
-0x9169	0xBA7C	# HANGUL SYLLABLE MIEUM-YEO-RIEULSIOS
-0x916A	0xBA7D	# HANGUL SYLLABLE MIEUM-YEO-RIEULTHIEUTH
-0x916B	0xBA7E	# HANGUL SYLLABLE MIEUM-YEO-RIEULPHIEUPH
-0x916C	0xBA7F	# HANGUL SYLLABLE MIEUM-YEO-RIEULHIEUH
-0x916D	0xBA80	# HANGUL SYLLABLE MIEUM-YEO-MIEUM
-0x916E	0xBA81	# HANGUL SYLLABLE MIEUM-YEO-PIEUP
-0x916F	0xBA82	# HANGUL SYLLABLE MIEUM-YEO-PIEUPSIOS
-0x9170	0xBA86	# HANGUL SYLLABLE MIEUM-YEO-CIEUC
-0x9171	0xBA88	# HANGUL SYLLABLE MIEUM-YEO-KHIEUKH
-0x9172	0xBA89	# HANGUL SYLLABLE MIEUM-YEO-THIEUTH
-0x9173	0xBA8A	# HANGUL SYLLABLE MIEUM-YEO-PHIEUPH
-0x9174	0xBA8B	# HANGUL SYLLABLE MIEUM-YEO-HIEUH
-0x9175	0xBA8D	# HANGUL SYLLABLE MIEUM-YE-KIYEOK
-0x9176	0xBA8E	# HANGUL SYLLABLE MIEUM-YE-SSANGKIYEOK
-0x9177	0xBA8F	# HANGUL SYLLABLE MIEUM-YE-KIYEOKSIOS
-0x9178	0xBA90	# HANGUL SYLLABLE MIEUM-YE-NIEUN
-0x9179	0xBA91	# HANGUL SYLLABLE MIEUM-YE-NIEUNCIEUC
-0x917A	0xBA92	# HANGUL SYLLABLE MIEUM-YE-NIEUNHIEUH
-0x9181	0xBA93	# HANGUL SYLLABLE MIEUM-YE-TIKEUT
-0x9182	0xBA94	# HANGUL SYLLABLE MIEUM-YE-RIEUL
-0x9183	0xBA95	# HANGUL SYLLABLE MIEUM-YE-RIEULKIYEOK
-0x9184	0xBA96	# HANGUL SYLLABLE MIEUM-YE-RIEULMIEUM
-0x9185	0xBA97	# HANGUL SYLLABLE MIEUM-YE-RIEULPIEUP
-0x9186	0xBA98	# HANGUL SYLLABLE MIEUM-YE-RIEULSIOS
-0x9187	0xBA99	# HANGUL SYLLABLE MIEUM-YE-RIEULTHIEUTH
-0x9188	0xBA9A	# HANGUL SYLLABLE MIEUM-YE-RIEULPHIEUPH
-0x9189	0xBA9B	# HANGUL SYLLABLE MIEUM-YE-RIEULHIEUH
-0x918A	0xBA9C	# HANGUL SYLLABLE MIEUM-YE-MIEUM
-0x918B	0xBA9D	# HANGUL SYLLABLE MIEUM-YE-PIEUP
-0x918C	0xBA9E	# HANGUL SYLLABLE MIEUM-YE-PIEUPSIOS
-0x918D	0xBA9F	# HANGUL SYLLABLE MIEUM-YE-SIOS
-0x918E	0xBAA0	# HANGUL SYLLABLE MIEUM-YE-SSANGSIOS
-0x918F	0xBAA1	# HANGUL SYLLABLE MIEUM-YE-IEUNG
-0x9190	0xBAA2	# HANGUL SYLLABLE MIEUM-YE-CIEUC
-0x9191	0xBAA3	# HANGUL SYLLABLE MIEUM-YE-CHIEUCH
-0x9192	0xBAA4	# HANGUL SYLLABLE MIEUM-YE-KHIEUKH
-0x9193	0xBAA5	# HANGUL SYLLABLE MIEUM-YE-THIEUTH
-0x9194	0xBAA6	# HANGUL SYLLABLE MIEUM-YE-PHIEUPH
-0x9195	0xBAA7	# HANGUL SYLLABLE MIEUM-YE-HIEUH
-0x9196	0xBAAA	# HANGUL SYLLABLE MIEUM-O-SSANGKIYEOK
-0x9197	0xBAAD	# HANGUL SYLLABLE MIEUM-O-NIEUNCIEUC
-0x9198	0xBAAE	# HANGUL SYLLABLE MIEUM-O-NIEUNHIEUH
-0x9199	0xBAAF	# HANGUL SYLLABLE MIEUM-O-TIKEUT
-0x919A	0xBAB1	# HANGUL SYLLABLE MIEUM-O-RIEULKIYEOK
-0x919B	0xBAB3	# HANGUL SYLLABLE MIEUM-O-RIEULPIEUP
-0x919C	0xBAB4	# HANGUL SYLLABLE MIEUM-O-RIEULSIOS
-0x919D	0xBAB5	# HANGUL SYLLABLE MIEUM-O-RIEULTHIEUTH
-0x919E	0xBAB6	# HANGUL SYLLABLE MIEUM-O-RIEULPHIEUPH
-0x919F	0xBAB7	# HANGUL SYLLABLE MIEUM-O-RIEULHIEUH
-0x91A0	0xBABA	# HANGUL SYLLABLE MIEUM-O-PIEUPSIOS
-0x91A1	0xBABC	# HANGUL SYLLABLE MIEUM-O-SSANGSIOS
-0x91A2	0xBABE	# HANGUL SYLLABLE MIEUM-O-CIEUC
-0x91A3	0xBABF	# HANGUL SYLLABLE MIEUM-O-CHIEUCH
-0x91A4	0xBAC0	# HANGUL SYLLABLE MIEUM-O-KHIEUKH
-0x91A5	0xBAC1	# HANGUL SYLLABLE MIEUM-O-THIEUTH
-0x91A6	0xBAC2	# HANGUL SYLLABLE MIEUM-O-PHIEUPH
-0x91A7	0xBAC3	# HANGUL SYLLABLE MIEUM-O-HIEUH
-0x91A8	0xBAC5	# HANGUL SYLLABLE MIEUM-WA-KIYEOK
-0x91A9	0xBAC6	# HANGUL SYLLABLE MIEUM-WA-SSANGKIYEOK
-0x91AA	0xBAC7	# HANGUL SYLLABLE MIEUM-WA-KIYEOKSIOS
-0x91AB	0xBAC9	# HANGUL SYLLABLE MIEUM-WA-NIEUNCIEUC
-0x91AC	0xBACA	# HANGUL SYLLABLE MIEUM-WA-NIEUNHIEUH
-0x91AD	0xBACB	# HANGUL SYLLABLE MIEUM-WA-TIKEUT
-0x91AE	0xBACC	# HANGUL SYLLABLE MIEUM-WA-RIEUL
-0x91AF	0xBACD	# HANGUL SYLLABLE MIEUM-WA-RIEULKIYEOK
-0x91B0	0xBACE	# HANGUL SYLLABLE MIEUM-WA-RIEULMIEUM
-0x91B1	0xBACF	# HANGUL SYLLABLE MIEUM-WA-RIEULPIEUP
-0x91B2	0xBAD0	# HANGUL SYLLABLE MIEUM-WA-RIEULSIOS
-0x91B3	0xBAD1	# HANGUL SYLLABLE MIEUM-WA-RIEULTHIEUTH
-0x91B4	0xBAD2	# HANGUL SYLLABLE MIEUM-WA-RIEULPHIEUPH
-0x91B5	0xBAD3	# HANGUL SYLLABLE MIEUM-WA-RIEULHIEUH
-0x91B6	0xBAD4	# HANGUL SYLLABLE MIEUM-WA-MIEUM
-0x91B7	0xBAD5	# HANGUL SYLLABLE MIEUM-WA-PIEUP
-0x91B8	0xBAD6	# HANGUL SYLLABLE MIEUM-WA-PIEUPSIOS
-0x91B9	0xBAD7	# HANGUL SYLLABLE MIEUM-WA-SIOS
-0x91BA	0xBADA	# HANGUL SYLLABLE MIEUM-WA-CIEUC
-0x91BB	0xBADB	# HANGUL SYLLABLE MIEUM-WA-CHIEUCH
-0x91BC	0xBADC	# HANGUL SYLLABLE MIEUM-WA-KHIEUKH
-0x91BD	0xBADD	# HANGUL SYLLABLE MIEUM-WA-THIEUTH
-0x91BE	0xBADE	# HANGUL SYLLABLE MIEUM-WA-PHIEUPH
-0x91BF	0xBADF	# HANGUL SYLLABLE MIEUM-WA-HIEUH
-0x91C0	0xBAE0	# HANGUL SYLLABLE MIEUM-WAE
-0x91C1	0xBAE1	# HANGUL SYLLABLE MIEUM-WAE-KIYEOK
-0x91C2	0xBAE2	# HANGUL SYLLABLE MIEUM-WAE-SSANGKIYEOK
-0x91C3	0xBAE3	# HANGUL SYLLABLE MIEUM-WAE-KIYEOKSIOS
-0x91C4	0xBAE4	# HANGUL SYLLABLE MIEUM-WAE-NIEUN
-0x91C5	0xBAE5	# HANGUL SYLLABLE MIEUM-WAE-NIEUNCIEUC
-0x91C6	0xBAE6	# HANGUL SYLLABLE MIEUM-WAE-NIEUNHIEUH
-0x91C7	0xBAE7	# HANGUL SYLLABLE MIEUM-WAE-TIKEUT
-0x91C8	0xBAE8	# HANGUL SYLLABLE MIEUM-WAE-RIEUL
-0x91C9	0xBAE9	# HANGUL SYLLABLE MIEUM-WAE-RIEULKIYEOK
-0x91CA	0xBAEA	# HANGUL SYLLABLE MIEUM-WAE-RIEULMIEUM
-0x91CB	0xBAEB	# HANGUL SYLLABLE MIEUM-WAE-RIEULPIEUP
-0x91CC	0xBAEC	# HANGUL SYLLABLE MIEUM-WAE-RIEULSIOS
-0x91CD	0xBAED	# HANGUL SYLLABLE MIEUM-WAE-RIEULTHIEUTH
-0x91CE	0xBAEE	# HANGUL SYLLABLE MIEUM-WAE-RIEULPHIEUPH
-0x91CF	0xBAEF	# HANGUL SYLLABLE MIEUM-WAE-RIEULHIEUH
-0x91D0	0xBAF0	# HANGUL SYLLABLE MIEUM-WAE-MIEUM
-0x91D1	0xBAF1	# HANGUL SYLLABLE MIEUM-WAE-PIEUP
-0x91D2	0xBAF2	# HANGUL SYLLABLE MIEUM-WAE-PIEUPSIOS
-0x91D3	0xBAF3	# HANGUL SYLLABLE MIEUM-WAE-SIOS
-0x91D4	0xBAF4	# HANGUL SYLLABLE MIEUM-WAE-SSANGSIOS
-0x91D5	0xBAF5	# HANGUL SYLLABLE MIEUM-WAE-IEUNG
-0x91D6	0xBAF6	# HANGUL SYLLABLE MIEUM-WAE-CIEUC
-0x91D7	0xBAF7	# HANGUL SYLLABLE MIEUM-WAE-CHIEUCH
-0x91D8	0xBAF8	# HANGUL SYLLABLE MIEUM-WAE-KHIEUKH
-0x91D9	0xBAF9	# HANGUL SYLLABLE MIEUM-WAE-THIEUTH
-0x91DA	0xBAFA	# HANGUL SYLLABLE MIEUM-WAE-PHIEUPH
-0x91DB	0xBAFB	# HANGUL SYLLABLE MIEUM-WAE-HIEUH
-0x91DC	0xBAFD	# HANGUL SYLLABLE MIEUM-OE-KIYEOK
-0x91DD	0xBAFE	# HANGUL SYLLABLE MIEUM-OE-SSANGKIYEOK
-0x91DE	0xBAFF	# HANGUL SYLLABLE MIEUM-OE-KIYEOKSIOS
-0x91DF	0xBB01	# HANGUL SYLLABLE MIEUM-OE-NIEUNCIEUC
-0x91E0	0xBB02	# HANGUL SYLLABLE MIEUM-OE-NIEUNHIEUH
-0x91E1	0xBB03	# HANGUL SYLLABLE MIEUM-OE-TIKEUT
-0x91E2	0xBB05	# HANGUL SYLLABLE MIEUM-OE-RIEULKIYEOK
-0x91E3	0xBB06	# HANGUL SYLLABLE MIEUM-OE-RIEULMIEUM
-0x91E4	0xBB07	# HANGUL SYLLABLE MIEUM-OE-RIEULPIEUP
-0x91E5	0xBB08	# HANGUL SYLLABLE MIEUM-OE-RIEULSIOS
-0x91E6	0xBB09	# HANGUL SYLLABLE MIEUM-OE-RIEULTHIEUTH
-0x91E7	0xBB0A	# HANGUL SYLLABLE MIEUM-OE-RIEULPHIEUPH
-0x91E8	0xBB0B	# HANGUL SYLLABLE MIEUM-OE-RIEULHIEUH
-0x91E9	0xBB0C	# HANGUL SYLLABLE MIEUM-OE-MIEUM
-0x91EA	0xBB0E	# HANGUL SYLLABLE MIEUM-OE-PIEUPSIOS
-0x91EB	0xBB10	# HANGUL SYLLABLE MIEUM-OE-SSANGSIOS
-0x91EC	0xBB12	# HANGUL SYLLABLE MIEUM-OE-CIEUC
-0x91ED	0xBB13	# HANGUL SYLLABLE MIEUM-OE-CHIEUCH
-0x91EE	0xBB14	# HANGUL SYLLABLE MIEUM-OE-KHIEUKH
-0x91EF	0xBB15	# HANGUL SYLLABLE MIEUM-OE-THIEUTH
-0x91F0	0xBB16	# HANGUL SYLLABLE MIEUM-OE-PHIEUPH
-0x91F1	0xBB17	# HANGUL SYLLABLE MIEUM-OE-HIEUH
-0x91F2	0xBB19	# HANGUL SYLLABLE MIEUM-YO-KIYEOK
-0x91F3	0xBB1A	# HANGUL SYLLABLE MIEUM-YO-SSANGKIYEOK
-0x91F4	0xBB1B	# HANGUL SYLLABLE MIEUM-YO-KIYEOKSIOS
-0x91F5	0xBB1D	# HANGUL SYLLABLE MIEUM-YO-NIEUNCIEUC
-0x91F6	0xBB1E	# HANGUL SYLLABLE MIEUM-YO-NIEUNHIEUH
-0x91F7	0xBB1F	# HANGUL SYLLABLE MIEUM-YO-TIKEUT
-0x91F8	0xBB21	# HANGUL SYLLABLE MIEUM-YO-RIEULKIYEOK
-0x91F9	0xBB22	# HANGUL SYLLABLE MIEUM-YO-RIEULMIEUM
-0x91FA	0xBB23	# HANGUL SYLLABLE MIEUM-YO-RIEULPIEUP
-0x91FB	0xBB24	# HANGUL SYLLABLE MIEUM-YO-RIEULSIOS
-0x91FC	0xBB25	# HANGUL SYLLABLE MIEUM-YO-RIEULTHIEUTH
-0x91FD	0xBB26	# HANGUL SYLLABLE MIEUM-YO-RIEULPHIEUPH
-0x91FE	0xBB27	# HANGUL SYLLABLE MIEUM-YO-RIEULHIEUH
-0x9241	0xBB28	# HANGUL SYLLABLE MIEUM-YO-MIEUM
-0x9242	0xBB2A	# HANGUL SYLLABLE MIEUM-YO-PIEUPSIOS
-0x9243	0xBB2C	# HANGUL SYLLABLE MIEUM-YO-SSANGSIOS
-0x9244	0xBB2D	# HANGUL SYLLABLE MIEUM-YO-IEUNG
-0x9245	0xBB2E	# HANGUL SYLLABLE MIEUM-YO-CIEUC
-0x9246	0xBB2F	# HANGUL SYLLABLE MIEUM-YO-CHIEUCH
-0x9247	0xBB30	# HANGUL SYLLABLE MIEUM-YO-KHIEUKH
-0x9248	0xBB31	# HANGUL SYLLABLE MIEUM-YO-THIEUTH
-0x9249	0xBB32	# HANGUL SYLLABLE MIEUM-YO-PHIEUPH
-0x924A	0xBB33	# HANGUL SYLLABLE MIEUM-YO-HIEUH
-0x924B	0xBB37	# HANGUL SYLLABLE MIEUM-U-KIYEOKSIOS
-0x924C	0xBB39	# HANGUL SYLLABLE MIEUM-U-NIEUNCIEUC
-0x924D	0xBB3A	# HANGUL SYLLABLE MIEUM-U-NIEUNHIEUH
-0x924E	0xBB3F	# HANGUL SYLLABLE MIEUM-U-RIEULPIEUP
-0x924F	0xBB40	# HANGUL SYLLABLE MIEUM-U-RIEULSIOS
-0x9250	0xBB41	# HANGUL SYLLABLE MIEUM-U-RIEULTHIEUTH
-0x9251	0xBB42	# HANGUL SYLLABLE MIEUM-U-RIEULPHIEUPH
-0x9252	0xBB43	# HANGUL SYLLABLE MIEUM-U-RIEULHIEUH
-0x9253	0xBB46	# HANGUL SYLLABLE MIEUM-U-PIEUPSIOS
-0x9254	0xBB48	# HANGUL SYLLABLE MIEUM-U-SSANGSIOS
-0x9255	0xBB4A	# HANGUL SYLLABLE MIEUM-U-CIEUC
-0x9256	0xBB4B	# HANGUL SYLLABLE MIEUM-U-CHIEUCH
-0x9257	0xBB4C	# HANGUL SYLLABLE MIEUM-U-KHIEUKH
-0x9258	0xBB4E	# HANGUL SYLLABLE MIEUM-U-PHIEUPH
-0x9259	0xBB51	# HANGUL SYLLABLE MIEUM-WEO-KIYEOK
-0x925A	0xBB52	# HANGUL SYLLABLE MIEUM-WEO-SSANGKIYEOK
-0x9261	0xBB53	# HANGUL SYLLABLE MIEUM-WEO-KIYEOKSIOS
-0x9262	0xBB55	# HANGUL SYLLABLE MIEUM-WEO-NIEUNCIEUC
-0x9263	0xBB56	# HANGUL SYLLABLE MIEUM-WEO-NIEUNHIEUH
-0x9264	0xBB57	# HANGUL SYLLABLE MIEUM-WEO-TIKEUT
-0x9265	0xBB59	# HANGUL SYLLABLE MIEUM-WEO-RIEULKIYEOK
-0x9266	0xBB5A	# HANGUL SYLLABLE MIEUM-WEO-RIEULMIEUM
-0x9267	0xBB5B	# HANGUL SYLLABLE MIEUM-WEO-RIEULPIEUP
-0x9268	0xBB5C	# HANGUL SYLLABLE MIEUM-WEO-RIEULSIOS
-0x9269	0xBB5D	# HANGUL SYLLABLE MIEUM-WEO-RIEULTHIEUTH
-0x926A	0xBB5E	# HANGUL SYLLABLE MIEUM-WEO-RIEULPHIEUPH
-0x926B	0xBB5F	# HANGUL SYLLABLE MIEUM-WEO-RIEULHIEUH
-0x926C	0xBB60	# HANGUL SYLLABLE MIEUM-WEO-MIEUM
-0x926D	0xBB62	# HANGUL SYLLABLE MIEUM-WEO-PIEUPSIOS
-0x926E	0xBB64	# HANGUL SYLLABLE MIEUM-WEO-SSANGSIOS
-0x926F	0xBB65	# HANGUL SYLLABLE MIEUM-WEO-IEUNG
-0x9270	0xBB66	# HANGUL SYLLABLE MIEUM-WEO-CIEUC
-0x9271	0xBB67	# HANGUL SYLLABLE MIEUM-WEO-CHIEUCH
-0x9272	0xBB68	# HANGUL SYLLABLE MIEUM-WEO-KHIEUKH
-0x9273	0xBB69	# HANGUL SYLLABLE MIEUM-WEO-THIEUTH
-0x9274	0xBB6A	# HANGUL SYLLABLE MIEUM-WEO-PHIEUPH
-0x9275	0xBB6B	# HANGUL SYLLABLE MIEUM-WEO-HIEUH
-0x9276	0xBB6D	# HANGUL SYLLABLE MIEUM-WE-KIYEOK
-0x9277	0xBB6E	# HANGUL SYLLABLE MIEUM-WE-SSANGKIYEOK
-0x9278	0xBB6F	# HANGUL SYLLABLE MIEUM-WE-KIYEOKSIOS
-0x9279	0xBB70	# HANGUL SYLLABLE MIEUM-WE-NIEUN
-0x927A	0xBB71	# HANGUL SYLLABLE MIEUM-WE-NIEUNCIEUC
-0x9281	0xBB72	# HANGUL SYLLABLE MIEUM-WE-NIEUNHIEUH
-0x9282	0xBB73	# HANGUL SYLLABLE MIEUM-WE-TIKEUT
-0x9283	0xBB74	# HANGUL SYLLABLE MIEUM-WE-RIEUL
-0x9284	0xBB75	# HANGUL SYLLABLE MIEUM-WE-RIEULKIYEOK
-0x9285	0xBB76	# HANGUL SYLLABLE MIEUM-WE-RIEULMIEUM
-0x9286	0xBB77	# HANGUL SYLLABLE MIEUM-WE-RIEULPIEUP
-0x9287	0xBB78	# HANGUL SYLLABLE MIEUM-WE-RIEULSIOS
-0x9288	0xBB79	# HANGUL SYLLABLE MIEUM-WE-RIEULTHIEUTH
-0x9289	0xBB7A	# HANGUL SYLLABLE MIEUM-WE-RIEULPHIEUPH
-0x928A	0xBB7B	# HANGUL SYLLABLE MIEUM-WE-RIEULHIEUH
-0x928B	0xBB7C	# HANGUL SYLLABLE MIEUM-WE-MIEUM
-0x928C	0xBB7D	# HANGUL SYLLABLE MIEUM-WE-PIEUP
-0x928D	0xBB7E	# HANGUL SYLLABLE MIEUM-WE-PIEUPSIOS
-0x928E	0xBB7F	# HANGUL SYLLABLE MIEUM-WE-SIOS
-0x928F	0xBB80	# HANGUL SYLLABLE MIEUM-WE-SSANGSIOS
-0x9290	0xBB81	# HANGUL SYLLABLE MIEUM-WE-IEUNG
-0x9291	0xBB82	# HANGUL SYLLABLE MIEUM-WE-CIEUC
-0x9292	0xBB83	# HANGUL SYLLABLE MIEUM-WE-CHIEUCH
-0x9293	0xBB84	# HANGUL SYLLABLE MIEUM-WE-KHIEUKH
-0x9294	0xBB85	# HANGUL SYLLABLE MIEUM-WE-THIEUTH
-0x9295	0xBB86	# HANGUL SYLLABLE MIEUM-WE-PHIEUPH
-0x9296	0xBB87	# HANGUL SYLLABLE MIEUM-WE-HIEUH
-0x9297	0xBB89	# HANGUL SYLLABLE MIEUM-WI-KIYEOK
-0x9298	0xBB8A	# HANGUL SYLLABLE MIEUM-WI-SSANGKIYEOK
-0x9299	0xBB8B	# HANGUL SYLLABLE MIEUM-WI-KIYEOKSIOS
-0x929A	0xBB8D	# HANGUL SYLLABLE MIEUM-WI-NIEUNCIEUC
-0x929B	0xBB8E	# HANGUL SYLLABLE MIEUM-WI-NIEUNHIEUH
-0x929C	0xBB8F	# HANGUL SYLLABLE MIEUM-WI-TIKEUT
-0x929D	0xBB91	# HANGUL SYLLABLE MIEUM-WI-RIEULKIYEOK
-0x929E	0xBB92	# HANGUL SYLLABLE MIEUM-WI-RIEULMIEUM
-0x929F	0xBB93	# HANGUL SYLLABLE MIEUM-WI-RIEULPIEUP
-0x92A0	0xBB94	# HANGUL SYLLABLE MIEUM-WI-RIEULSIOS
-0x92A1	0xBB95	# HANGUL SYLLABLE MIEUM-WI-RIEULTHIEUTH
-0x92A2	0xBB96	# HANGUL SYLLABLE MIEUM-WI-RIEULPHIEUPH
-0x92A3	0xBB97	# HANGUL SYLLABLE MIEUM-WI-RIEULHIEUH
-0x92A4	0xBB98	# HANGUL SYLLABLE MIEUM-WI-MIEUM
-0x92A5	0xBB99	# HANGUL SYLLABLE MIEUM-WI-PIEUP
-0x92A6	0xBB9A	# HANGUL SYLLABLE MIEUM-WI-PIEUPSIOS
-0x92A7	0xBB9B	# HANGUL SYLLABLE MIEUM-WI-SIOS
-0x92A8	0xBB9C	# HANGUL SYLLABLE MIEUM-WI-SSANGSIOS
-0x92A9	0xBB9D	# HANGUL SYLLABLE MIEUM-WI-IEUNG
-0x92AA	0xBB9E	# HANGUL SYLLABLE MIEUM-WI-CIEUC
-0x92AB	0xBB9F	# HANGUL SYLLABLE MIEUM-WI-CHIEUCH
-0x92AC	0xBBA0	# HANGUL SYLLABLE MIEUM-WI-KHIEUKH
-0x92AD	0xBBA1	# HANGUL SYLLABLE MIEUM-WI-THIEUTH
-0x92AE	0xBBA2	# HANGUL SYLLABLE MIEUM-WI-PHIEUPH
-0x92AF	0xBBA3	# HANGUL SYLLABLE MIEUM-WI-HIEUH
-0x92B0	0xBBA5	# HANGUL SYLLABLE MIEUM-YU-KIYEOK
-0x92B1	0xBBA6	# HANGUL SYLLABLE MIEUM-YU-SSANGKIYEOK
-0x92B2	0xBBA7	# HANGUL SYLLABLE MIEUM-YU-KIYEOKSIOS
-0x92B3	0xBBA9	# HANGUL SYLLABLE MIEUM-YU-NIEUNCIEUC
-0x92B4	0xBBAA	# HANGUL SYLLABLE MIEUM-YU-NIEUNHIEUH
-0x92B5	0xBBAB	# HANGUL SYLLABLE MIEUM-YU-TIKEUT
-0x92B6	0xBBAD	# HANGUL SYLLABLE MIEUM-YU-RIEULKIYEOK
-0x92B7	0xBBAE	# HANGUL SYLLABLE MIEUM-YU-RIEULMIEUM
-0x92B8	0xBBAF	# HANGUL SYLLABLE MIEUM-YU-RIEULPIEUP
-0x92B9	0xBBB0	# HANGUL SYLLABLE MIEUM-YU-RIEULSIOS
-0x92BA	0xBBB1	# HANGUL SYLLABLE MIEUM-YU-RIEULTHIEUTH
-0x92BB	0xBBB2	# HANGUL SYLLABLE MIEUM-YU-RIEULPHIEUPH
-0x92BC	0xBBB3	# HANGUL SYLLABLE MIEUM-YU-RIEULHIEUH
-0x92BD	0xBBB5	# HANGUL SYLLABLE MIEUM-YU-PIEUP
-0x92BE	0xBBB6	# HANGUL SYLLABLE MIEUM-YU-PIEUPSIOS
-0x92BF	0xBBB8	# HANGUL SYLLABLE MIEUM-YU-SSANGSIOS
-0x92C0	0xBBB9	# HANGUL SYLLABLE MIEUM-YU-IEUNG
-0x92C1	0xBBBA	# HANGUL SYLLABLE MIEUM-YU-CIEUC
-0x92C2	0xBBBB	# HANGUL SYLLABLE MIEUM-YU-CHIEUCH
-0x92C3	0xBBBC	# HANGUL SYLLABLE MIEUM-YU-KHIEUKH
-0x92C4	0xBBBD	# HANGUL SYLLABLE MIEUM-YU-THIEUTH
-0x92C5	0xBBBE	# HANGUL SYLLABLE MIEUM-YU-PHIEUPH
-0x92C6	0xBBBF	# HANGUL SYLLABLE MIEUM-YU-HIEUH
-0x92C7	0xBBC1	# HANGUL SYLLABLE MIEUM-EU-KIYEOK
-0x92C8	0xBBC2	# HANGUL SYLLABLE MIEUM-EU-SSANGKIYEOK
-0x92C9	0xBBC3	# HANGUL SYLLABLE MIEUM-EU-KIYEOKSIOS
-0x92CA	0xBBC5	# HANGUL SYLLABLE MIEUM-EU-NIEUNCIEUC
-0x92CB	0xBBC6	# HANGUL SYLLABLE MIEUM-EU-NIEUNHIEUH
-0x92CC	0xBBC7	# HANGUL SYLLABLE MIEUM-EU-TIKEUT
-0x92CD	0xBBC9	# HANGUL SYLLABLE MIEUM-EU-RIEULKIYEOK
-0x92CE	0xBBCA	# HANGUL SYLLABLE MIEUM-EU-RIEULMIEUM
-0x92CF	0xBBCB	# HANGUL SYLLABLE MIEUM-EU-RIEULPIEUP
-0x92D0	0xBBCC	# HANGUL SYLLABLE MIEUM-EU-RIEULSIOS
-0x92D1	0xBBCD	# HANGUL SYLLABLE MIEUM-EU-RIEULTHIEUTH
-0x92D2	0xBBCE	# HANGUL SYLLABLE MIEUM-EU-RIEULPHIEUPH
-0x92D3	0xBBCF	# HANGUL SYLLABLE MIEUM-EU-RIEULHIEUH
-0x92D4	0xBBD1	# HANGUL SYLLABLE MIEUM-EU-PIEUP
-0x92D5	0xBBD2	# HANGUL SYLLABLE MIEUM-EU-PIEUPSIOS
-0x92D6	0xBBD4	# HANGUL SYLLABLE MIEUM-EU-SSANGSIOS
-0x92D7	0xBBD5	# HANGUL SYLLABLE MIEUM-EU-IEUNG
-0x92D8	0xBBD6	# HANGUL SYLLABLE MIEUM-EU-CIEUC
-0x92D9	0xBBD7	# HANGUL SYLLABLE MIEUM-EU-CHIEUCH
-0x92DA	0xBBD8	# HANGUL SYLLABLE MIEUM-EU-KHIEUKH
-0x92DB	0xBBD9	# HANGUL SYLLABLE MIEUM-EU-THIEUTH
-0x92DC	0xBBDA	# HANGUL SYLLABLE MIEUM-EU-PHIEUPH
-0x92DD	0xBBDB	# HANGUL SYLLABLE MIEUM-EU-HIEUH
-0x92DE	0xBBDC	# HANGUL SYLLABLE MIEUM-YI
-0x92DF	0xBBDD	# HANGUL SYLLABLE MIEUM-YI-KIYEOK
-0x92E0	0xBBDE	# HANGUL SYLLABLE MIEUM-YI-SSANGKIYEOK
-0x92E1	0xBBDF	# HANGUL SYLLABLE MIEUM-YI-KIYEOKSIOS
-0x92E2	0xBBE0	# HANGUL SYLLABLE MIEUM-YI-NIEUN
-0x92E3	0xBBE1	# HANGUL SYLLABLE MIEUM-YI-NIEUNCIEUC
-0x92E4	0xBBE2	# HANGUL SYLLABLE MIEUM-YI-NIEUNHIEUH
-0x92E5	0xBBE3	# HANGUL SYLLABLE MIEUM-YI-TIKEUT
-0x92E6	0xBBE4	# HANGUL SYLLABLE MIEUM-YI-RIEUL
-0x92E7	0xBBE5	# HANGUL SYLLABLE MIEUM-YI-RIEULKIYEOK
-0x92E8	0xBBE6	# HANGUL SYLLABLE MIEUM-YI-RIEULMIEUM
-0x92E9	0xBBE7	# HANGUL SYLLABLE MIEUM-YI-RIEULPIEUP
-0x92EA	0xBBE8	# HANGUL SYLLABLE MIEUM-YI-RIEULSIOS
-0x92EB	0xBBE9	# HANGUL SYLLABLE MIEUM-YI-RIEULTHIEUTH
-0x92EC	0xBBEA	# HANGUL SYLLABLE MIEUM-YI-RIEULPHIEUPH
-0x92ED	0xBBEB	# HANGUL SYLLABLE MIEUM-YI-RIEULHIEUH
-0x92EE	0xBBEC	# HANGUL SYLLABLE MIEUM-YI-MIEUM
-0x92EF	0xBBED	# HANGUL SYLLABLE MIEUM-YI-PIEUP
-0x92F0	0xBBEE	# HANGUL SYLLABLE MIEUM-YI-PIEUPSIOS
-0x92F1	0xBBEF	# HANGUL SYLLABLE MIEUM-YI-SIOS
-0x92F2	0xBBF0	# HANGUL SYLLABLE MIEUM-YI-SSANGSIOS
-0x92F3	0xBBF1	# HANGUL SYLLABLE MIEUM-YI-IEUNG
-0x92F4	0xBBF2	# HANGUL SYLLABLE MIEUM-YI-CIEUC
-0x92F5	0xBBF3	# HANGUL SYLLABLE MIEUM-YI-CHIEUCH
-0x92F6	0xBBF4	# HANGUL SYLLABLE MIEUM-YI-KHIEUKH
-0x92F7	0xBBF5	# HANGUL SYLLABLE MIEUM-YI-THIEUTH
-0x92F8	0xBBF6	# HANGUL SYLLABLE MIEUM-YI-PHIEUPH
-0x92F9	0xBBF7	# HANGUL SYLLABLE MIEUM-YI-HIEUH
-0x92FA	0xBBFA	# HANGUL SYLLABLE MIEUM-I-SSANGKIYEOK
-0x92FB	0xBBFB	# HANGUL SYLLABLE MIEUM-I-KIYEOKSIOS
-0x92FC	0xBBFD	# HANGUL SYLLABLE MIEUM-I-NIEUNCIEUC
-0x92FD	0xBBFE	# HANGUL SYLLABLE MIEUM-I-NIEUNHIEUH
-0x92FE	0xBC01	# HANGUL SYLLABLE MIEUM-I-RIEULKIYEOK
-0x9341	0xBC03	# HANGUL SYLLABLE MIEUM-I-RIEULPIEUP
-0x9342	0xBC04	# HANGUL SYLLABLE MIEUM-I-RIEULSIOS
-0x9343	0xBC05	# HANGUL SYLLABLE MIEUM-I-RIEULTHIEUTH
-0x9344	0xBC06	# HANGUL SYLLABLE MIEUM-I-RIEULPHIEUPH
-0x9345	0xBC07	# HANGUL SYLLABLE MIEUM-I-RIEULHIEUH
-0x9346	0xBC0A	# HANGUL SYLLABLE MIEUM-I-PIEUPSIOS
-0x9347	0xBC0E	# HANGUL SYLLABLE MIEUM-I-CIEUC
-0x9348	0xBC10	# HANGUL SYLLABLE MIEUM-I-KHIEUKH
-0x9349	0xBC12	# HANGUL SYLLABLE MIEUM-I-PHIEUPH
-0x934A	0xBC13	# HANGUL SYLLABLE MIEUM-I-HIEUH
-0x934B	0xBC19	# HANGUL SYLLABLE PIEUP-A-NIEUNCIEUC
-0x934C	0xBC1A	# HANGUL SYLLABLE PIEUP-A-NIEUNHIEUH
-0x934D	0xBC20	# HANGUL SYLLABLE PIEUP-A-RIEULSIOS
-0x934E	0xBC21	# HANGUL SYLLABLE PIEUP-A-RIEULTHIEUTH
-0x934F	0xBC22	# HANGUL SYLLABLE PIEUP-A-RIEULPHIEUPH
-0x9350	0xBC23	# HANGUL SYLLABLE PIEUP-A-RIEULHIEUH
-0x9351	0xBC26	# HANGUL SYLLABLE PIEUP-A-PIEUPSIOS
-0x9352	0xBC28	# HANGUL SYLLABLE PIEUP-A-SSANGSIOS
-0x9353	0xBC2A	# HANGUL SYLLABLE PIEUP-A-CIEUC
-0x9354	0xBC2B	# HANGUL SYLLABLE PIEUP-A-CHIEUCH
-0x9355	0xBC2C	# HANGUL SYLLABLE PIEUP-A-KHIEUKH
-0x9356	0xBC2E	# HANGUL SYLLABLE PIEUP-A-PHIEUPH
-0x9357	0xBC2F	# HANGUL SYLLABLE PIEUP-A-HIEUH
-0x9358	0xBC32	# HANGUL SYLLABLE PIEUP-AE-SSANGKIYEOK
-0x9359	0xBC33	# HANGUL SYLLABLE PIEUP-AE-KIYEOKSIOS
-0x935A	0xBC35	# HANGUL SYLLABLE PIEUP-AE-NIEUNCIEUC
-0x9361	0xBC36	# HANGUL SYLLABLE PIEUP-AE-NIEUNHIEUH
-0x9362	0xBC37	# HANGUL SYLLABLE PIEUP-AE-TIKEUT
-0x9363	0xBC39	# HANGUL SYLLABLE PIEUP-AE-RIEULKIYEOK
-0x9364	0xBC3A	# HANGUL SYLLABLE PIEUP-AE-RIEULMIEUM
-0x9365	0xBC3B	# HANGUL SYLLABLE PIEUP-AE-RIEULPIEUP
-0x9366	0xBC3C	# HANGUL SYLLABLE PIEUP-AE-RIEULSIOS
-0x9367	0xBC3D	# HANGUL SYLLABLE PIEUP-AE-RIEULTHIEUTH
-0x9368	0xBC3E	# HANGUL SYLLABLE PIEUP-AE-RIEULPHIEUPH
-0x9369	0xBC3F	# HANGUL SYLLABLE PIEUP-AE-RIEULHIEUH
-0x936A	0xBC42	# HANGUL SYLLABLE PIEUP-AE-PIEUPSIOS
-0x936B	0xBC46	# HANGUL SYLLABLE PIEUP-AE-CIEUC
-0x936C	0xBC47	# HANGUL SYLLABLE PIEUP-AE-CHIEUCH
-0x936D	0xBC48	# HANGUL SYLLABLE PIEUP-AE-KHIEUKH
-0x936E	0xBC4A	# HANGUL SYLLABLE PIEUP-AE-PHIEUPH
-0x936F	0xBC4B	# HANGUL SYLLABLE PIEUP-AE-HIEUH
-0x9370	0xBC4E	# HANGUL SYLLABLE PIEUP-YA-SSANGKIYEOK
-0x9371	0xBC4F	# HANGUL SYLLABLE PIEUP-YA-KIYEOKSIOS
-0x9372	0xBC51	# HANGUL SYLLABLE PIEUP-YA-NIEUNCIEUC
-0x9373	0xBC52	# HANGUL SYLLABLE PIEUP-YA-NIEUNHIEUH
-0x9374	0xBC53	# HANGUL SYLLABLE PIEUP-YA-TIKEUT
-0x9375	0xBC54	# HANGUL SYLLABLE PIEUP-YA-RIEUL
-0x9376	0xBC55	# HANGUL SYLLABLE PIEUP-YA-RIEULKIYEOK
-0x9377	0xBC56	# HANGUL SYLLABLE PIEUP-YA-RIEULMIEUM
-0x9378	0xBC57	# HANGUL SYLLABLE PIEUP-YA-RIEULPIEUP
-0x9379	0xBC58	# HANGUL SYLLABLE PIEUP-YA-RIEULSIOS
-0x937A	0xBC59	# HANGUL SYLLABLE PIEUP-YA-RIEULTHIEUTH
-0x9381	0xBC5A	# HANGUL SYLLABLE PIEUP-YA-RIEULPHIEUPH
-0x9382	0xBC5B	# HANGUL SYLLABLE PIEUP-YA-RIEULHIEUH
-0x9383	0xBC5C	# HANGUL SYLLABLE PIEUP-YA-MIEUM
-0x9384	0xBC5E	# HANGUL SYLLABLE PIEUP-YA-PIEUPSIOS
-0x9385	0xBC5F	# HANGUL SYLLABLE PIEUP-YA-SIOS
-0x9386	0xBC60	# HANGUL SYLLABLE PIEUP-YA-SSANGSIOS
-0x9387	0xBC61	# HANGUL SYLLABLE PIEUP-YA-IEUNG
-0x9388	0xBC62	# HANGUL SYLLABLE PIEUP-YA-CIEUC
-0x9389	0xBC63	# HANGUL SYLLABLE PIEUP-YA-CHIEUCH
-0x938A	0xBC64	# HANGUL SYLLABLE PIEUP-YA-KHIEUKH
-0x938B	0xBC65	# HANGUL SYLLABLE PIEUP-YA-THIEUTH
-0x938C	0xBC66	# HANGUL SYLLABLE PIEUP-YA-PHIEUPH
-0x938D	0xBC67	# HANGUL SYLLABLE PIEUP-YA-HIEUH
-0x938E	0xBC68	# HANGUL SYLLABLE PIEUP-YAE
-0x938F	0xBC69	# HANGUL SYLLABLE PIEUP-YAE-KIYEOK
-0x9390	0xBC6A	# HANGUL SYLLABLE PIEUP-YAE-SSANGKIYEOK
-0x9391	0xBC6B	# HANGUL SYLLABLE PIEUP-YAE-KIYEOKSIOS
-0x9392	0xBC6C	# HANGUL SYLLABLE PIEUP-YAE-NIEUN
-0x9393	0xBC6D	# HANGUL SYLLABLE PIEUP-YAE-NIEUNCIEUC
-0x9394	0xBC6E	# HANGUL SYLLABLE PIEUP-YAE-NIEUNHIEUH
-0x9395	0xBC6F	# HANGUL SYLLABLE PIEUP-YAE-TIKEUT
-0x9396	0xBC70	# HANGUL SYLLABLE PIEUP-YAE-RIEUL
-0x9397	0xBC71	# HANGUL SYLLABLE PIEUP-YAE-RIEULKIYEOK
-0x9398	0xBC72	# HANGUL SYLLABLE PIEUP-YAE-RIEULMIEUM
-0x9399	0xBC73	# HANGUL SYLLABLE PIEUP-YAE-RIEULPIEUP
-0x939A	0xBC74	# HANGUL SYLLABLE PIEUP-YAE-RIEULSIOS
-0x939B	0xBC75	# HANGUL SYLLABLE PIEUP-YAE-RIEULTHIEUTH
-0x939C	0xBC76	# HANGUL SYLLABLE PIEUP-YAE-RIEULPHIEUPH
-0x939D	0xBC77	# HANGUL SYLLABLE PIEUP-YAE-RIEULHIEUH
-0x939E	0xBC78	# HANGUL SYLLABLE PIEUP-YAE-MIEUM
-0x939F	0xBC79	# HANGUL SYLLABLE PIEUP-YAE-PIEUP
-0x93A0	0xBC7A	# HANGUL SYLLABLE PIEUP-YAE-PIEUPSIOS
-0x93A1	0xBC7B	# HANGUL SYLLABLE PIEUP-YAE-SIOS
-0x93A2	0xBC7C	# HANGUL SYLLABLE PIEUP-YAE-SSANGSIOS
-0x93A3	0xBC7D	# HANGUL SYLLABLE PIEUP-YAE-IEUNG
-0x93A4	0xBC7E	# HANGUL SYLLABLE PIEUP-YAE-CIEUC
-0x93A5	0xBC7F	# HANGUL SYLLABLE PIEUP-YAE-CHIEUCH
-0x93A6	0xBC80	# HANGUL SYLLABLE PIEUP-YAE-KHIEUKH
-0x93A7	0xBC81	# HANGUL SYLLABLE PIEUP-YAE-THIEUTH
-0x93A8	0xBC82	# HANGUL SYLLABLE PIEUP-YAE-PHIEUPH
-0x93A9	0xBC83	# HANGUL SYLLABLE PIEUP-YAE-HIEUH
-0x93AA	0xBC86	# HANGUL SYLLABLE PIEUP-EO-SSANGKIYEOK
-0x93AB	0xBC87	# HANGUL SYLLABLE PIEUP-EO-KIYEOKSIOS
-0x93AC	0xBC89	# HANGUL SYLLABLE PIEUP-EO-NIEUNCIEUC
-0x93AD	0xBC8A	# HANGUL SYLLABLE PIEUP-EO-NIEUNHIEUH
-0x93AE	0xBC8D	# HANGUL SYLLABLE PIEUP-EO-RIEULKIYEOK
-0x93AF	0xBC8F	# HANGUL SYLLABLE PIEUP-EO-RIEULPIEUP
-0x93B0	0xBC90	# HANGUL SYLLABLE PIEUP-EO-RIEULSIOS
-0x93B1	0xBC91	# HANGUL SYLLABLE PIEUP-EO-RIEULTHIEUTH
-0x93B2	0xBC92	# HANGUL SYLLABLE PIEUP-EO-RIEULPHIEUPH
-0x93B3	0xBC93	# HANGUL SYLLABLE PIEUP-EO-RIEULHIEUH
-0x93B4	0xBC96	# HANGUL SYLLABLE PIEUP-EO-PIEUPSIOS
-0x93B5	0xBC98	# HANGUL SYLLABLE PIEUP-EO-SSANGSIOS
-0x93B6	0xBC9B	# HANGUL SYLLABLE PIEUP-EO-CHIEUCH
-0x93B7	0xBC9C	# HANGUL SYLLABLE PIEUP-EO-KHIEUKH
-0x93B8	0xBC9D	# HANGUL SYLLABLE PIEUP-EO-THIEUTH
-0x93B9	0xBC9E	# HANGUL SYLLABLE PIEUP-EO-PHIEUPH
-0x93BA	0xBC9F	# HANGUL SYLLABLE PIEUP-EO-HIEUH
-0x93BB	0xBCA2	# HANGUL SYLLABLE PIEUP-E-SSANGKIYEOK
-0x93BC	0xBCA3	# HANGUL SYLLABLE PIEUP-E-KIYEOKSIOS
-0x93BD	0xBCA5	# HANGUL SYLLABLE PIEUP-E-NIEUNCIEUC
-0x93BE	0xBCA6	# HANGUL SYLLABLE PIEUP-E-NIEUNHIEUH
-0x93BF	0xBCA9	# HANGUL SYLLABLE PIEUP-E-RIEULKIYEOK
-0x93C0	0xBCAA	# HANGUL SYLLABLE PIEUP-E-RIEULMIEUM
-0x93C1	0xBCAB	# HANGUL SYLLABLE PIEUP-E-RIEULPIEUP
-0x93C2	0xBCAC	# HANGUL SYLLABLE PIEUP-E-RIEULSIOS
-0x93C3	0xBCAD	# HANGUL SYLLABLE PIEUP-E-RIEULTHIEUTH
-0x93C4	0xBCAE	# HANGUL SYLLABLE PIEUP-E-RIEULPHIEUPH
-0x93C5	0xBCAF	# HANGUL SYLLABLE PIEUP-E-RIEULHIEUH
-0x93C6	0xBCB2	# HANGUL SYLLABLE PIEUP-E-PIEUPSIOS
-0x93C7	0xBCB6	# HANGUL SYLLABLE PIEUP-E-CIEUC
-0x93C8	0xBCB7	# HANGUL SYLLABLE PIEUP-E-CHIEUCH
-0x93C9	0xBCB8	# HANGUL SYLLABLE PIEUP-E-KHIEUKH
-0x93CA	0xBCB9	# HANGUL SYLLABLE PIEUP-E-THIEUTH
-0x93CB	0xBCBA	# HANGUL SYLLABLE PIEUP-E-PHIEUPH
-0x93CC	0xBCBB	# HANGUL SYLLABLE PIEUP-E-HIEUH
-0x93CD	0xBCBE	# HANGUL SYLLABLE PIEUP-YEO-SSANGKIYEOK
-0x93CE	0xBCBF	# HANGUL SYLLABLE PIEUP-YEO-KIYEOKSIOS
-0x93CF	0xBCC1	# HANGUL SYLLABLE PIEUP-YEO-NIEUNCIEUC
-0x93D0	0xBCC2	# HANGUL SYLLABLE PIEUP-YEO-NIEUNHIEUH
-0x93D1	0xBCC3	# HANGUL SYLLABLE PIEUP-YEO-TIKEUT
-0x93D2	0xBCC5	# HANGUL SYLLABLE PIEUP-YEO-RIEULKIYEOK
-0x93D3	0xBCC6	# HANGUL SYLLABLE PIEUP-YEO-RIEULMIEUM
-0x93D4	0xBCC7	# HANGUL SYLLABLE PIEUP-YEO-RIEULPIEUP
-0x93D5	0xBCC8	# HANGUL SYLLABLE PIEUP-YEO-RIEULSIOS
-0x93D6	0xBCC9	# HANGUL SYLLABLE PIEUP-YEO-RIEULTHIEUTH
-0x93D7	0xBCCA	# HANGUL SYLLABLE PIEUP-YEO-RIEULPHIEUPH
-0x93D8	0xBCCB	# HANGUL SYLLABLE PIEUP-YEO-RIEULHIEUH
-0x93D9	0xBCCC	# HANGUL SYLLABLE PIEUP-YEO-MIEUM
-0x93DA	0xBCCE	# HANGUL SYLLABLE PIEUP-YEO-PIEUPSIOS
-0x93DB	0xBCD2	# HANGUL SYLLABLE PIEUP-YEO-CIEUC
-0x93DC	0xBCD3	# HANGUL SYLLABLE PIEUP-YEO-CHIEUCH
-0x93DD	0xBCD4	# HANGUL SYLLABLE PIEUP-YEO-KHIEUKH
-0x93DE	0xBCD6	# HANGUL SYLLABLE PIEUP-YEO-PHIEUPH
-0x93DF	0xBCD7	# HANGUL SYLLABLE PIEUP-YEO-HIEUH
-0x93E0	0xBCD9	# HANGUL SYLLABLE PIEUP-YE-KIYEOK
-0x93E1	0xBCDA	# HANGUL SYLLABLE PIEUP-YE-SSANGKIYEOK
-0x93E2	0xBCDB	# HANGUL SYLLABLE PIEUP-YE-KIYEOKSIOS
-0x93E3	0xBCDD	# HANGUL SYLLABLE PIEUP-YE-NIEUNCIEUC
-0x93E4	0xBCDE	# HANGUL SYLLABLE PIEUP-YE-NIEUNHIEUH
-0x93E5	0xBCDF	# HANGUL SYLLABLE PIEUP-YE-TIKEUT
-0x93E6	0xBCE0	# HANGUL SYLLABLE PIEUP-YE-RIEUL
-0x93E7	0xBCE1	# HANGUL SYLLABLE PIEUP-YE-RIEULKIYEOK
-0x93E8	0xBCE2	# HANGUL SYLLABLE PIEUP-YE-RIEULMIEUM
-0x93E9	0xBCE3	# HANGUL SYLLABLE PIEUP-YE-RIEULPIEUP
-0x93EA	0xBCE4	# HANGUL SYLLABLE PIEUP-YE-RIEULSIOS
-0x93EB	0xBCE5	# HANGUL SYLLABLE PIEUP-YE-RIEULTHIEUTH
-0x93EC	0xBCE6	# HANGUL SYLLABLE PIEUP-YE-RIEULPHIEUPH
-0x93ED	0xBCE7	# HANGUL SYLLABLE PIEUP-YE-RIEULHIEUH
-0x93EE	0xBCE8	# HANGUL SYLLABLE PIEUP-YE-MIEUM
-0x93EF	0xBCE9	# HANGUL SYLLABLE PIEUP-YE-PIEUP
-0x93F0	0xBCEA	# HANGUL SYLLABLE PIEUP-YE-PIEUPSIOS
-0x93F1	0xBCEB	# HANGUL SYLLABLE PIEUP-YE-SIOS
-0x93F2	0xBCEC	# HANGUL SYLLABLE PIEUP-YE-SSANGSIOS
-0x93F3	0xBCED	# HANGUL SYLLABLE PIEUP-YE-IEUNG
-0x93F4	0xBCEE	# HANGUL SYLLABLE PIEUP-YE-CIEUC
-0x93F5	0xBCEF	# HANGUL SYLLABLE PIEUP-YE-CHIEUCH
-0x93F6	0xBCF0	# HANGUL SYLLABLE PIEUP-YE-KHIEUKH
-0x93F7	0xBCF1	# HANGUL SYLLABLE PIEUP-YE-THIEUTH
-0x93F8	0xBCF2	# HANGUL SYLLABLE PIEUP-YE-PHIEUPH
-0x93F9	0xBCF3	# HANGUL SYLLABLE PIEUP-YE-HIEUH
-0x93FA	0xBCF7	# HANGUL SYLLABLE PIEUP-O-KIYEOKSIOS
-0x93FB	0xBCF9	# HANGUL SYLLABLE PIEUP-O-NIEUNCIEUC
-0x93FC	0xBCFA	# HANGUL SYLLABLE PIEUP-O-NIEUNHIEUH
-0x93FD	0xBCFB	# HANGUL SYLLABLE PIEUP-O-TIKEUT
-0x93FE	0xBCFD	# HANGUL SYLLABLE PIEUP-O-RIEULKIYEOK
-0x9441	0xBCFE	# HANGUL SYLLABLE PIEUP-O-RIEULMIEUM
-0x9442	0xBCFF	# HANGUL SYLLABLE PIEUP-O-RIEULPIEUP
-0x9443	0xBD00	# HANGUL SYLLABLE PIEUP-O-RIEULSIOS
-0x9444	0xBD01	# HANGUL SYLLABLE PIEUP-O-RIEULTHIEUTH
-0x9445	0xBD02	# HANGUL SYLLABLE PIEUP-O-RIEULPHIEUPH
-0x9446	0xBD03	# HANGUL SYLLABLE PIEUP-O-RIEULHIEUH
-0x9447	0xBD06	# HANGUL SYLLABLE PIEUP-O-PIEUPSIOS
-0x9448	0xBD08	# HANGUL SYLLABLE PIEUP-O-SSANGSIOS
-0x9449	0xBD0A	# HANGUL SYLLABLE PIEUP-O-CIEUC
-0x944A	0xBD0B	# HANGUL SYLLABLE PIEUP-O-CHIEUCH
-0x944B	0xBD0C	# HANGUL SYLLABLE PIEUP-O-KHIEUKH
-0x944C	0xBD0D	# HANGUL SYLLABLE PIEUP-O-THIEUTH
-0x944D	0xBD0E	# HANGUL SYLLABLE PIEUP-O-PHIEUPH
-0x944E	0xBD0F	# HANGUL SYLLABLE PIEUP-O-HIEUH
-0x944F	0xBD11	# HANGUL SYLLABLE PIEUP-WA-KIYEOK
-0x9450	0xBD12	# HANGUL SYLLABLE PIEUP-WA-SSANGKIYEOK
-0x9451	0xBD13	# HANGUL SYLLABLE PIEUP-WA-KIYEOKSIOS
-0x9452	0xBD15	# HANGUL SYLLABLE PIEUP-WA-NIEUNCIEUC
-0x9453	0xBD16	# HANGUL SYLLABLE PIEUP-WA-NIEUNHIEUH
-0x9454	0xBD17	# HANGUL SYLLABLE PIEUP-WA-TIKEUT
-0x9455	0xBD18	# HANGUL SYLLABLE PIEUP-WA-RIEUL
-0x9456	0xBD19	# HANGUL SYLLABLE PIEUP-WA-RIEULKIYEOK
-0x9457	0xBD1A	# HANGUL SYLLABLE PIEUP-WA-RIEULMIEUM
-0x9458	0xBD1B	# HANGUL SYLLABLE PIEUP-WA-RIEULPIEUP
-0x9459	0xBD1C	# HANGUL SYLLABLE PIEUP-WA-RIEULSIOS
-0x945A	0xBD1D	# HANGUL SYLLABLE PIEUP-WA-RIEULTHIEUTH
-0x9461	0xBD1E	# HANGUL SYLLABLE PIEUP-WA-RIEULPHIEUPH
-0x9462	0xBD1F	# HANGUL SYLLABLE PIEUP-WA-RIEULHIEUH
-0x9463	0xBD20	# HANGUL SYLLABLE PIEUP-WA-MIEUM
-0x9464	0xBD21	# HANGUL SYLLABLE PIEUP-WA-PIEUP
-0x9465	0xBD22	# HANGUL SYLLABLE PIEUP-WA-PIEUPSIOS
-0x9466	0xBD23	# HANGUL SYLLABLE PIEUP-WA-SIOS
-0x9467	0xBD25	# HANGUL SYLLABLE PIEUP-WA-IEUNG
-0x9468	0xBD26	# HANGUL SYLLABLE PIEUP-WA-CIEUC
-0x9469	0xBD27	# HANGUL SYLLABLE PIEUP-WA-CHIEUCH
-0x946A	0xBD28	# HANGUL SYLLABLE PIEUP-WA-KHIEUKH
-0x946B	0xBD29	# HANGUL SYLLABLE PIEUP-WA-THIEUTH
-0x946C	0xBD2A	# HANGUL SYLLABLE PIEUP-WA-PHIEUPH
-0x946D	0xBD2B	# HANGUL SYLLABLE PIEUP-WA-HIEUH
-0x946E	0xBD2D	# HANGUL SYLLABLE PIEUP-WAE-KIYEOK
-0x946F	0xBD2E	# HANGUL SYLLABLE PIEUP-WAE-SSANGKIYEOK
-0x9470	0xBD2F	# HANGUL SYLLABLE PIEUP-WAE-KIYEOKSIOS
-0x9471	0xBD30	# HANGUL SYLLABLE PIEUP-WAE-NIEUN
-0x9472	0xBD31	# HANGUL SYLLABLE PIEUP-WAE-NIEUNCIEUC
-0x9473	0xBD32	# HANGUL SYLLABLE PIEUP-WAE-NIEUNHIEUH
-0x9474	0xBD33	# HANGUL SYLLABLE PIEUP-WAE-TIKEUT
-0x9475	0xBD34	# HANGUL SYLLABLE PIEUP-WAE-RIEUL
-0x9476	0xBD35	# HANGUL SYLLABLE PIEUP-WAE-RIEULKIYEOK
-0x9477	0xBD36	# HANGUL SYLLABLE PIEUP-WAE-RIEULMIEUM
-0x9478	0xBD37	# HANGUL SYLLABLE PIEUP-WAE-RIEULPIEUP
-0x9479	0xBD38	# HANGUL SYLLABLE PIEUP-WAE-RIEULSIOS
-0x947A	0xBD39	# HANGUL SYLLABLE PIEUP-WAE-RIEULTHIEUTH
-0x9481	0xBD3A	# HANGUL SYLLABLE PIEUP-WAE-RIEULPHIEUPH
-0x9482	0xBD3B	# HANGUL SYLLABLE PIEUP-WAE-RIEULHIEUH
-0x9483	0xBD3C	# HANGUL SYLLABLE PIEUP-WAE-MIEUM
-0x9484	0xBD3D	# HANGUL SYLLABLE PIEUP-WAE-PIEUP
-0x9485	0xBD3E	# HANGUL SYLLABLE PIEUP-WAE-PIEUPSIOS
-0x9486	0xBD3F	# HANGUL SYLLABLE PIEUP-WAE-SIOS
-0x9487	0xBD41	# HANGUL SYLLABLE PIEUP-WAE-IEUNG
-0x9488	0xBD42	# HANGUL SYLLABLE PIEUP-WAE-CIEUC
-0x9489	0xBD43	# HANGUL SYLLABLE PIEUP-WAE-CHIEUCH
-0x948A	0xBD44	# HANGUL SYLLABLE PIEUP-WAE-KHIEUKH
-0x948B	0xBD45	# HANGUL SYLLABLE PIEUP-WAE-THIEUTH
-0x948C	0xBD46	# HANGUL SYLLABLE PIEUP-WAE-PHIEUPH
-0x948D	0xBD47	# HANGUL SYLLABLE PIEUP-WAE-HIEUH
-0x948E	0xBD4A	# HANGUL SYLLABLE PIEUP-OE-SSANGKIYEOK
-0x948F	0xBD4B	# HANGUL SYLLABLE PIEUP-OE-KIYEOKSIOS
-0x9490	0xBD4D	# HANGUL SYLLABLE PIEUP-OE-NIEUNCIEUC
-0x9491	0xBD4E	# HANGUL SYLLABLE PIEUP-OE-NIEUNHIEUH
-0x9492	0xBD4F	# HANGUL SYLLABLE PIEUP-OE-TIKEUT
-0x9493	0xBD51	# HANGUL SYLLABLE PIEUP-OE-RIEULKIYEOK
-0x9494	0xBD52	# HANGUL SYLLABLE PIEUP-OE-RIEULMIEUM
-0x9495	0xBD53	# HANGUL SYLLABLE PIEUP-OE-RIEULPIEUP
-0x9496	0xBD54	# HANGUL SYLLABLE PIEUP-OE-RIEULSIOS
-0x9497	0xBD55	# HANGUL SYLLABLE PIEUP-OE-RIEULTHIEUTH
-0x9498	0xBD56	# HANGUL SYLLABLE PIEUP-OE-RIEULPHIEUPH
-0x9499	0xBD57	# HANGUL SYLLABLE PIEUP-OE-RIEULHIEUH
-0x949A	0xBD5A	# HANGUL SYLLABLE PIEUP-OE-PIEUPSIOS
-0x949B	0xBD5B	# HANGUL SYLLABLE PIEUP-OE-SIOS
-0x949C	0xBD5C	# HANGUL SYLLABLE PIEUP-OE-SSANGSIOS
-0x949D	0xBD5D	# HANGUL SYLLABLE PIEUP-OE-IEUNG
-0x949E	0xBD5E	# HANGUL SYLLABLE PIEUP-OE-CIEUC
-0x949F	0xBD5F	# HANGUL SYLLABLE PIEUP-OE-CHIEUCH
-0x94A0	0xBD60	# HANGUL SYLLABLE PIEUP-OE-KHIEUKH
-0x94A1	0xBD61	# HANGUL SYLLABLE PIEUP-OE-THIEUTH
-0x94A2	0xBD62	# HANGUL SYLLABLE PIEUP-OE-PHIEUPH
-0x94A3	0xBD63	# HANGUL SYLLABLE PIEUP-OE-HIEUH
-0x94A4	0xBD65	# HANGUL SYLLABLE PIEUP-YO-KIYEOK
-0x94A5	0xBD66	# HANGUL SYLLABLE PIEUP-YO-SSANGKIYEOK
-0x94A6	0xBD67	# HANGUL SYLLABLE PIEUP-YO-KIYEOKSIOS
-0x94A7	0xBD69	# HANGUL SYLLABLE PIEUP-YO-NIEUNCIEUC
-0x94A8	0xBD6A	# HANGUL SYLLABLE PIEUP-YO-NIEUNHIEUH
-0x94A9	0xBD6B	# HANGUL SYLLABLE PIEUP-YO-TIKEUT
-0x94AA	0xBD6C	# HANGUL SYLLABLE PIEUP-YO-RIEUL
-0x94AB	0xBD6D	# HANGUL SYLLABLE PIEUP-YO-RIEULKIYEOK
-0x94AC	0xBD6E	# HANGUL SYLLABLE PIEUP-YO-RIEULMIEUM
-0x94AD	0xBD6F	# HANGUL SYLLABLE PIEUP-YO-RIEULPIEUP
-0x94AE	0xBD70	# HANGUL SYLLABLE PIEUP-YO-RIEULSIOS
-0x94AF	0xBD71	# HANGUL SYLLABLE PIEUP-YO-RIEULTHIEUTH
-0x94B0	0xBD72	# HANGUL SYLLABLE PIEUP-YO-RIEULPHIEUPH
-0x94B1	0xBD73	# HANGUL SYLLABLE PIEUP-YO-RIEULHIEUH
-0x94B2	0xBD74	# HANGUL SYLLABLE PIEUP-YO-MIEUM
-0x94B3	0xBD75	# HANGUL SYLLABLE PIEUP-YO-PIEUP
-0x94B4	0xBD76	# HANGUL SYLLABLE PIEUP-YO-PIEUPSIOS
-0x94B5	0xBD77	# HANGUL SYLLABLE PIEUP-YO-SIOS
-0x94B6	0xBD78	# HANGUL SYLLABLE PIEUP-YO-SSANGSIOS
-0x94B7	0xBD79	# HANGUL SYLLABLE PIEUP-YO-IEUNG
-0x94B8	0xBD7A	# HANGUL SYLLABLE PIEUP-YO-CIEUC
-0x94B9	0xBD7B	# HANGUL SYLLABLE PIEUP-YO-CHIEUCH
-0x94BA	0xBD7C	# HANGUL SYLLABLE PIEUP-YO-KHIEUKH
-0x94BB	0xBD7D	# HANGUL SYLLABLE PIEUP-YO-THIEUTH
-0x94BC	0xBD7E	# HANGUL SYLLABLE PIEUP-YO-PHIEUPH
-0x94BD	0xBD7F	# HANGUL SYLLABLE PIEUP-YO-HIEUH
-0x94BE	0xBD82	# HANGUL SYLLABLE PIEUP-U-SSANGKIYEOK
-0x94BF	0xBD83	# HANGUL SYLLABLE PIEUP-U-KIYEOKSIOS
-0x94C0	0xBD85	# HANGUL SYLLABLE PIEUP-U-NIEUNCIEUC
-0x94C1	0xBD86	# HANGUL SYLLABLE PIEUP-U-NIEUNHIEUH
-0x94C2	0xBD8B	# HANGUL SYLLABLE PIEUP-U-RIEULPIEUP
-0x94C3	0xBD8C	# HANGUL SYLLABLE PIEUP-U-RIEULSIOS
-0x94C4	0xBD8D	# HANGUL SYLLABLE PIEUP-U-RIEULTHIEUTH
-0x94C5	0xBD8E	# HANGUL SYLLABLE PIEUP-U-RIEULPHIEUPH
-0x94C6	0xBD8F	# HANGUL SYLLABLE PIEUP-U-RIEULHIEUH
-0x94C7	0xBD92	# HANGUL SYLLABLE PIEUP-U-PIEUPSIOS
-0x94C8	0xBD94	# HANGUL SYLLABLE PIEUP-U-SSANGSIOS
-0x94C9	0xBD96	# HANGUL SYLLABLE PIEUP-U-CIEUC
-0x94CA	0xBD97	# HANGUL SYLLABLE PIEUP-U-CHIEUCH
-0x94CB	0xBD98	# HANGUL SYLLABLE PIEUP-U-KHIEUKH
-0x94CC	0xBD9B	# HANGUL SYLLABLE PIEUP-U-HIEUH
-0x94CD	0xBD9D	# HANGUL SYLLABLE PIEUP-WEO-KIYEOK
-0x94CE	0xBD9E	# HANGUL SYLLABLE PIEUP-WEO-SSANGKIYEOK
-0x94CF	0xBD9F	# HANGUL SYLLABLE PIEUP-WEO-KIYEOKSIOS
-0x94D0	0xBDA0	# HANGUL SYLLABLE PIEUP-WEO-NIEUN
-0x94D1	0xBDA1	# HANGUL SYLLABLE PIEUP-WEO-NIEUNCIEUC
-0x94D2	0xBDA2	# HANGUL SYLLABLE PIEUP-WEO-NIEUNHIEUH
-0x94D3	0xBDA3	# HANGUL SYLLABLE PIEUP-WEO-TIKEUT
-0x94D4	0xBDA5	# HANGUL SYLLABLE PIEUP-WEO-RIEULKIYEOK
-0x94D5	0xBDA6	# HANGUL SYLLABLE PIEUP-WEO-RIEULMIEUM
-0x94D6	0xBDA7	# HANGUL SYLLABLE PIEUP-WEO-RIEULPIEUP
-0x94D7	0xBDA8	# HANGUL SYLLABLE PIEUP-WEO-RIEULSIOS
-0x94D8	0xBDA9	# HANGUL SYLLABLE PIEUP-WEO-RIEULTHIEUTH
-0x94D9	0xBDAA	# HANGUL SYLLABLE PIEUP-WEO-RIEULPHIEUPH
-0x94DA	0xBDAB	# HANGUL SYLLABLE PIEUP-WEO-RIEULHIEUH
-0x94DB	0xBDAC	# HANGUL SYLLABLE PIEUP-WEO-MIEUM
-0x94DC	0xBDAD	# HANGUL SYLLABLE PIEUP-WEO-PIEUP
-0x94DD	0xBDAE	# HANGUL SYLLABLE PIEUP-WEO-PIEUPSIOS
-0x94DE	0xBDAF	# HANGUL SYLLABLE PIEUP-WEO-SIOS
-0x94DF	0xBDB1	# HANGUL SYLLABLE PIEUP-WEO-IEUNG
-0x94E0	0xBDB2	# HANGUL SYLLABLE PIEUP-WEO-CIEUC
-0x94E1	0xBDB3	# HANGUL SYLLABLE PIEUP-WEO-CHIEUCH
-0x94E2	0xBDB4	# HANGUL SYLLABLE PIEUP-WEO-KHIEUKH
-0x94E3	0xBDB5	# HANGUL SYLLABLE PIEUP-WEO-THIEUTH
-0x94E4	0xBDB6	# HANGUL SYLLABLE PIEUP-WEO-PHIEUPH
-0x94E5	0xBDB7	# HANGUL SYLLABLE PIEUP-WEO-HIEUH
-0x94E6	0xBDB9	# HANGUL SYLLABLE PIEUP-WE-KIYEOK
-0x94E7	0xBDBA	# HANGUL SYLLABLE PIEUP-WE-SSANGKIYEOK
-0x94E8	0xBDBB	# HANGUL SYLLABLE PIEUP-WE-KIYEOKSIOS
-0x94E9	0xBDBC	# HANGUL SYLLABLE PIEUP-WE-NIEUN
-0x94EA	0xBDBD	# HANGUL SYLLABLE PIEUP-WE-NIEUNCIEUC
-0x94EB	0xBDBE	# HANGUL SYLLABLE PIEUP-WE-NIEUNHIEUH
-0x94EC	0xBDBF	# HANGUL SYLLABLE PIEUP-WE-TIKEUT
-0x94ED	0xBDC0	# HANGUL SYLLABLE PIEUP-WE-RIEUL
-0x94EE	0xBDC1	# HANGUL SYLLABLE PIEUP-WE-RIEULKIYEOK
-0x94EF	0xBDC2	# HANGUL SYLLABLE PIEUP-WE-RIEULMIEUM
-0x94F0	0xBDC3	# HANGUL SYLLABLE PIEUP-WE-RIEULPIEUP
-0x94F1	0xBDC4	# HANGUL SYLLABLE PIEUP-WE-RIEULSIOS
-0x94F2	0xBDC5	# HANGUL SYLLABLE PIEUP-WE-RIEULTHIEUTH
-0x94F3	0xBDC6	# HANGUL SYLLABLE PIEUP-WE-RIEULPHIEUPH
-0x94F4	0xBDC7	# HANGUL SYLLABLE PIEUP-WE-RIEULHIEUH
-0x94F5	0xBDC8	# HANGUL SYLLABLE PIEUP-WE-MIEUM
-0x94F6	0xBDC9	# HANGUL SYLLABLE PIEUP-WE-PIEUP
-0x94F7	0xBDCA	# HANGUL SYLLABLE PIEUP-WE-PIEUPSIOS
-0x94F8	0xBDCB	# HANGUL SYLLABLE PIEUP-WE-SIOS
-0x94F9	0xBDCC	# HANGUL SYLLABLE PIEUP-WE-SSANGSIOS
-0x94FA	0xBDCD	# HANGUL SYLLABLE PIEUP-WE-IEUNG
-0x94FB	0xBDCE	# HANGUL SYLLABLE PIEUP-WE-CIEUC
-0x94FC	0xBDCF	# HANGUL SYLLABLE PIEUP-WE-CHIEUCH
-0x94FD	0xBDD0	# HANGUL SYLLABLE PIEUP-WE-KHIEUKH
-0x94FE	0xBDD1	# HANGUL SYLLABLE PIEUP-WE-THIEUTH
-0x9541	0xBDD2	# HANGUL SYLLABLE PIEUP-WE-PHIEUPH
-0x9542	0xBDD3	# HANGUL SYLLABLE PIEUP-WE-HIEUH
-0x9543	0xBDD6	# HANGUL SYLLABLE PIEUP-WI-SSANGKIYEOK
-0x9544	0xBDD7	# HANGUL SYLLABLE PIEUP-WI-KIYEOKSIOS
-0x9545	0xBDD9	# HANGUL SYLLABLE PIEUP-WI-NIEUNCIEUC
-0x9546	0xBDDA	# HANGUL SYLLABLE PIEUP-WI-NIEUNHIEUH
-0x9547	0xBDDB	# HANGUL SYLLABLE PIEUP-WI-TIKEUT
-0x9548	0xBDDD	# HANGUL SYLLABLE PIEUP-WI-RIEULKIYEOK
-0x9549	0xBDDE	# HANGUL SYLLABLE PIEUP-WI-RIEULMIEUM
-0x954A	0xBDDF	# HANGUL SYLLABLE PIEUP-WI-RIEULPIEUP
-0x954B	0xBDE0	# HANGUL SYLLABLE PIEUP-WI-RIEULSIOS
-0x954C	0xBDE1	# HANGUL SYLLABLE PIEUP-WI-RIEULTHIEUTH
-0x954D	0xBDE2	# HANGUL SYLLABLE PIEUP-WI-RIEULPHIEUPH
-0x954E	0xBDE3	# HANGUL SYLLABLE PIEUP-WI-RIEULHIEUH
-0x954F	0xBDE4	# HANGUL SYLLABLE PIEUP-WI-MIEUM
-0x9550	0xBDE5	# HANGUL SYLLABLE PIEUP-WI-PIEUP
-0x9551	0xBDE6	# HANGUL SYLLABLE PIEUP-WI-PIEUPSIOS
-0x9552	0xBDE7	# HANGUL SYLLABLE PIEUP-WI-SIOS
-0x9553	0xBDE8	# HANGUL SYLLABLE PIEUP-WI-SSANGSIOS
-0x9554	0xBDEA	# HANGUL SYLLABLE PIEUP-WI-CIEUC
-0x9555	0xBDEB	# HANGUL SYLLABLE PIEUP-WI-CHIEUCH
-0x9556	0xBDEC	# HANGUL SYLLABLE PIEUP-WI-KHIEUKH
-0x9557	0xBDED	# HANGUL SYLLABLE PIEUP-WI-THIEUTH
-0x9558	0xBDEE	# HANGUL SYLLABLE PIEUP-WI-PHIEUPH
-0x9559	0xBDEF	# HANGUL SYLLABLE PIEUP-WI-HIEUH
-0x955A	0xBDF1	# HANGUL SYLLABLE PIEUP-YU-KIYEOK
-0x9561	0xBDF2	# HANGUL SYLLABLE PIEUP-YU-SSANGKIYEOK
-0x9562	0xBDF3	# HANGUL SYLLABLE PIEUP-YU-KIYEOKSIOS
-0x9563	0xBDF5	# HANGUL SYLLABLE PIEUP-YU-NIEUNCIEUC
-0x9564	0xBDF6	# HANGUL SYLLABLE PIEUP-YU-NIEUNHIEUH
-0x9565	0xBDF7	# HANGUL SYLLABLE PIEUP-YU-TIKEUT
-0x9566	0xBDF9	# HANGUL SYLLABLE PIEUP-YU-RIEULKIYEOK
-0x9567	0xBDFA	# HANGUL SYLLABLE PIEUP-YU-RIEULMIEUM
-0x9568	0xBDFB	# HANGUL SYLLABLE PIEUP-YU-RIEULPIEUP
-0x9569	0xBDFC	# HANGUL SYLLABLE PIEUP-YU-RIEULSIOS
-0x956A	0xBDFD	# HANGUL SYLLABLE PIEUP-YU-RIEULTHIEUTH
-0x956B	0xBDFE	# HANGUL SYLLABLE PIEUP-YU-RIEULPHIEUPH
-0x956C	0xBDFF	# HANGUL SYLLABLE PIEUP-YU-RIEULHIEUH
-0x956D	0xBE01	# HANGUL SYLLABLE PIEUP-YU-PIEUP
-0x956E	0xBE02	# HANGUL SYLLABLE PIEUP-YU-PIEUPSIOS
-0x956F	0xBE04	# HANGUL SYLLABLE PIEUP-YU-SSANGSIOS
-0x9570	0xBE06	# HANGUL SYLLABLE PIEUP-YU-CIEUC
-0x9571	0xBE07	# HANGUL SYLLABLE PIEUP-YU-CHIEUCH
-0x9572	0xBE08	# HANGUL SYLLABLE PIEUP-YU-KHIEUKH
-0x9573	0xBE09	# HANGUL SYLLABLE PIEUP-YU-THIEUTH
-0x9574	0xBE0A	# HANGUL SYLLABLE PIEUP-YU-PHIEUPH
-0x9575	0xBE0B	# HANGUL SYLLABLE PIEUP-YU-HIEUH
-0x9576	0xBE0E	# HANGUL SYLLABLE PIEUP-EU-SSANGKIYEOK
-0x9577	0xBE0F	# HANGUL SYLLABLE PIEUP-EU-KIYEOKSIOS
-0x9578	0xBE11	# HANGUL SYLLABLE PIEUP-EU-NIEUNCIEUC
-0x9579	0xBE12	# HANGUL SYLLABLE PIEUP-EU-NIEUNHIEUH
-0x957A	0xBE13	# HANGUL SYLLABLE PIEUP-EU-TIKEUT
-0x9581	0xBE15	# HANGUL SYLLABLE PIEUP-EU-RIEULKIYEOK
-0x9582	0xBE16	# HANGUL SYLLABLE PIEUP-EU-RIEULMIEUM
-0x9583	0xBE17	# HANGUL SYLLABLE PIEUP-EU-RIEULPIEUP
-0x9584	0xBE18	# HANGUL SYLLABLE PIEUP-EU-RIEULSIOS
-0x9585	0xBE19	# HANGUL SYLLABLE PIEUP-EU-RIEULTHIEUTH
-0x9586	0xBE1A	# HANGUL SYLLABLE PIEUP-EU-RIEULPHIEUPH
-0x9587	0xBE1B	# HANGUL SYLLABLE PIEUP-EU-RIEULHIEUH
-0x9588	0xBE1E	# HANGUL SYLLABLE PIEUP-EU-PIEUPSIOS
-0x9589	0xBE20	# HANGUL SYLLABLE PIEUP-EU-SSANGSIOS
-0x958A	0xBE21	# HANGUL SYLLABLE PIEUP-EU-IEUNG
-0x958B	0xBE22	# HANGUL SYLLABLE PIEUP-EU-CIEUC
-0x958C	0xBE23	# HANGUL SYLLABLE PIEUP-EU-CHIEUCH
-0x958D	0xBE24	# HANGUL SYLLABLE PIEUP-EU-KHIEUKH
-0x958E	0xBE25	# HANGUL SYLLABLE PIEUP-EU-THIEUTH
-0x958F	0xBE26	# HANGUL SYLLABLE PIEUP-EU-PHIEUPH
-0x9590	0xBE27	# HANGUL SYLLABLE PIEUP-EU-HIEUH
-0x9591	0xBE28	# HANGUL SYLLABLE PIEUP-YI
-0x9592	0xBE29	# HANGUL SYLLABLE PIEUP-YI-KIYEOK
-0x9593	0xBE2A	# HANGUL SYLLABLE PIEUP-YI-SSANGKIYEOK
-0x9594	0xBE2B	# HANGUL SYLLABLE PIEUP-YI-KIYEOKSIOS
-0x9595	0xBE2C	# HANGUL SYLLABLE PIEUP-YI-NIEUN
-0x9596	0xBE2D	# HANGUL SYLLABLE PIEUP-YI-NIEUNCIEUC
-0x9597	0xBE2E	# HANGUL SYLLABLE PIEUP-YI-NIEUNHIEUH
-0x9598	0xBE2F	# HANGUL SYLLABLE PIEUP-YI-TIKEUT
-0x9599	0xBE30	# HANGUL SYLLABLE PIEUP-YI-RIEUL
-0x959A	0xBE31	# HANGUL SYLLABLE PIEUP-YI-RIEULKIYEOK
-0x959B	0xBE32	# HANGUL SYLLABLE PIEUP-YI-RIEULMIEUM
-0x959C	0xBE33	# HANGUL SYLLABLE PIEUP-YI-RIEULPIEUP
-0x959D	0xBE34	# HANGUL SYLLABLE PIEUP-YI-RIEULSIOS
-0x959E	0xBE35	# HANGUL SYLLABLE PIEUP-YI-RIEULTHIEUTH
-0x959F	0xBE36	# HANGUL SYLLABLE PIEUP-YI-RIEULPHIEUPH
-0x95A0	0xBE37	# HANGUL SYLLABLE PIEUP-YI-RIEULHIEUH
-0x95A1	0xBE38	# HANGUL SYLLABLE PIEUP-YI-MIEUM
-0x95A2	0xBE39	# HANGUL SYLLABLE PIEUP-YI-PIEUP
-0x95A3	0xBE3A	# HANGUL SYLLABLE PIEUP-YI-PIEUPSIOS
-0x95A4	0xBE3B	# HANGUL SYLLABLE PIEUP-YI-SIOS
-0x95A5	0xBE3C	# HANGUL SYLLABLE PIEUP-YI-SSANGSIOS
-0x95A6	0xBE3D	# HANGUL SYLLABLE PIEUP-YI-IEUNG
-0x95A7	0xBE3E	# HANGUL SYLLABLE PIEUP-YI-CIEUC
-0x95A8	0xBE3F	# HANGUL SYLLABLE PIEUP-YI-CHIEUCH
-0x95A9	0xBE40	# HANGUL SYLLABLE PIEUP-YI-KHIEUKH
-0x95AA	0xBE41	# HANGUL SYLLABLE PIEUP-YI-THIEUTH
-0x95AB	0xBE42	# HANGUL SYLLABLE PIEUP-YI-PHIEUPH
-0x95AC	0xBE43	# HANGUL SYLLABLE PIEUP-YI-HIEUH
-0x95AD	0xBE46	# HANGUL SYLLABLE PIEUP-I-SSANGKIYEOK
-0x95AE	0xBE47	# HANGUL SYLLABLE PIEUP-I-KIYEOKSIOS
-0x95AF	0xBE49	# HANGUL SYLLABLE PIEUP-I-NIEUNCIEUC
-0x95B0	0xBE4A	# HANGUL SYLLABLE PIEUP-I-NIEUNHIEUH
-0x95B1	0xBE4B	# HANGUL SYLLABLE PIEUP-I-TIKEUT
-0x95B2	0xBE4D	# HANGUL SYLLABLE PIEUP-I-RIEULKIYEOK
-0x95B3	0xBE4F	# HANGUL SYLLABLE PIEUP-I-RIEULPIEUP
-0x95B4	0xBE50	# HANGUL SYLLABLE PIEUP-I-RIEULSIOS
-0x95B5	0xBE51	# HANGUL SYLLABLE PIEUP-I-RIEULTHIEUTH
-0x95B6	0xBE52	# HANGUL SYLLABLE PIEUP-I-RIEULPHIEUPH
-0x95B7	0xBE53	# HANGUL SYLLABLE PIEUP-I-RIEULHIEUH
-0x95B8	0xBE56	# HANGUL SYLLABLE PIEUP-I-PIEUPSIOS
-0x95B9	0xBE58	# HANGUL SYLLABLE PIEUP-I-SSANGSIOS
-0x95BA	0xBE5C	# HANGUL SYLLABLE PIEUP-I-KHIEUKH
-0x95BB	0xBE5D	# HANGUL SYLLABLE PIEUP-I-THIEUTH
-0x95BC	0xBE5E	# HANGUL SYLLABLE PIEUP-I-PHIEUPH
-0x95BD	0xBE5F	# HANGUL SYLLABLE PIEUP-I-HIEUH
-0x95BE	0xBE62	# HANGUL SYLLABLE SSANGPIEUP-A-SSANGKIYEOK
-0x95BF	0xBE63	# HANGUL SYLLABLE SSANGPIEUP-A-KIYEOKSIOS
-0x95C0	0xBE65	# HANGUL SYLLABLE SSANGPIEUP-A-NIEUNCIEUC
-0x95C1	0xBE66	# HANGUL SYLLABLE SSANGPIEUP-A-NIEUNHIEUH
-0x95C2	0xBE67	# HANGUL SYLLABLE SSANGPIEUP-A-TIKEUT
-0x95C3	0xBE69	# HANGUL SYLLABLE SSANGPIEUP-A-RIEULKIYEOK
-0x95C4	0xBE6B	# HANGUL SYLLABLE SSANGPIEUP-A-RIEULPIEUP
-0x95C5	0xBE6C	# HANGUL SYLLABLE SSANGPIEUP-A-RIEULSIOS
-0x95C6	0xBE6D	# HANGUL SYLLABLE SSANGPIEUP-A-RIEULTHIEUTH
-0x95C7	0xBE6E	# HANGUL SYLLABLE SSANGPIEUP-A-RIEULPHIEUPH
-0x95C8	0xBE6F	# HANGUL SYLLABLE SSANGPIEUP-A-RIEULHIEUH
-0x95C9	0xBE72	# HANGUL SYLLABLE SSANGPIEUP-A-PIEUPSIOS
-0x95CA	0xBE76	# HANGUL SYLLABLE SSANGPIEUP-A-CIEUC
-0x95CB	0xBE77	# HANGUL SYLLABLE SSANGPIEUP-A-CHIEUCH
-0x95CC	0xBE78	# HANGUL SYLLABLE SSANGPIEUP-A-KHIEUKH
-0x95CD	0xBE79	# HANGUL SYLLABLE SSANGPIEUP-A-THIEUTH
-0x95CE	0xBE7A	# HANGUL SYLLABLE SSANGPIEUP-A-PHIEUPH
-0x95CF	0xBE7E	# HANGUL SYLLABLE SSANGPIEUP-AE-SSANGKIYEOK
-0x95D0	0xBE7F	# HANGUL SYLLABLE SSANGPIEUP-AE-KIYEOKSIOS
-0x95D1	0xBE81	# HANGUL SYLLABLE SSANGPIEUP-AE-NIEUNCIEUC
-0x95D2	0xBE82	# HANGUL SYLLABLE SSANGPIEUP-AE-NIEUNHIEUH
-0x95D3	0xBE83	# HANGUL SYLLABLE SSANGPIEUP-AE-TIKEUT
-0x95D4	0xBE85	# HANGUL SYLLABLE SSANGPIEUP-AE-RIEULKIYEOK
-0x95D5	0xBE86	# HANGUL SYLLABLE SSANGPIEUP-AE-RIEULMIEUM
-0x95D6	0xBE87	# HANGUL SYLLABLE SSANGPIEUP-AE-RIEULPIEUP
-0x95D7	0xBE88	# HANGUL SYLLABLE SSANGPIEUP-AE-RIEULSIOS
-0x95D8	0xBE89	# HANGUL SYLLABLE SSANGPIEUP-AE-RIEULTHIEUTH
-0x95D9	0xBE8A	# HANGUL SYLLABLE SSANGPIEUP-AE-RIEULPHIEUPH
-0x95DA	0xBE8B	# HANGUL SYLLABLE SSANGPIEUP-AE-RIEULHIEUH
-0x95DB	0xBE8E	# HANGUL SYLLABLE SSANGPIEUP-AE-PIEUPSIOS
-0x95DC	0xBE92	# HANGUL SYLLABLE SSANGPIEUP-AE-CIEUC
-0x95DD	0xBE93	# HANGUL SYLLABLE SSANGPIEUP-AE-CHIEUCH
-0x95DE	0xBE94	# HANGUL SYLLABLE SSANGPIEUP-AE-KHIEUKH
-0x95DF	0xBE95	# HANGUL SYLLABLE SSANGPIEUP-AE-THIEUTH
-0x95E0	0xBE96	# HANGUL SYLLABLE SSANGPIEUP-AE-PHIEUPH
-0x95E1	0xBE97	# HANGUL SYLLABLE SSANGPIEUP-AE-HIEUH
-0x95E2	0xBE9A	# HANGUL SYLLABLE SSANGPIEUP-YA-SSANGKIYEOK
-0x95E3	0xBE9B	# HANGUL SYLLABLE SSANGPIEUP-YA-KIYEOKSIOS
-0x95E4	0xBE9C	# HANGUL SYLLABLE SSANGPIEUP-YA-NIEUN
-0x95E5	0xBE9D	# HANGUL SYLLABLE SSANGPIEUP-YA-NIEUNCIEUC
-0x95E6	0xBE9E	# HANGUL SYLLABLE SSANGPIEUP-YA-NIEUNHIEUH
-0x95E7	0xBE9F	# HANGUL SYLLABLE SSANGPIEUP-YA-TIKEUT
-0x95E8	0xBEA0	# HANGUL SYLLABLE SSANGPIEUP-YA-RIEUL
-0x95E9	0xBEA1	# HANGUL SYLLABLE SSANGPIEUP-YA-RIEULKIYEOK
-0x95EA	0xBEA2	# HANGUL SYLLABLE SSANGPIEUP-YA-RIEULMIEUM
-0x95EB	0xBEA3	# HANGUL SYLLABLE SSANGPIEUP-YA-RIEULPIEUP
-0x95EC	0xBEA4	# HANGUL SYLLABLE SSANGPIEUP-YA-RIEULSIOS
-0x95ED	0xBEA5	# HANGUL SYLLABLE SSANGPIEUP-YA-RIEULTHIEUTH
-0x95EE	0xBEA6	# HANGUL SYLLABLE SSANGPIEUP-YA-RIEULPHIEUPH
-0x95EF	0xBEA7	# HANGUL SYLLABLE SSANGPIEUP-YA-RIEULHIEUH
-0x95F0	0xBEA9	# HANGUL SYLLABLE SSANGPIEUP-YA-PIEUP
-0x95F1	0xBEAA	# HANGUL SYLLABLE SSANGPIEUP-YA-PIEUPSIOS
-0x95F2	0xBEAB	# HANGUL SYLLABLE SSANGPIEUP-YA-SIOS
-0x95F3	0xBEAC	# HANGUL SYLLABLE SSANGPIEUP-YA-SSANGSIOS
-0x95F4	0xBEAD	# HANGUL SYLLABLE SSANGPIEUP-YA-IEUNG
-0x95F5	0xBEAE	# HANGUL SYLLABLE SSANGPIEUP-YA-CIEUC
-0x95F6	0xBEAF	# HANGUL SYLLABLE SSANGPIEUP-YA-CHIEUCH
-0x95F7	0xBEB0	# HANGUL SYLLABLE SSANGPIEUP-YA-KHIEUKH
-0x95F8	0xBEB1	# HANGUL SYLLABLE SSANGPIEUP-YA-THIEUTH
-0x95F9	0xBEB2	# HANGUL SYLLABLE SSANGPIEUP-YA-PHIEUPH
-0x95FA	0xBEB3	# HANGUL SYLLABLE SSANGPIEUP-YA-HIEUH
-0x95FB	0xBEB4	# HANGUL SYLLABLE SSANGPIEUP-YAE
-0x95FC	0xBEB5	# HANGUL SYLLABLE SSANGPIEUP-YAE-KIYEOK
-0x95FD	0xBEB6	# HANGUL SYLLABLE SSANGPIEUP-YAE-SSANGKIYEOK
-0x95FE	0xBEB7	# HANGUL SYLLABLE SSANGPIEUP-YAE-KIYEOKSIOS
-0x9641	0xBEB8	# HANGUL SYLLABLE SSANGPIEUP-YAE-NIEUN
-0x9642	0xBEB9	# HANGUL SYLLABLE SSANGPIEUP-YAE-NIEUNCIEUC
-0x9643	0xBEBA	# HANGUL SYLLABLE SSANGPIEUP-YAE-NIEUNHIEUH
-0x9644	0xBEBB	# HANGUL SYLLABLE SSANGPIEUP-YAE-TIKEUT
-0x9645	0xBEBC	# HANGUL SYLLABLE SSANGPIEUP-YAE-RIEUL
-0x9646	0xBEBD	# HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULKIYEOK
-0x9647	0xBEBE	# HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULMIEUM
-0x9648	0xBEBF	# HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULPIEUP
-0x9649	0xBEC0	# HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULSIOS
-0x964A	0xBEC1	# HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULTHIEUTH
-0x964B	0xBEC2	# HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULPHIEUPH
-0x964C	0xBEC3	# HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULHIEUH
-0x964D	0xBEC4	# HANGUL SYLLABLE SSANGPIEUP-YAE-MIEUM
-0x964E	0xBEC5	# HANGUL SYLLABLE SSANGPIEUP-YAE-PIEUP
-0x964F	0xBEC6	# HANGUL SYLLABLE SSANGPIEUP-YAE-PIEUPSIOS
-0x9650	0xBEC7	# HANGUL SYLLABLE SSANGPIEUP-YAE-SIOS
-0x9651	0xBEC8	# HANGUL SYLLABLE SSANGPIEUP-YAE-SSANGSIOS
-0x9652	0xBEC9	# HANGUL SYLLABLE SSANGPIEUP-YAE-IEUNG
-0x9653	0xBECA	# HANGUL SYLLABLE SSANGPIEUP-YAE-CIEUC
-0x9654	0xBECB	# HANGUL SYLLABLE SSANGPIEUP-YAE-CHIEUCH
-0x9655	0xBECC	# HANGUL SYLLABLE SSANGPIEUP-YAE-KHIEUKH
-0x9656	0xBECD	# HANGUL SYLLABLE SSANGPIEUP-YAE-THIEUTH
-0x9657	0xBECE	# HANGUL SYLLABLE SSANGPIEUP-YAE-PHIEUPH
-0x9658	0xBECF	# HANGUL SYLLABLE SSANGPIEUP-YAE-HIEUH
-0x9659	0xBED2	# HANGUL SYLLABLE SSANGPIEUP-EO-SSANGKIYEOK
-0x965A	0xBED3	# HANGUL SYLLABLE SSANGPIEUP-EO-KIYEOKSIOS
-0x9661	0xBED5	# HANGUL SYLLABLE SSANGPIEUP-EO-NIEUNCIEUC
-0x9662	0xBED6	# HANGUL SYLLABLE SSANGPIEUP-EO-NIEUNHIEUH
-0x9663	0xBED9	# HANGUL SYLLABLE SSANGPIEUP-EO-RIEULKIYEOK
-0x9664	0xBEDA	# HANGUL SYLLABLE SSANGPIEUP-EO-RIEULMIEUM
-0x9665	0xBEDB	# HANGUL SYLLABLE SSANGPIEUP-EO-RIEULPIEUP
-0x9666	0xBEDC	# HANGUL SYLLABLE SSANGPIEUP-EO-RIEULSIOS
-0x9667	0xBEDD	# HANGUL SYLLABLE SSANGPIEUP-EO-RIEULTHIEUTH
-0x9668	0xBEDE	# HANGUL SYLLABLE SSANGPIEUP-EO-RIEULPHIEUPH
-0x9669	0xBEDF	# HANGUL SYLLABLE SSANGPIEUP-EO-RIEULHIEUH
-0x966A	0xBEE1	# HANGUL SYLLABLE SSANGPIEUP-EO-PIEUP
-0x966B	0xBEE2	# HANGUL SYLLABLE SSANGPIEUP-EO-PIEUPSIOS
-0x966C	0xBEE6	# HANGUL SYLLABLE SSANGPIEUP-EO-CIEUC
-0x966D	0xBEE7	# HANGUL SYLLABLE SSANGPIEUP-EO-CHIEUCH
-0x966E	0xBEE8	# HANGUL SYLLABLE SSANGPIEUP-EO-KHIEUKH
-0x966F	0xBEE9	# HANGUL SYLLABLE SSANGPIEUP-EO-THIEUTH
-0x9670	0xBEEA	# HANGUL SYLLABLE SSANGPIEUP-EO-PHIEUPH
-0x9671	0xBEEB	# HANGUL SYLLABLE SSANGPIEUP-EO-HIEUH
-0x9672	0xBEED	# HANGUL SYLLABLE SSANGPIEUP-E-KIYEOK
-0x9673	0xBEEE	# HANGUL SYLLABLE SSANGPIEUP-E-SSANGKIYEOK
-0x9674	0xBEEF	# HANGUL SYLLABLE SSANGPIEUP-E-KIYEOKSIOS
-0x9675	0xBEF0	# HANGUL SYLLABLE SSANGPIEUP-E-NIEUN
-0x9676	0xBEF1	# HANGUL SYLLABLE SSANGPIEUP-E-NIEUNCIEUC
-0x9677	0xBEF2	# HANGUL SYLLABLE SSANGPIEUP-E-NIEUNHIEUH
-0x9678	0xBEF3	# HANGUL SYLLABLE SSANGPIEUP-E-TIKEUT
-0x9679	0xBEF4	# HANGUL SYLLABLE SSANGPIEUP-E-RIEUL
-0x967A	0xBEF5	# HANGUL SYLLABLE SSANGPIEUP-E-RIEULKIYEOK
-0x9681	0xBEF6	# HANGUL SYLLABLE SSANGPIEUP-E-RIEULMIEUM
-0x9682	0xBEF7	# HANGUL SYLLABLE SSANGPIEUP-E-RIEULPIEUP
-0x9683	0xBEF8	# HANGUL SYLLABLE SSANGPIEUP-E-RIEULSIOS
-0x9684	0xBEF9	# HANGUL SYLLABLE SSANGPIEUP-E-RIEULTHIEUTH
-0x9685	0xBEFA	# HANGUL SYLLABLE SSANGPIEUP-E-RIEULPHIEUPH
-0x9686	0xBEFB	# HANGUL SYLLABLE SSANGPIEUP-E-RIEULHIEUH
-0x9687	0xBEFC	# HANGUL SYLLABLE SSANGPIEUP-E-MIEUM
-0x9688	0xBEFD	# HANGUL SYLLABLE SSANGPIEUP-E-PIEUP
-0x9689	0xBEFE	# HANGUL SYLLABLE SSANGPIEUP-E-PIEUPSIOS
-0x968A	0xBEFF	# HANGUL SYLLABLE SSANGPIEUP-E-SIOS
-0x968B	0xBF00	# HANGUL SYLLABLE SSANGPIEUP-E-SSANGSIOS
-0x968C	0xBF02	# HANGUL SYLLABLE SSANGPIEUP-E-CIEUC
-0x968D	0xBF03	# HANGUL SYLLABLE SSANGPIEUP-E-CHIEUCH
-0x968E	0xBF04	# HANGUL SYLLABLE SSANGPIEUP-E-KHIEUKH
-0x968F	0xBF05	# HANGUL SYLLABLE SSANGPIEUP-E-THIEUTH
-0x9690	0xBF06	# HANGUL SYLLABLE SSANGPIEUP-E-PHIEUPH
-0x9691	0xBF07	# HANGUL SYLLABLE SSANGPIEUP-E-HIEUH
-0x9692	0xBF0A	# HANGUL SYLLABLE SSANGPIEUP-YEO-SSANGKIYEOK
-0x9693	0xBF0B	# HANGUL SYLLABLE SSANGPIEUP-YEO-KIYEOKSIOS
-0x9694	0xBF0C	# HANGUL SYLLABLE SSANGPIEUP-YEO-NIEUN
-0x9695	0xBF0D	# HANGUL SYLLABLE SSANGPIEUP-YEO-NIEUNCIEUC
-0x9696	0xBF0E	# HANGUL SYLLABLE SSANGPIEUP-YEO-NIEUNHIEUH
-0x9697	0xBF0F	# HANGUL SYLLABLE SSANGPIEUP-YEO-TIKEUT
-0x9698	0xBF10	# HANGUL SYLLABLE SSANGPIEUP-YEO-RIEUL
-0x9699	0xBF11	# HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULKIYEOK
-0x969A	0xBF12	# HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULMIEUM
-0x969B	0xBF13	# HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULPIEUP
-0x969C	0xBF14	# HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULSIOS
-0x969D	0xBF15	# HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULTHIEUTH
-0x969E	0xBF16	# HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULPHIEUPH
-0x969F	0xBF17	# HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULHIEUH
-0x96A0	0xBF1A	# HANGUL SYLLABLE SSANGPIEUP-YEO-PIEUPSIOS
-0x96A1	0xBF1E	# HANGUL SYLLABLE SSANGPIEUP-YEO-CIEUC
-0x96A2	0xBF1F	# HANGUL SYLLABLE SSANGPIEUP-YEO-CHIEUCH
-0x96A3	0xBF20	# HANGUL SYLLABLE SSANGPIEUP-YEO-KHIEUKH
-0x96A4	0xBF21	# HANGUL SYLLABLE SSANGPIEUP-YEO-THIEUTH
-0x96A5	0xBF22	# HANGUL SYLLABLE SSANGPIEUP-YEO-PHIEUPH
-0x96A6	0xBF23	# HANGUL SYLLABLE SSANGPIEUP-YEO-HIEUH
-0x96A7	0xBF24	# HANGUL SYLLABLE SSANGPIEUP-YE
-0x96A8	0xBF25	# HANGUL SYLLABLE SSANGPIEUP-YE-KIYEOK
-0x96A9	0xBF26	# HANGUL SYLLABLE SSANGPIEUP-YE-SSANGKIYEOK
-0x96AA	0xBF27	# HANGUL SYLLABLE SSANGPIEUP-YE-KIYEOKSIOS
-0x96AB	0xBF28	# HANGUL SYLLABLE SSANGPIEUP-YE-NIEUN
-0x96AC	0xBF29	# HANGUL SYLLABLE SSANGPIEUP-YE-NIEUNCIEUC
-0x96AD	0xBF2A	# HANGUL SYLLABLE SSANGPIEUP-YE-NIEUNHIEUH
-0x96AE	0xBF2B	# HANGUL SYLLABLE SSANGPIEUP-YE-TIKEUT
-0x96AF	0xBF2C	# HANGUL SYLLABLE SSANGPIEUP-YE-RIEUL
-0x96B0	0xBF2D	# HANGUL SYLLABLE SSANGPIEUP-YE-RIEULKIYEOK
-0x96B1	0xBF2E	# HANGUL SYLLABLE SSANGPIEUP-YE-RIEULMIEUM
-0x96B2	0xBF2F	# HANGUL SYLLABLE SSANGPIEUP-YE-RIEULPIEUP
-0x96B3	0xBF30	# HANGUL SYLLABLE SSANGPIEUP-YE-RIEULSIOS
-0x96B4	0xBF31	# HANGUL SYLLABLE SSANGPIEUP-YE-RIEULTHIEUTH
-0x96B5	0xBF32	# HANGUL SYLLABLE SSANGPIEUP-YE-RIEULPHIEUPH
-0x96B6	0xBF33	# HANGUL SYLLABLE SSANGPIEUP-YE-RIEULHIEUH
-0x96B7	0xBF34	# HANGUL SYLLABLE SSANGPIEUP-YE-MIEUM
-0x96B8	0xBF35	# HANGUL SYLLABLE SSANGPIEUP-YE-PIEUP
-0x96B9	0xBF36	# HANGUL SYLLABLE SSANGPIEUP-YE-PIEUPSIOS
-0x96BA	0xBF37	# HANGUL SYLLABLE SSANGPIEUP-YE-SIOS
-0x96BB	0xBF38	# HANGUL SYLLABLE SSANGPIEUP-YE-SSANGSIOS
-0x96BC	0xBF39	# HANGUL SYLLABLE SSANGPIEUP-YE-IEUNG
-0x96BD	0xBF3A	# HANGUL SYLLABLE SSANGPIEUP-YE-CIEUC
-0x96BE	0xBF3B	# HANGUL SYLLABLE SSANGPIEUP-YE-CHIEUCH
-0x96BF	0xBF3C	# HANGUL SYLLABLE SSANGPIEUP-YE-KHIEUKH
-0x96C0	0xBF3D	# HANGUL SYLLABLE SSANGPIEUP-YE-THIEUTH
-0x96C1	0xBF3E	# HANGUL SYLLABLE SSANGPIEUP-YE-PHIEUPH
-0x96C2	0xBF3F	# HANGUL SYLLABLE SSANGPIEUP-YE-HIEUH
-0x96C3	0xBF42	# HANGUL SYLLABLE SSANGPIEUP-O-SSANGKIYEOK
-0x96C4	0xBF43	# HANGUL SYLLABLE SSANGPIEUP-O-KIYEOKSIOS
-0x96C5	0xBF45	# HANGUL SYLLABLE SSANGPIEUP-O-NIEUNCIEUC
-0x96C6	0xBF46	# HANGUL SYLLABLE SSANGPIEUP-O-NIEUNHIEUH
-0x96C7	0xBF47	# HANGUL SYLLABLE SSANGPIEUP-O-TIKEUT
-0x96C8	0xBF49	# HANGUL SYLLABLE SSANGPIEUP-O-RIEULKIYEOK
-0x96C9	0xBF4A	# HANGUL SYLLABLE SSANGPIEUP-O-RIEULMIEUM
-0x96CA	0xBF4B	# HANGUL SYLLABLE SSANGPIEUP-O-RIEULPIEUP
-0x96CB	0xBF4C	# HANGUL SYLLABLE SSANGPIEUP-O-RIEULSIOS
-0x96CC	0xBF4D	# HANGUL SYLLABLE SSANGPIEUP-O-RIEULTHIEUTH
-0x96CD	0xBF4E	# HANGUL SYLLABLE SSANGPIEUP-O-RIEULPHIEUPH
-0x96CE	0xBF4F	# HANGUL SYLLABLE SSANGPIEUP-O-RIEULHIEUH
-0x96CF	0xBF52	# HANGUL SYLLABLE SSANGPIEUP-O-PIEUPSIOS
-0x96D0	0xBF53	# HANGUL SYLLABLE SSANGPIEUP-O-SIOS
-0x96D1	0xBF54	# HANGUL SYLLABLE SSANGPIEUP-O-SSANGSIOS
-0x96D2	0xBF56	# HANGUL SYLLABLE SSANGPIEUP-O-CIEUC
-0x96D3	0xBF57	# HANGUL SYLLABLE SSANGPIEUP-O-CHIEUCH
-0x96D4	0xBF58	# HANGUL SYLLABLE SSANGPIEUP-O-KHIEUKH
-0x96D5	0xBF59	# HANGUL SYLLABLE SSANGPIEUP-O-THIEUTH
-0x96D6	0xBF5A	# HANGUL SYLLABLE SSANGPIEUP-O-PHIEUPH
-0x96D7	0xBF5B	# HANGUL SYLLABLE SSANGPIEUP-O-HIEUH
-0x96D8	0xBF5C	# HANGUL SYLLABLE SSANGPIEUP-WA
-0x96D9	0xBF5D	# HANGUL SYLLABLE SSANGPIEUP-WA-KIYEOK
-0x96DA	0xBF5E	# HANGUL SYLLABLE SSANGPIEUP-WA-SSANGKIYEOK
-0x96DB	0xBF5F	# HANGUL SYLLABLE SSANGPIEUP-WA-KIYEOKSIOS
-0x96DC	0xBF60	# HANGUL SYLLABLE SSANGPIEUP-WA-NIEUN
-0x96DD	0xBF61	# HANGUL SYLLABLE SSANGPIEUP-WA-NIEUNCIEUC
-0x96DE	0xBF62	# HANGUL SYLLABLE SSANGPIEUP-WA-NIEUNHIEUH
-0x96DF	0xBF63	# HANGUL SYLLABLE SSANGPIEUP-WA-TIKEUT
-0x96E0	0xBF64	# HANGUL SYLLABLE SSANGPIEUP-WA-RIEUL
-0x96E1	0xBF65	# HANGUL SYLLABLE SSANGPIEUP-WA-RIEULKIYEOK
-0x96E2	0xBF66	# HANGUL SYLLABLE SSANGPIEUP-WA-RIEULMIEUM
-0x96E3	0xBF67	# HANGUL SYLLABLE SSANGPIEUP-WA-RIEULPIEUP
-0x96E4	0xBF68	# HANGUL SYLLABLE SSANGPIEUP-WA-RIEULSIOS
-0x96E5	0xBF69	# HANGUL SYLLABLE SSANGPIEUP-WA-RIEULTHIEUTH
-0x96E6	0xBF6A	# HANGUL SYLLABLE SSANGPIEUP-WA-RIEULPHIEUPH
-0x96E7	0xBF6B	# HANGUL SYLLABLE SSANGPIEUP-WA-RIEULHIEUH
-0x96E8	0xBF6C	# HANGUL SYLLABLE SSANGPIEUP-WA-MIEUM
-0x96E9	0xBF6D	# HANGUL SYLLABLE SSANGPIEUP-WA-PIEUP
-0x96EA	0xBF6E	# HANGUL SYLLABLE SSANGPIEUP-WA-PIEUPSIOS
-0x96EB	0xBF6F	# HANGUL SYLLABLE SSANGPIEUP-WA-SIOS
-0x96EC	0xBF70	# HANGUL SYLLABLE SSANGPIEUP-WA-SSANGSIOS
-0x96ED	0xBF71	# HANGUL SYLLABLE SSANGPIEUP-WA-IEUNG
-0x96EE	0xBF72	# HANGUL SYLLABLE SSANGPIEUP-WA-CIEUC
-0x96EF	0xBF73	# HANGUL SYLLABLE SSANGPIEUP-WA-CHIEUCH
-0x96F0	0xBF74	# HANGUL SYLLABLE SSANGPIEUP-WA-KHIEUKH
-0x96F1	0xBF75	# HANGUL SYLLABLE SSANGPIEUP-WA-THIEUTH
-0x96F2	0xBF76	# HANGUL SYLLABLE SSANGPIEUP-WA-PHIEUPH
-0x96F3	0xBF77	# HANGUL SYLLABLE SSANGPIEUP-WA-HIEUH
-0x96F4	0xBF78	# HANGUL SYLLABLE SSANGPIEUP-WAE
-0x96F5	0xBF79	# HANGUL SYLLABLE SSANGPIEUP-WAE-KIYEOK
-0x96F6	0xBF7A	# HANGUL SYLLABLE SSANGPIEUP-WAE-SSANGKIYEOK
-0x96F7	0xBF7B	# HANGUL SYLLABLE SSANGPIEUP-WAE-KIYEOKSIOS
-0x96F8	0xBF7C	# HANGUL SYLLABLE SSANGPIEUP-WAE-NIEUN
-0x96F9	0xBF7D	# HANGUL SYLLABLE SSANGPIEUP-WAE-NIEUNCIEUC
-0x96FA	0xBF7E	# HANGUL SYLLABLE SSANGPIEUP-WAE-NIEUNHIEUH
-0x96FB	0xBF7F	# HANGUL SYLLABLE SSANGPIEUP-WAE-TIKEUT
-0x96FC	0xBF80	# HANGUL SYLLABLE SSANGPIEUP-WAE-RIEUL
-0x96FD	0xBF81	# HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULKIYEOK
-0x96FE	0xBF82	# HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULMIEUM
-0x9741	0xBF83	# HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULPIEUP
-0x9742	0xBF84	# HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULSIOS
-0x9743	0xBF85	# HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULTHIEUTH
-0x9744	0xBF86	# HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULPHIEUPH
-0x9745	0xBF87	# HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULHIEUH
-0x9746	0xBF88	# HANGUL SYLLABLE SSANGPIEUP-WAE-MIEUM
-0x9747	0xBF89	# HANGUL SYLLABLE SSANGPIEUP-WAE-PIEUP
-0x9748	0xBF8A	# HANGUL SYLLABLE SSANGPIEUP-WAE-PIEUPSIOS
-0x9749	0xBF8B	# HANGUL SYLLABLE SSANGPIEUP-WAE-SIOS
-0x974A	0xBF8C	# HANGUL SYLLABLE SSANGPIEUP-WAE-SSANGSIOS
-0x974B	0xBF8D	# HANGUL SYLLABLE SSANGPIEUP-WAE-IEUNG
-0x974C	0xBF8E	# HANGUL SYLLABLE SSANGPIEUP-WAE-CIEUC
-0x974D	0xBF8F	# HANGUL SYLLABLE SSANGPIEUP-WAE-CHIEUCH
-0x974E	0xBF90	# HANGUL SYLLABLE SSANGPIEUP-WAE-KHIEUKH
-0x974F	0xBF91	# HANGUL SYLLABLE SSANGPIEUP-WAE-THIEUTH
-0x9750	0xBF92	# HANGUL SYLLABLE SSANGPIEUP-WAE-PHIEUPH
-0x9751	0xBF93	# HANGUL SYLLABLE SSANGPIEUP-WAE-HIEUH
-0x9752	0xBF95	# HANGUL SYLLABLE SSANGPIEUP-OE-KIYEOK
-0x9753	0xBF96	# HANGUL SYLLABLE SSANGPIEUP-OE-SSANGKIYEOK
-0x9754	0xBF97	# HANGUL SYLLABLE SSANGPIEUP-OE-KIYEOKSIOS
-0x9755	0xBF98	# HANGUL SYLLABLE SSANGPIEUP-OE-NIEUN
-0x9756	0xBF99	# HANGUL SYLLABLE SSANGPIEUP-OE-NIEUNCIEUC
-0x9757	0xBF9A	# HANGUL SYLLABLE SSANGPIEUP-OE-NIEUNHIEUH
-0x9758	0xBF9B	# HANGUL SYLLABLE SSANGPIEUP-OE-TIKEUT
-0x9759	0xBF9C	# HANGUL SYLLABLE SSANGPIEUP-OE-RIEUL
-0x975A	0xBF9D	# HANGUL SYLLABLE SSANGPIEUP-OE-RIEULKIYEOK
-0x9761	0xBF9E	# HANGUL SYLLABLE SSANGPIEUP-OE-RIEULMIEUM
-0x9762	0xBF9F	# HANGUL SYLLABLE SSANGPIEUP-OE-RIEULPIEUP
-0x9763	0xBFA0	# HANGUL SYLLABLE SSANGPIEUP-OE-RIEULSIOS
-0x9764	0xBFA1	# HANGUL SYLLABLE SSANGPIEUP-OE-RIEULTHIEUTH
-0x9765	0xBFA2	# HANGUL SYLLABLE SSANGPIEUP-OE-RIEULPHIEUPH
-0x9766	0xBFA3	# HANGUL SYLLABLE SSANGPIEUP-OE-RIEULHIEUH
-0x9767	0xBFA4	# HANGUL SYLLABLE SSANGPIEUP-OE-MIEUM
-0x9768	0xBFA5	# HANGUL SYLLABLE SSANGPIEUP-OE-PIEUP
-0x9769	0xBFA6	# HANGUL SYLLABLE SSANGPIEUP-OE-PIEUPSIOS
-0x976A	0xBFA7	# HANGUL SYLLABLE SSANGPIEUP-OE-SIOS
-0x976B	0xBFA8	# HANGUL SYLLABLE SSANGPIEUP-OE-SSANGSIOS
-0x976C	0xBFA9	# HANGUL SYLLABLE SSANGPIEUP-OE-IEUNG
-0x976D	0xBFAA	# HANGUL SYLLABLE SSANGPIEUP-OE-CIEUC
-0x976E	0xBFAB	# HANGUL SYLLABLE SSANGPIEUP-OE-CHIEUCH
-0x976F	0xBFAC	# HANGUL SYLLABLE SSANGPIEUP-OE-KHIEUKH
-0x9770	0xBFAD	# HANGUL SYLLABLE SSANGPIEUP-OE-THIEUTH
-0x9771	0xBFAE	# HANGUL SYLLABLE SSANGPIEUP-OE-PHIEUPH
-0x9772	0xBFAF	# HANGUL SYLLABLE SSANGPIEUP-OE-HIEUH
-0x9773	0xBFB1	# HANGUL SYLLABLE SSANGPIEUP-YO-KIYEOK
-0x9774	0xBFB2	# HANGUL SYLLABLE SSANGPIEUP-YO-SSANGKIYEOK
-0x9775	0xBFB3	# HANGUL SYLLABLE SSANGPIEUP-YO-KIYEOKSIOS
-0x9776	0xBFB4	# HANGUL SYLLABLE SSANGPIEUP-YO-NIEUN
-0x9777	0xBFB5	# HANGUL SYLLABLE SSANGPIEUP-YO-NIEUNCIEUC
-0x9778	0xBFB6	# HANGUL SYLLABLE SSANGPIEUP-YO-NIEUNHIEUH
-0x9779	0xBFB7	# HANGUL SYLLABLE SSANGPIEUP-YO-TIKEUT
-0x977A	0xBFB8	# HANGUL SYLLABLE SSANGPIEUP-YO-RIEUL
-0x9781	0xBFB9	# HANGUL SYLLABLE SSANGPIEUP-YO-RIEULKIYEOK
-0x9782	0xBFBA	# HANGUL SYLLABLE SSANGPIEUP-YO-RIEULMIEUM
-0x9783	0xBFBB	# HANGUL SYLLABLE SSANGPIEUP-YO-RIEULPIEUP
-0x9784	0xBFBC	# HANGUL SYLLABLE SSANGPIEUP-YO-RIEULSIOS
-0x9785	0xBFBD	# HANGUL SYLLABLE SSANGPIEUP-YO-RIEULTHIEUTH
-0x9786	0xBFBE	# HANGUL SYLLABLE SSANGPIEUP-YO-RIEULPHIEUPH
-0x9787	0xBFBF	# HANGUL SYLLABLE SSANGPIEUP-YO-RIEULHIEUH
-0x9788	0xBFC0	# HANGUL SYLLABLE SSANGPIEUP-YO-MIEUM
-0x9789	0xBFC1	# HANGUL SYLLABLE SSANGPIEUP-YO-PIEUP
-0x978A	0xBFC2	# HANGUL SYLLABLE SSANGPIEUP-YO-PIEUPSIOS
-0x978B	0xBFC3	# HANGUL SYLLABLE SSANGPIEUP-YO-SIOS
-0x978C	0xBFC4	# HANGUL SYLLABLE SSANGPIEUP-YO-SSANGSIOS
-0x978D	0xBFC6	# HANGUL SYLLABLE SSANGPIEUP-YO-CIEUC
-0x978E	0xBFC7	# HANGUL SYLLABLE SSANGPIEUP-YO-CHIEUCH
-0x978F	0xBFC8	# HANGUL SYLLABLE SSANGPIEUP-YO-KHIEUKH
-0x9790	0xBFC9	# HANGUL SYLLABLE SSANGPIEUP-YO-THIEUTH
-0x9791	0xBFCA	# HANGUL SYLLABLE SSANGPIEUP-YO-PHIEUPH
-0x9792	0xBFCB	# HANGUL SYLLABLE SSANGPIEUP-YO-HIEUH
-0x9793	0xBFCE	# HANGUL SYLLABLE SSANGPIEUP-U-SSANGKIYEOK
-0x9794	0xBFCF	# HANGUL SYLLABLE SSANGPIEUP-U-KIYEOKSIOS
-0x9795	0xBFD1	# HANGUL SYLLABLE SSANGPIEUP-U-NIEUNCIEUC
-0x9796	0xBFD2	# HANGUL SYLLABLE SSANGPIEUP-U-NIEUNHIEUH
-0x9797	0xBFD3	# HANGUL SYLLABLE SSANGPIEUP-U-TIKEUT
-0x9798	0xBFD5	# HANGUL SYLLABLE SSANGPIEUP-U-RIEULKIYEOK
-0x9799	0xBFD6	# HANGUL SYLLABLE SSANGPIEUP-U-RIEULMIEUM
-0x979A	0xBFD7	# HANGUL SYLLABLE SSANGPIEUP-U-RIEULPIEUP
-0x979B	0xBFD8	# HANGUL SYLLABLE SSANGPIEUP-U-RIEULSIOS
-0x979C	0xBFD9	# HANGUL SYLLABLE SSANGPIEUP-U-RIEULTHIEUTH
-0x979D	0xBFDA	# HANGUL SYLLABLE SSANGPIEUP-U-RIEULPHIEUPH
-0x979E	0xBFDB	# HANGUL SYLLABLE SSANGPIEUP-U-RIEULHIEUH
-0x979F	0xBFDD	# HANGUL SYLLABLE SSANGPIEUP-U-PIEUP
-0x97A0	0xBFDE	# HANGUL SYLLABLE SSANGPIEUP-U-PIEUPSIOS
-0x97A1	0xBFE0	# HANGUL SYLLABLE SSANGPIEUP-U-SSANGSIOS
-0x97A2	0xBFE2	# HANGUL SYLLABLE SSANGPIEUP-U-CIEUC
-0x97A3	0xBFE3	# HANGUL SYLLABLE SSANGPIEUP-U-CHIEUCH
-0x97A4	0xBFE4	# HANGUL SYLLABLE SSANGPIEUP-U-KHIEUKH
-0x97A5	0xBFE5	# HANGUL SYLLABLE SSANGPIEUP-U-THIEUTH
-0x97A6	0xBFE6	# HANGUL SYLLABLE SSANGPIEUP-U-PHIEUPH
-0x97A7	0xBFE7	# HANGUL SYLLABLE SSANGPIEUP-U-HIEUH
-0x97A8	0xBFE8	# HANGUL SYLLABLE SSANGPIEUP-WEO
-0x97A9	0xBFE9	# HANGUL SYLLABLE SSANGPIEUP-WEO-KIYEOK
-0x97AA	0xBFEA	# HANGUL SYLLABLE SSANGPIEUP-WEO-SSANGKIYEOK
-0x97AB	0xBFEB	# HANGUL SYLLABLE SSANGPIEUP-WEO-KIYEOKSIOS
-0x97AC	0xBFEC	# HANGUL SYLLABLE SSANGPIEUP-WEO-NIEUN
-0x97AD	0xBFED	# HANGUL SYLLABLE SSANGPIEUP-WEO-NIEUNCIEUC
-0x97AE	0xBFEE	# HANGUL SYLLABLE SSANGPIEUP-WEO-NIEUNHIEUH
-0x97AF	0xBFEF	# HANGUL SYLLABLE SSANGPIEUP-WEO-TIKEUT
-0x97B0	0xBFF0	# HANGUL SYLLABLE SSANGPIEUP-WEO-RIEUL
-0x97B1	0xBFF1	# HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULKIYEOK
-0x97B2	0xBFF2	# HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULMIEUM
-0x97B3	0xBFF3	# HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULPIEUP
-0x97B4	0xBFF4	# HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULSIOS
-0x97B5	0xBFF5	# HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULTHIEUTH
-0x97B6	0xBFF6	# HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULPHIEUPH
-0x97B7	0xBFF7	# HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULHIEUH
-0x97B8	0xBFF8	# HANGUL SYLLABLE SSANGPIEUP-WEO-MIEUM
-0x97B9	0xBFF9	# HANGUL SYLLABLE SSANGPIEUP-WEO-PIEUP
-0x97BA	0xBFFA	# HANGUL SYLLABLE SSANGPIEUP-WEO-PIEUPSIOS
-0x97BB	0xBFFB	# HANGUL SYLLABLE SSANGPIEUP-WEO-SIOS
-0x97BC	0xBFFC	# HANGUL SYLLABLE SSANGPIEUP-WEO-SSANGSIOS
-0x97BD	0xBFFD	# HANGUL SYLLABLE SSANGPIEUP-WEO-IEUNG
-0x97BE	0xBFFE	# HANGUL SYLLABLE SSANGPIEUP-WEO-CIEUC
-0x97BF	0xBFFF	# HANGUL SYLLABLE SSANGPIEUP-WEO-CHIEUCH
-0x97C0	0xC000	# HANGUL SYLLABLE SSANGPIEUP-WEO-KHIEUKH
-0x97C1	0xC001	# HANGUL SYLLABLE SSANGPIEUP-WEO-THIEUTH
-0x97C2	0xC002	# HANGUL SYLLABLE SSANGPIEUP-WEO-PHIEUPH
-0x97C3	0xC003	# HANGUL SYLLABLE SSANGPIEUP-WEO-HIEUH
-0x97C4	0xC004	# HANGUL SYLLABLE SSANGPIEUP-WE
-0x97C5	0xC005	# HANGUL SYLLABLE SSANGPIEUP-WE-KIYEOK
-0x97C6	0xC006	# HANGUL SYLLABLE SSANGPIEUP-WE-SSANGKIYEOK
-0x97C7	0xC007	# HANGUL SYLLABLE SSANGPIEUP-WE-KIYEOKSIOS
-0x97C8	0xC008	# HANGUL SYLLABLE SSANGPIEUP-WE-NIEUN
-0x97C9	0xC009	# HANGUL SYLLABLE SSANGPIEUP-WE-NIEUNCIEUC
-0x97CA	0xC00A	# HANGUL SYLLABLE SSANGPIEUP-WE-NIEUNHIEUH
-0x97CB	0xC00B	# HANGUL SYLLABLE SSANGPIEUP-WE-TIKEUT
-0x97CC	0xC00C	# HANGUL SYLLABLE SSANGPIEUP-WE-RIEUL
-0x97CD	0xC00D	# HANGUL SYLLABLE SSANGPIEUP-WE-RIEULKIYEOK
-0x97CE	0xC00E	# HANGUL SYLLABLE SSANGPIEUP-WE-RIEULMIEUM
-0x97CF	0xC00F	# HANGUL SYLLABLE SSANGPIEUP-WE-RIEULPIEUP
-0x97D0	0xC010	# HANGUL SYLLABLE SSANGPIEUP-WE-RIEULSIOS
-0x97D1	0xC011	# HANGUL SYLLABLE SSANGPIEUP-WE-RIEULTHIEUTH
-0x97D2	0xC012	# HANGUL SYLLABLE SSANGPIEUP-WE-RIEULPHIEUPH
-0x97D3	0xC013	# HANGUL SYLLABLE SSANGPIEUP-WE-RIEULHIEUH
-0x97D4	0xC014	# HANGUL SYLLABLE SSANGPIEUP-WE-MIEUM
-0x97D5	0xC015	# HANGUL SYLLABLE SSANGPIEUP-WE-PIEUP
-0x97D6	0xC016	# HANGUL SYLLABLE SSANGPIEUP-WE-PIEUPSIOS
-0x97D7	0xC017	# HANGUL SYLLABLE SSANGPIEUP-WE-SIOS
-0x97D8	0xC018	# HANGUL SYLLABLE SSANGPIEUP-WE-SSANGSIOS
-0x97D9	0xC019	# HANGUL SYLLABLE SSANGPIEUP-WE-IEUNG
-0x97DA	0xC01A	# HANGUL SYLLABLE SSANGPIEUP-WE-CIEUC
-0x97DB	0xC01B	# HANGUL SYLLABLE SSANGPIEUP-WE-CHIEUCH
-0x97DC	0xC01C	# HANGUL SYLLABLE SSANGPIEUP-WE-KHIEUKH
-0x97DD	0xC01D	# HANGUL SYLLABLE SSANGPIEUP-WE-THIEUTH
-0x97DE	0xC01E	# HANGUL SYLLABLE SSANGPIEUP-WE-PHIEUPH
-0x97DF	0xC01F	# HANGUL SYLLABLE SSANGPIEUP-WE-HIEUH
-0x97E0	0xC020	# HANGUL SYLLABLE SSANGPIEUP-WI
-0x97E1	0xC021	# HANGUL SYLLABLE SSANGPIEUP-WI-KIYEOK
-0x97E2	0xC022	# HANGUL SYLLABLE SSANGPIEUP-WI-SSANGKIYEOK
-0x97E3	0xC023	# HANGUL SYLLABLE SSANGPIEUP-WI-KIYEOKSIOS
-0x97E4	0xC024	# HANGUL SYLLABLE SSANGPIEUP-WI-NIEUN
-0x97E5	0xC025	# HANGUL SYLLABLE SSANGPIEUP-WI-NIEUNCIEUC
-0x97E6	0xC026	# HANGUL SYLLABLE SSANGPIEUP-WI-NIEUNHIEUH
-0x97E7	0xC027	# HANGUL SYLLABLE SSANGPIEUP-WI-TIKEUT
-0x97E8	0xC028	# HANGUL SYLLABLE SSANGPIEUP-WI-RIEUL
-0x97E9	0xC029	# HANGUL SYLLABLE SSANGPIEUP-WI-RIEULKIYEOK
-0x97EA	0xC02A	# HANGUL SYLLABLE SSANGPIEUP-WI-RIEULMIEUM
-0x97EB	0xC02B	# HANGUL SYLLABLE SSANGPIEUP-WI-RIEULPIEUP
-0x97EC	0xC02C	# HANGUL SYLLABLE SSANGPIEUP-WI-RIEULSIOS
-0x97ED	0xC02D	# HANGUL SYLLABLE SSANGPIEUP-WI-RIEULTHIEUTH
-0x97EE	0xC02E	# HANGUL SYLLABLE SSANGPIEUP-WI-RIEULPHIEUPH
-0x97EF	0xC02F	# HANGUL SYLLABLE SSANGPIEUP-WI-RIEULHIEUH
-0x97F0	0xC030	# HANGUL SYLLABLE SSANGPIEUP-WI-MIEUM
-0x97F1	0xC031	# HANGUL SYLLABLE SSANGPIEUP-WI-PIEUP
-0x97F2	0xC032	# HANGUL SYLLABLE SSANGPIEUP-WI-PIEUPSIOS
-0x97F3	0xC033	# HANGUL SYLLABLE SSANGPIEUP-WI-SIOS
-0x97F4	0xC034	# HANGUL SYLLABLE SSANGPIEUP-WI-SSANGSIOS
-0x97F5	0xC035	# HANGUL SYLLABLE SSANGPIEUP-WI-IEUNG
-0x97F6	0xC036	# HANGUL SYLLABLE SSANGPIEUP-WI-CIEUC
-0x97F7	0xC037	# HANGUL SYLLABLE SSANGPIEUP-WI-CHIEUCH
-0x97F8	0xC038	# HANGUL SYLLABLE SSANGPIEUP-WI-KHIEUKH
-0x97F9	0xC039	# HANGUL SYLLABLE SSANGPIEUP-WI-THIEUTH
-0x97FA	0xC03A	# HANGUL SYLLABLE SSANGPIEUP-WI-PHIEUPH
-0x97FB	0xC03B	# HANGUL SYLLABLE SSANGPIEUP-WI-HIEUH
-0x97FC	0xC03D	# HANGUL SYLLABLE SSANGPIEUP-YU-KIYEOK
-0x97FD	0xC03E	# HANGUL SYLLABLE SSANGPIEUP-YU-SSANGKIYEOK
-0x97FE	0xC03F	# HANGUL SYLLABLE SSANGPIEUP-YU-KIYEOKSIOS
-0x9841	0xC040	# HANGUL SYLLABLE SSANGPIEUP-YU-NIEUN
-0x9842	0xC041	# HANGUL SYLLABLE SSANGPIEUP-YU-NIEUNCIEUC
-0x9843	0xC042	# HANGUL SYLLABLE SSANGPIEUP-YU-NIEUNHIEUH
-0x9844	0xC043	# HANGUL SYLLABLE SSANGPIEUP-YU-TIKEUT
-0x9845	0xC044	# HANGUL SYLLABLE SSANGPIEUP-YU-RIEUL
-0x9846	0xC045	# HANGUL SYLLABLE SSANGPIEUP-YU-RIEULKIYEOK
-0x9847	0xC046	# HANGUL SYLLABLE SSANGPIEUP-YU-RIEULMIEUM
-0x9848	0xC047	# HANGUL SYLLABLE SSANGPIEUP-YU-RIEULPIEUP
-0x9849	0xC048	# HANGUL SYLLABLE SSANGPIEUP-YU-RIEULSIOS
-0x984A	0xC049	# HANGUL SYLLABLE SSANGPIEUP-YU-RIEULTHIEUTH
-0x984B	0xC04A	# HANGUL SYLLABLE SSANGPIEUP-YU-RIEULPHIEUPH
-0x984C	0xC04B	# HANGUL SYLLABLE SSANGPIEUP-YU-RIEULHIEUH
-0x984D	0xC04C	# HANGUL SYLLABLE SSANGPIEUP-YU-MIEUM
-0x984E	0xC04D	# HANGUL SYLLABLE SSANGPIEUP-YU-PIEUP
-0x984F	0xC04E	# HANGUL SYLLABLE SSANGPIEUP-YU-PIEUPSIOS
-0x9850	0xC04F	# HANGUL SYLLABLE SSANGPIEUP-YU-SIOS
-0x9851	0xC050	# HANGUL SYLLABLE SSANGPIEUP-YU-SSANGSIOS
-0x9852	0xC052	# HANGUL SYLLABLE SSANGPIEUP-YU-CIEUC
-0x9853	0xC053	# HANGUL SYLLABLE SSANGPIEUP-YU-CHIEUCH
-0x9854	0xC054	# HANGUL SYLLABLE SSANGPIEUP-YU-KHIEUKH
-0x9855	0xC055	# HANGUL SYLLABLE SSANGPIEUP-YU-THIEUTH
-0x9856	0xC056	# HANGUL SYLLABLE SSANGPIEUP-YU-PHIEUPH
-0x9857	0xC057	# HANGUL SYLLABLE SSANGPIEUP-YU-HIEUH
-0x9858	0xC059	# HANGUL SYLLABLE SSANGPIEUP-EU-KIYEOK
-0x9859	0xC05A	# HANGUL SYLLABLE SSANGPIEUP-EU-SSANGKIYEOK
-0x985A	0xC05B	# HANGUL SYLLABLE SSANGPIEUP-EU-KIYEOKSIOS
-0x9861	0xC05D	# HANGUL SYLLABLE SSANGPIEUP-EU-NIEUNCIEUC
-0x9862	0xC05E	# HANGUL SYLLABLE SSANGPIEUP-EU-NIEUNHIEUH
-0x9863	0xC05F	# HANGUL SYLLABLE SSANGPIEUP-EU-TIKEUT
-0x9864	0xC061	# HANGUL SYLLABLE SSANGPIEUP-EU-RIEULKIYEOK
-0x9865	0xC062	# HANGUL SYLLABLE SSANGPIEUP-EU-RIEULMIEUM
-0x9866	0xC063	# HANGUL SYLLABLE SSANGPIEUP-EU-RIEULPIEUP
-0x9867	0xC064	# HANGUL SYLLABLE SSANGPIEUP-EU-RIEULSIOS
-0x9868	0xC065	# HANGUL SYLLABLE SSANGPIEUP-EU-RIEULTHIEUTH
-0x9869	0xC066	# HANGUL SYLLABLE SSANGPIEUP-EU-RIEULPHIEUPH
-0x986A	0xC067	# HANGUL SYLLABLE SSANGPIEUP-EU-RIEULHIEUH
-0x986B	0xC06A	# HANGUL SYLLABLE SSANGPIEUP-EU-PIEUPSIOS
-0x986C	0xC06B	# HANGUL SYLLABLE SSANGPIEUP-EU-SIOS
-0x986D	0xC06C	# HANGUL SYLLABLE SSANGPIEUP-EU-SSANGSIOS
-0x986E	0xC06D	# HANGUL SYLLABLE SSANGPIEUP-EU-IEUNG
-0x986F	0xC06E	# HANGUL SYLLABLE SSANGPIEUP-EU-CIEUC
-0x9870	0xC06F	# HANGUL SYLLABLE SSANGPIEUP-EU-CHIEUCH
-0x9871	0xC070	# HANGUL SYLLABLE SSANGPIEUP-EU-KHIEUKH
-0x9872	0xC071	# HANGUL SYLLABLE SSANGPIEUP-EU-THIEUTH
-0x9873	0xC072	# HANGUL SYLLABLE SSANGPIEUP-EU-PHIEUPH
-0x9874	0xC073	# HANGUL SYLLABLE SSANGPIEUP-EU-HIEUH
-0x9875	0xC074	# HANGUL SYLLABLE SSANGPIEUP-YI
-0x9876	0xC075	# HANGUL SYLLABLE SSANGPIEUP-YI-KIYEOK
-0x9877	0xC076	# HANGUL SYLLABLE SSANGPIEUP-YI-SSANGKIYEOK
-0x9878	0xC077	# HANGUL SYLLABLE SSANGPIEUP-YI-KIYEOKSIOS
-0x9879	0xC078	# HANGUL SYLLABLE SSANGPIEUP-YI-NIEUN
-0x987A	0xC079	# HANGUL SYLLABLE SSANGPIEUP-YI-NIEUNCIEUC
-0x9881	0xC07A	# HANGUL SYLLABLE SSANGPIEUP-YI-NIEUNHIEUH
-0x9882	0xC07B	# HANGUL SYLLABLE SSANGPIEUP-YI-TIKEUT
-0x9883	0xC07C	# HANGUL SYLLABLE SSANGPIEUP-YI-RIEUL
-0x9884	0xC07D	# HANGUL SYLLABLE SSANGPIEUP-YI-RIEULKIYEOK
-0x9885	0xC07E	# HANGUL SYLLABLE SSANGPIEUP-YI-RIEULMIEUM
-0x9886	0xC07F	# HANGUL SYLLABLE SSANGPIEUP-YI-RIEULPIEUP
-0x9887	0xC080	# HANGUL SYLLABLE SSANGPIEUP-YI-RIEULSIOS
-0x9888	0xC081	# HANGUL SYLLABLE SSANGPIEUP-YI-RIEULTHIEUTH
-0x9889	0xC082	# HANGUL SYLLABLE SSANGPIEUP-YI-RIEULPHIEUPH
-0x988A	0xC083	# HANGUL SYLLABLE SSANGPIEUP-YI-RIEULHIEUH
-0x988B	0xC084	# HANGUL SYLLABLE SSANGPIEUP-YI-MIEUM
-0x988C	0xC085	# HANGUL SYLLABLE SSANGPIEUP-YI-PIEUP
-0x988D	0xC086	# HANGUL SYLLABLE SSANGPIEUP-YI-PIEUPSIOS
-0x988E	0xC087	# HANGUL SYLLABLE SSANGPIEUP-YI-SIOS
-0x988F	0xC088	# HANGUL SYLLABLE SSANGPIEUP-YI-SSANGSIOS
-0x9890	0xC089	# HANGUL SYLLABLE SSANGPIEUP-YI-IEUNG
-0x9891	0xC08A	# HANGUL SYLLABLE SSANGPIEUP-YI-CIEUC
-0x9892	0xC08B	# HANGUL SYLLABLE SSANGPIEUP-YI-CHIEUCH
-0x9893	0xC08C	# HANGUL SYLLABLE SSANGPIEUP-YI-KHIEUKH
-0x9894	0xC08D	# HANGUL SYLLABLE SSANGPIEUP-YI-THIEUTH
-0x9895	0xC08E	# HANGUL SYLLABLE SSANGPIEUP-YI-PHIEUPH
-0x9896	0xC08F	# HANGUL SYLLABLE SSANGPIEUP-YI-HIEUH
-0x9897	0xC092	# HANGUL SYLLABLE SSANGPIEUP-I-SSANGKIYEOK
-0x9898	0xC093	# HANGUL SYLLABLE SSANGPIEUP-I-KIYEOKSIOS
-0x9899	0xC095	# HANGUL SYLLABLE SSANGPIEUP-I-NIEUNCIEUC
-0x989A	0xC096	# HANGUL SYLLABLE SSANGPIEUP-I-NIEUNHIEUH
-0x989B	0xC097	# HANGUL SYLLABLE SSANGPIEUP-I-TIKEUT
-0x989C	0xC099	# HANGUL SYLLABLE SSANGPIEUP-I-RIEULKIYEOK
-0x989D	0xC09A	# HANGUL SYLLABLE SSANGPIEUP-I-RIEULMIEUM
-0x989E	0xC09B	# HANGUL SYLLABLE SSANGPIEUP-I-RIEULPIEUP
-0x989F	0xC09C	# HANGUL SYLLABLE SSANGPIEUP-I-RIEULSIOS
-0x98A0	0xC09D	# HANGUL SYLLABLE SSANGPIEUP-I-RIEULTHIEUTH
-0x98A1	0xC09E	# HANGUL SYLLABLE SSANGPIEUP-I-RIEULPHIEUPH
-0x98A2	0xC09F	# HANGUL SYLLABLE SSANGPIEUP-I-RIEULHIEUH
-0x98A3	0xC0A2	# HANGUL SYLLABLE SSANGPIEUP-I-PIEUPSIOS
-0x98A4	0xC0A4	# HANGUL SYLLABLE SSANGPIEUP-I-SSANGSIOS
-0x98A5	0xC0A6	# HANGUL SYLLABLE SSANGPIEUP-I-CIEUC
-0x98A6	0xC0A7	# HANGUL SYLLABLE SSANGPIEUP-I-CHIEUCH
-0x98A7	0xC0A8	# HANGUL SYLLABLE SSANGPIEUP-I-KHIEUKH
-0x98A8	0xC0A9	# HANGUL SYLLABLE SSANGPIEUP-I-THIEUTH
-0x98A9	0xC0AA	# HANGUL SYLLABLE SSANGPIEUP-I-PHIEUPH
-0x98AA	0xC0AB	# HANGUL SYLLABLE SSANGPIEUP-I-HIEUH
-0x98AB	0xC0AE	# HANGUL SYLLABLE SIOS-A-SSANGKIYEOK
-0x98AC	0xC0B1	# HANGUL SYLLABLE SIOS-A-NIEUNCIEUC
-0x98AD	0xC0B2	# HANGUL SYLLABLE SIOS-A-NIEUNHIEUH
-0x98AE	0xC0B7	# HANGUL SYLLABLE SIOS-A-RIEULPIEUP
-0x98AF	0xC0B8	# HANGUL SYLLABLE SIOS-A-RIEULSIOS
-0x98B0	0xC0B9	# HANGUL SYLLABLE SIOS-A-RIEULTHIEUTH
-0x98B1	0xC0BA	# HANGUL SYLLABLE SIOS-A-RIEULPHIEUPH
-0x98B2	0xC0BB	# HANGUL SYLLABLE SIOS-A-RIEULHIEUH
-0x98B3	0xC0BE	# HANGUL SYLLABLE SIOS-A-PIEUPSIOS
-0x98B4	0xC0C2	# HANGUL SYLLABLE SIOS-A-CIEUC
-0x98B5	0xC0C3	# HANGUL SYLLABLE SIOS-A-CHIEUCH
-0x98B6	0xC0C4	# HANGUL SYLLABLE SIOS-A-KHIEUKH
-0x98B7	0xC0C6	# HANGUL SYLLABLE SIOS-A-PHIEUPH
-0x98B8	0xC0C7	# HANGUL SYLLABLE SIOS-A-HIEUH
-0x98B9	0xC0CA	# HANGUL SYLLABLE SIOS-AE-SSANGKIYEOK
-0x98BA	0xC0CB	# HANGUL SYLLABLE SIOS-AE-KIYEOKSIOS
-0x98BB	0xC0CD	# HANGUL SYLLABLE SIOS-AE-NIEUNCIEUC
-0x98BC	0xC0CE	# HANGUL SYLLABLE SIOS-AE-NIEUNHIEUH
-0x98BD	0xC0CF	# HANGUL SYLLABLE SIOS-AE-TIKEUT
-0x98BE	0xC0D1	# HANGUL SYLLABLE SIOS-AE-RIEULKIYEOK
-0x98BF	0xC0D2	# HANGUL SYLLABLE SIOS-AE-RIEULMIEUM
-0x98C0	0xC0D3	# HANGUL SYLLABLE SIOS-AE-RIEULPIEUP
-0x98C1	0xC0D4	# HANGUL SYLLABLE SIOS-AE-RIEULSIOS
-0x98C2	0xC0D5	# HANGUL SYLLABLE SIOS-AE-RIEULTHIEUTH
-0x98C3	0xC0D6	# HANGUL SYLLABLE SIOS-AE-RIEULPHIEUPH
-0x98C4	0xC0D7	# HANGUL SYLLABLE SIOS-AE-RIEULHIEUH
-0x98C5	0xC0DA	# HANGUL SYLLABLE SIOS-AE-PIEUPSIOS
-0x98C6	0xC0DE	# HANGUL SYLLABLE SIOS-AE-CIEUC
-0x98C7	0xC0DF	# HANGUL SYLLABLE SIOS-AE-CHIEUCH
-0x98C8	0xC0E0	# HANGUL SYLLABLE SIOS-AE-KHIEUKH
-0x98C9	0xC0E1	# HANGUL SYLLABLE SIOS-AE-THIEUTH
-0x98CA	0xC0E2	# HANGUL SYLLABLE SIOS-AE-PHIEUPH
-0x98CB	0xC0E3	# HANGUL SYLLABLE SIOS-AE-HIEUH
-0x98CC	0xC0E6	# HANGUL SYLLABLE SIOS-YA-SSANGKIYEOK
-0x98CD	0xC0E7	# HANGUL SYLLABLE SIOS-YA-KIYEOKSIOS
-0x98CE	0xC0E9	# HANGUL SYLLABLE SIOS-YA-NIEUNCIEUC
-0x98CF	0xC0EA	# HANGUL SYLLABLE SIOS-YA-NIEUNHIEUH
-0x98D0	0xC0EB	# HANGUL SYLLABLE SIOS-YA-TIKEUT
-0x98D1	0xC0ED	# HANGUL SYLLABLE SIOS-YA-RIEULKIYEOK
-0x98D2	0xC0EE	# HANGUL SYLLABLE SIOS-YA-RIEULMIEUM
-0x98D3	0xC0EF	# HANGUL SYLLABLE SIOS-YA-RIEULPIEUP
-0x98D4	0xC0F0	# HANGUL SYLLABLE SIOS-YA-RIEULSIOS
-0x98D5	0xC0F1	# HANGUL SYLLABLE SIOS-YA-RIEULTHIEUTH
-0x98D6	0xC0F2	# HANGUL SYLLABLE SIOS-YA-RIEULPHIEUPH
-0x98D7	0xC0F3	# HANGUL SYLLABLE SIOS-YA-RIEULHIEUH
-0x98D8	0xC0F6	# HANGUL SYLLABLE SIOS-YA-PIEUPSIOS
-0x98D9	0xC0F8	# HANGUL SYLLABLE SIOS-YA-SSANGSIOS
-0x98DA	0xC0FA	# HANGUL SYLLABLE SIOS-YA-CIEUC
-0x98DB	0xC0FB	# HANGUL SYLLABLE SIOS-YA-CHIEUCH
-0x98DC	0xC0FC	# HANGUL SYLLABLE SIOS-YA-KHIEUKH
-0x98DD	0xC0FD	# HANGUL SYLLABLE SIOS-YA-THIEUTH
-0x98DE	0xC0FE	# HANGUL SYLLABLE SIOS-YA-PHIEUPH
-0x98DF	0xC0FF	# HANGUL SYLLABLE SIOS-YA-HIEUH
-0x98E0	0xC101	# HANGUL SYLLABLE SIOS-YAE-KIYEOK
-0x98E1	0xC102	# HANGUL SYLLABLE SIOS-YAE-SSANGKIYEOK
-0x98E2	0xC103	# HANGUL SYLLABLE SIOS-YAE-KIYEOKSIOS
-0x98E3	0xC105	# HANGUL SYLLABLE SIOS-YAE-NIEUNCIEUC
-0x98E4	0xC106	# HANGUL SYLLABLE SIOS-YAE-NIEUNHIEUH
-0x98E5	0xC107	# HANGUL SYLLABLE SIOS-YAE-TIKEUT
-0x98E6	0xC109	# HANGUL SYLLABLE SIOS-YAE-RIEULKIYEOK
-0x98E7	0xC10A	# HANGUL SYLLABLE SIOS-YAE-RIEULMIEUM
-0x98E8	0xC10B	# HANGUL SYLLABLE SIOS-YAE-RIEULPIEUP
-0x98E9	0xC10C	# HANGUL SYLLABLE SIOS-YAE-RIEULSIOS
-0x98EA	0xC10D	# HANGUL SYLLABLE SIOS-YAE-RIEULTHIEUTH
-0x98EB	0xC10E	# HANGUL SYLLABLE SIOS-YAE-RIEULPHIEUPH
-0x98EC	0xC10F	# HANGUL SYLLABLE SIOS-YAE-RIEULHIEUH
-0x98ED	0xC111	# HANGUL SYLLABLE SIOS-YAE-PIEUP
-0x98EE	0xC112	# HANGUL SYLLABLE SIOS-YAE-PIEUPSIOS
-0x98EF	0xC113	# HANGUL SYLLABLE SIOS-YAE-SIOS
-0x98F0	0xC114	# HANGUL SYLLABLE SIOS-YAE-SSANGSIOS
-0x98F1	0xC116	# HANGUL SYLLABLE SIOS-YAE-CIEUC
-0x98F2	0xC117	# HANGUL SYLLABLE SIOS-YAE-CHIEUCH
-0x98F3	0xC118	# HANGUL SYLLABLE SIOS-YAE-KHIEUKH
-0x98F4	0xC119	# HANGUL SYLLABLE SIOS-YAE-THIEUTH
-0x98F5	0xC11A	# HANGUL SYLLABLE SIOS-YAE-PHIEUPH
-0x98F6	0xC11B	# HANGUL SYLLABLE SIOS-YAE-HIEUH
-0x98F7	0xC121	# HANGUL SYLLABLE SIOS-EO-NIEUNCIEUC
-0x98F8	0xC122	# HANGUL SYLLABLE SIOS-EO-NIEUNHIEUH
-0x98F9	0xC125	# HANGUL SYLLABLE SIOS-EO-RIEULKIYEOK
-0x98FA	0xC128	# HANGUL SYLLABLE SIOS-EO-RIEULSIOS
-0x98FB	0xC129	# HANGUL SYLLABLE SIOS-EO-RIEULTHIEUTH
-0x98FC	0xC12A	# HANGUL SYLLABLE SIOS-EO-RIEULPHIEUPH
-0x98FD	0xC12B	# HANGUL SYLLABLE SIOS-EO-RIEULHIEUH
-0x98FE	0xC12E	# HANGUL SYLLABLE SIOS-EO-PIEUPSIOS
-0x9941	0xC132	# HANGUL SYLLABLE SIOS-EO-CIEUC
-0x9942	0xC133	# HANGUL SYLLABLE SIOS-EO-CHIEUCH
-0x9943	0xC134	# HANGUL SYLLABLE SIOS-EO-KHIEUKH
-0x9944	0xC135	# HANGUL SYLLABLE SIOS-EO-THIEUTH
-0x9945	0xC137	# HANGUL SYLLABLE SIOS-EO-HIEUH
-0x9946	0xC13A	# HANGUL SYLLABLE SIOS-E-SSANGKIYEOK
-0x9947	0xC13B	# HANGUL SYLLABLE SIOS-E-KIYEOKSIOS
-0x9948	0xC13D	# HANGUL SYLLABLE SIOS-E-NIEUNCIEUC
-0x9949	0xC13E	# HANGUL SYLLABLE SIOS-E-NIEUNHIEUH
-0x994A	0xC13F	# HANGUL SYLLABLE SIOS-E-TIKEUT
-0x994B	0xC141	# HANGUL SYLLABLE SIOS-E-RIEULKIYEOK
-0x994C	0xC142	# HANGUL SYLLABLE SIOS-E-RIEULMIEUM
-0x994D	0xC143	# HANGUL SYLLABLE SIOS-E-RIEULPIEUP
-0x994E	0xC144	# HANGUL SYLLABLE SIOS-E-RIEULSIOS
-0x994F	0xC145	# HANGUL SYLLABLE SIOS-E-RIEULTHIEUTH
-0x9950	0xC146	# HANGUL SYLLABLE SIOS-E-RIEULPHIEUPH
-0x9951	0xC147	# HANGUL SYLLABLE SIOS-E-RIEULHIEUH
-0x9952	0xC14A	# HANGUL SYLLABLE SIOS-E-PIEUPSIOS
-0x9953	0xC14E	# HANGUL SYLLABLE SIOS-E-CIEUC
-0x9954	0xC14F	# HANGUL SYLLABLE SIOS-E-CHIEUCH
-0x9955	0xC150	# HANGUL SYLLABLE SIOS-E-KHIEUKH
-0x9956	0xC151	# HANGUL SYLLABLE SIOS-E-THIEUTH
-0x9957	0xC152	# HANGUL SYLLABLE SIOS-E-PHIEUPH
-0x9958	0xC153	# HANGUL SYLLABLE SIOS-E-HIEUH
-0x9959	0xC156	# HANGUL SYLLABLE SIOS-YEO-SSANGKIYEOK
-0x995A	0xC157	# HANGUL SYLLABLE SIOS-YEO-KIYEOKSIOS
-0x9961	0xC159	# HANGUL SYLLABLE SIOS-YEO-NIEUNCIEUC
-0x9962	0xC15A	# HANGUL SYLLABLE SIOS-YEO-NIEUNHIEUH
-0x9963	0xC15B	# HANGUL SYLLABLE SIOS-YEO-TIKEUT
-0x9964	0xC15D	# HANGUL SYLLABLE SIOS-YEO-RIEULKIYEOK
-0x9965	0xC15E	# HANGUL SYLLABLE SIOS-YEO-RIEULMIEUM
-0x9966	0xC15F	# HANGUL SYLLABLE SIOS-YEO-RIEULPIEUP
-0x9967	0xC160	# HANGUL SYLLABLE SIOS-YEO-RIEULSIOS
-0x9968	0xC161	# HANGUL SYLLABLE SIOS-YEO-RIEULTHIEUTH
-0x9969	0xC162	# HANGUL SYLLABLE SIOS-YEO-RIEULPHIEUPH
-0x996A	0xC163	# HANGUL SYLLABLE SIOS-YEO-RIEULHIEUH
-0x996B	0xC166	# HANGUL SYLLABLE SIOS-YEO-PIEUPSIOS
-0x996C	0xC16A	# HANGUL SYLLABLE SIOS-YEO-CIEUC
-0x996D	0xC16B	# HANGUL SYLLABLE SIOS-YEO-CHIEUCH
-0x996E	0xC16C	# HANGUL SYLLABLE SIOS-YEO-KHIEUKH
-0x996F	0xC16D	# HANGUL SYLLABLE SIOS-YEO-THIEUTH
-0x9970	0xC16E	# HANGUL SYLLABLE SIOS-YEO-PHIEUPH
-0x9971	0xC16F	# HANGUL SYLLABLE SIOS-YEO-HIEUH
-0x9972	0xC171	# HANGUL SYLLABLE SIOS-YE-KIYEOK
-0x9973	0xC172	# HANGUL SYLLABLE SIOS-YE-SSANGKIYEOK
-0x9974	0xC173	# HANGUL SYLLABLE SIOS-YE-KIYEOKSIOS
-0x9975	0xC175	# HANGUL SYLLABLE SIOS-YE-NIEUNCIEUC
-0x9976	0xC176	# HANGUL SYLLABLE SIOS-YE-NIEUNHIEUH
-0x9977	0xC177	# HANGUL SYLLABLE SIOS-YE-TIKEUT
-0x9978	0xC179	# HANGUL SYLLABLE SIOS-YE-RIEULKIYEOK
-0x9979	0xC17A	# HANGUL SYLLABLE SIOS-YE-RIEULMIEUM
-0x997A	0xC17B	# HANGUL SYLLABLE SIOS-YE-RIEULPIEUP
-0x9981	0xC17C	# HANGUL SYLLABLE SIOS-YE-RIEULSIOS
-0x9982	0xC17D	# HANGUL SYLLABLE SIOS-YE-RIEULTHIEUTH
-0x9983	0xC17E	# HANGUL SYLLABLE SIOS-YE-RIEULPHIEUPH
-0x9984	0xC17F	# HANGUL SYLLABLE SIOS-YE-RIEULHIEUH
-0x9985	0xC180	# HANGUL SYLLABLE SIOS-YE-MIEUM
-0x9986	0xC181	# HANGUL SYLLABLE SIOS-YE-PIEUP
-0x9987	0xC182	# HANGUL SYLLABLE SIOS-YE-PIEUPSIOS
-0x9988	0xC183	# HANGUL SYLLABLE SIOS-YE-SIOS
-0x9989	0xC184	# HANGUL SYLLABLE SIOS-YE-SSANGSIOS
-0x998A	0xC186	# HANGUL SYLLABLE SIOS-YE-CIEUC
-0x998B	0xC187	# HANGUL SYLLABLE SIOS-YE-CHIEUCH
-0x998C	0xC188	# HANGUL SYLLABLE SIOS-YE-KHIEUKH
-0x998D	0xC189	# HANGUL SYLLABLE SIOS-YE-THIEUTH
-0x998E	0xC18A	# HANGUL SYLLABLE SIOS-YE-PHIEUPH
-0x998F	0xC18B	# HANGUL SYLLABLE SIOS-YE-HIEUH
-0x9990	0xC18F	# HANGUL SYLLABLE SIOS-O-KIYEOKSIOS
-0x9991	0xC191	# HANGUL SYLLABLE SIOS-O-NIEUNCIEUC
-0x9992	0xC192	# HANGUL SYLLABLE SIOS-O-NIEUNHIEUH
-0x9993	0xC193	# HANGUL SYLLABLE SIOS-O-TIKEUT
-0x9994	0xC195	# HANGUL SYLLABLE SIOS-O-RIEULKIYEOK
-0x9995	0xC197	# HANGUL SYLLABLE SIOS-O-RIEULPIEUP
-0x9996	0xC198	# HANGUL SYLLABLE SIOS-O-RIEULSIOS
-0x9997	0xC199	# HANGUL SYLLABLE SIOS-O-RIEULTHIEUTH
-0x9998	0xC19A	# HANGUL SYLLABLE SIOS-O-RIEULPHIEUPH
-0x9999	0xC19B	# HANGUL SYLLABLE SIOS-O-RIEULHIEUH
-0x999A	0xC19E	# HANGUL SYLLABLE SIOS-O-PIEUPSIOS
-0x999B	0xC1A0	# HANGUL SYLLABLE SIOS-O-SSANGSIOS
-0x999C	0xC1A2	# HANGUL SYLLABLE SIOS-O-CIEUC
-0x999D	0xC1A3	# HANGUL SYLLABLE SIOS-O-CHIEUCH
-0x999E	0xC1A4	# HANGUL SYLLABLE SIOS-O-KHIEUKH
-0x999F	0xC1A6	# HANGUL SYLLABLE SIOS-O-PHIEUPH
-0x99A0	0xC1A7	# HANGUL SYLLABLE SIOS-O-HIEUH
-0x99A1	0xC1AA	# HANGUL SYLLABLE SIOS-WA-SSANGKIYEOK
-0x99A2	0xC1AB	# HANGUL SYLLABLE SIOS-WA-KIYEOKSIOS
-0x99A3	0xC1AD	# HANGUL SYLLABLE SIOS-WA-NIEUNCIEUC
-0x99A4	0xC1AE	# HANGUL SYLLABLE SIOS-WA-NIEUNHIEUH
-0x99A5	0xC1AF	# HANGUL SYLLABLE SIOS-WA-TIKEUT
-0x99A6	0xC1B1	# HANGUL SYLLABLE SIOS-WA-RIEULKIYEOK
-0x99A7	0xC1B2	# HANGUL SYLLABLE SIOS-WA-RIEULMIEUM
-0x99A8	0xC1B3	# HANGUL SYLLABLE SIOS-WA-RIEULPIEUP
-0x99A9	0xC1B4	# HANGUL SYLLABLE SIOS-WA-RIEULSIOS
-0x99AA	0xC1B5	# HANGUL SYLLABLE SIOS-WA-RIEULTHIEUTH
-0x99AB	0xC1B6	# HANGUL SYLLABLE SIOS-WA-RIEULPHIEUPH
-0x99AC	0xC1B7	# HANGUL SYLLABLE SIOS-WA-RIEULHIEUH
-0x99AD	0xC1B8	# HANGUL SYLLABLE SIOS-WA-MIEUM
-0x99AE	0xC1B9	# HANGUL SYLLABLE SIOS-WA-PIEUP
-0x99AF	0xC1BA	# HANGUL SYLLABLE SIOS-WA-PIEUPSIOS
-0x99B0	0xC1BB	# HANGUL SYLLABLE SIOS-WA-SIOS
-0x99B1	0xC1BC	# HANGUL SYLLABLE SIOS-WA-SSANGSIOS
-0x99B2	0xC1BE	# HANGUL SYLLABLE SIOS-WA-CIEUC
-0x99B3	0xC1BF	# HANGUL SYLLABLE SIOS-WA-CHIEUCH
-0x99B4	0xC1C0	# HANGUL SYLLABLE SIOS-WA-KHIEUKH
-0x99B5	0xC1C1	# HANGUL SYLLABLE SIOS-WA-THIEUTH
-0x99B6	0xC1C2	# HANGUL SYLLABLE SIOS-WA-PHIEUPH
-0x99B7	0xC1C3	# HANGUL SYLLABLE SIOS-WA-HIEUH
-0x99B8	0xC1C5	# HANGUL SYLLABLE SIOS-WAE-KIYEOK
-0x99B9	0xC1C6	# HANGUL SYLLABLE SIOS-WAE-SSANGKIYEOK
-0x99BA	0xC1C7	# HANGUL SYLLABLE SIOS-WAE-KIYEOKSIOS
-0x99BB	0xC1C9	# HANGUL SYLLABLE SIOS-WAE-NIEUNCIEUC
-0x99BC	0xC1CA	# HANGUL SYLLABLE SIOS-WAE-NIEUNHIEUH
-0x99BD	0xC1CB	# HANGUL SYLLABLE SIOS-WAE-TIKEUT
-0x99BE	0xC1CD	# HANGUL SYLLABLE SIOS-WAE-RIEULKIYEOK
-0x99BF	0xC1CE	# HANGUL SYLLABLE SIOS-WAE-RIEULMIEUM
-0x99C0	0xC1CF	# HANGUL SYLLABLE SIOS-WAE-RIEULPIEUP
-0x99C1	0xC1D0	# HANGUL SYLLABLE SIOS-WAE-RIEULSIOS
-0x99C2	0xC1D1	# HANGUL SYLLABLE SIOS-WAE-RIEULTHIEUTH
-0x99C3	0xC1D2	# HANGUL SYLLABLE SIOS-WAE-RIEULPHIEUPH
-0x99C4	0xC1D3	# HANGUL SYLLABLE SIOS-WAE-RIEULHIEUH
-0x99C5	0xC1D5	# HANGUL SYLLABLE SIOS-WAE-PIEUP
-0x99C6	0xC1D6	# HANGUL SYLLABLE SIOS-WAE-PIEUPSIOS
-0x99C7	0xC1D9	# HANGUL SYLLABLE SIOS-WAE-IEUNG
-0x99C8	0xC1DA	# HANGUL SYLLABLE SIOS-WAE-CIEUC
-0x99C9	0xC1DB	# HANGUL SYLLABLE SIOS-WAE-CHIEUCH
-0x99CA	0xC1DC	# HANGUL SYLLABLE SIOS-WAE-KHIEUKH
-0x99CB	0xC1DD	# HANGUL SYLLABLE SIOS-WAE-THIEUTH
-0x99CC	0xC1DE	# HANGUL SYLLABLE SIOS-WAE-PHIEUPH
-0x99CD	0xC1DF	# HANGUL SYLLABLE SIOS-WAE-HIEUH
-0x99CE	0xC1E1	# HANGUL SYLLABLE SIOS-OE-KIYEOK
-0x99CF	0xC1E2	# HANGUL SYLLABLE SIOS-OE-SSANGKIYEOK
-0x99D0	0xC1E3	# HANGUL SYLLABLE SIOS-OE-KIYEOKSIOS
-0x99D1	0xC1E5	# HANGUL SYLLABLE SIOS-OE-NIEUNCIEUC
-0x99D2	0xC1E6	# HANGUL SYLLABLE SIOS-OE-NIEUNHIEUH
-0x99D3	0xC1E7	# HANGUL SYLLABLE SIOS-OE-TIKEUT
-0x99D4	0xC1E9	# HANGUL SYLLABLE SIOS-OE-RIEULKIYEOK
-0x99D5	0xC1EA	# HANGUL SYLLABLE SIOS-OE-RIEULMIEUM
-0x99D6	0xC1EB	# HANGUL SYLLABLE SIOS-OE-RIEULPIEUP
-0x99D7	0xC1EC	# HANGUL SYLLABLE SIOS-OE-RIEULSIOS
-0x99D8	0xC1ED	# HANGUL SYLLABLE SIOS-OE-RIEULTHIEUTH
-0x99D9	0xC1EE	# HANGUL SYLLABLE SIOS-OE-RIEULPHIEUPH
-0x99DA	0xC1EF	# HANGUL SYLLABLE SIOS-OE-RIEULHIEUH
-0x99DB	0xC1F2	# HANGUL SYLLABLE SIOS-OE-PIEUPSIOS
-0x99DC	0xC1F4	# HANGUL SYLLABLE SIOS-OE-SSANGSIOS
-0x99DD	0xC1F5	# HANGUL SYLLABLE SIOS-OE-IEUNG
-0x99DE	0xC1F6	# HANGUL SYLLABLE SIOS-OE-CIEUC
-0x99DF	0xC1F7	# HANGUL SYLLABLE SIOS-OE-CHIEUCH
-0x99E0	0xC1F8	# HANGUL SYLLABLE SIOS-OE-KHIEUKH
-0x99E1	0xC1F9	# HANGUL SYLLABLE SIOS-OE-THIEUTH
-0x99E2	0xC1FA	# HANGUL SYLLABLE SIOS-OE-PHIEUPH
-0x99E3	0xC1FB	# HANGUL SYLLABLE SIOS-OE-HIEUH
-0x99E4	0xC1FE	# HANGUL SYLLABLE SIOS-YO-SSANGKIYEOK
-0x99E5	0xC1FF	# HANGUL SYLLABLE SIOS-YO-KIYEOKSIOS
-0x99E6	0xC201	# HANGUL SYLLABLE SIOS-YO-NIEUNCIEUC
-0x99E7	0xC202	# HANGUL SYLLABLE SIOS-YO-NIEUNHIEUH
-0x99E8	0xC203	# HANGUL SYLLABLE SIOS-YO-TIKEUT
-0x99E9	0xC205	# HANGUL SYLLABLE SIOS-YO-RIEULKIYEOK
-0x99EA	0xC206	# HANGUL SYLLABLE SIOS-YO-RIEULMIEUM
-0x99EB	0xC207	# HANGUL SYLLABLE SIOS-YO-RIEULPIEUP
-0x99EC	0xC208	# HANGUL SYLLABLE SIOS-YO-RIEULSIOS
-0x99ED	0xC209	# HANGUL SYLLABLE SIOS-YO-RIEULTHIEUTH
-0x99EE	0xC20A	# HANGUL SYLLABLE SIOS-YO-RIEULPHIEUPH
-0x99EF	0xC20B	# HANGUL SYLLABLE SIOS-YO-RIEULHIEUH
-0x99F0	0xC20E	# HANGUL SYLLABLE SIOS-YO-PIEUPSIOS
-0x99F1	0xC210	# HANGUL SYLLABLE SIOS-YO-SSANGSIOS
-0x99F2	0xC212	# HANGUL SYLLABLE SIOS-YO-CIEUC
-0x99F3	0xC213	# HANGUL SYLLABLE SIOS-YO-CHIEUCH
-0x99F4	0xC214	# HANGUL SYLLABLE SIOS-YO-KHIEUKH
-0x99F5	0xC215	# HANGUL SYLLABLE SIOS-YO-THIEUTH
-0x99F6	0xC216	# HANGUL SYLLABLE SIOS-YO-PHIEUPH
-0x99F7	0xC217	# HANGUL SYLLABLE SIOS-YO-HIEUH
-0x99F8	0xC21A	# HANGUL SYLLABLE SIOS-U-SSANGKIYEOK
-0x99F9	0xC21B	# HANGUL SYLLABLE SIOS-U-KIYEOKSIOS
-0x99FA	0xC21D	# HANGUL SYLLABLE SIOS-U-NIEUNCIEUC
-0x99FB	0xC21E	# HANGUL SYLLABLE SIOS-U-NIEUNHIEUH
-0x99FC	0xC221	# HANGUL SYLLABLE SIOS-U-RIEULKIYEOK
-0x99FD	0xC222	# HANGUL SYLLABLE SIOS-U-RIEULMIEUM
-0x99FE	0xC223	# HANGUL SYLLABLE SIOS-U-RIEULPIEUP
-0x9A41	0xC224	# HANGUL SYLLABLE SIOS-U-RIEULSIOS
-0x9A42	0xC225	# HANGUL SYLLABLE SIOS-U-RIEULTHIEUTH
-0x9A43	0xC226	# HANGUL SYLLABLE SIOS-U-RIEULPHIEUPH
-0x9A44	0xC227	# HANGUL SYLLABLE SIOS-U-RIEULHIEUH
-0x9A45	0xC22A	# HANGUL SYLLABLE SIOS-U-PIEUPSIOS
-0x9A46	0xC22C	# HANGUL SYLLABLE SIOS-U-SSANGSIOS
-0x9A47	0xC22E	# HANGUL SYLLABLE SIOS-U-CIEUC
-0x9A48	0xC230	# HANGUL SYLLABLE SIOS-U-KHIEUKH
-0x9A49	0xC233	# HANGUL SYLLABLE SIOS-U-HIEUH
-0x9A4A	0xC235	# HANGUL SYLLABLE SIOS-WEO-KIYEOK
-0x9A4B	0xC236	# HANGUL SYLLABLE SIOS-WEO-SSANGKIYEOK
-0x9A4C	0xC237	# HANGUL SYLLABLE SIOS-WEO-KIYEOKSIOS
-0x9A4D	0xC238	# HANGUL SYLLABLE SIOS-WEO-NIEUN
-0x9A4E	0xC239	# HANGUL SYLLABLE SIOS-WEO-NIEUNCIEUC
-0x9A4F	0xC23A	# HANGUL SYLLABLE SIOS-WEO-NIEUNHIEUH
-0x9A50	0xC23B	# HANGUL SYLLABLE SIOS-WEO-TIKEUT
-0x9A51	0xC23C	# HANGUL SYLLABLE SIOS-WEO-RIEUL
-0x9A52	0xC23D	# HANGUL SYLLABLE SIOS-WEO-RIEULKIYEOK
-0x9A53	0xC23E	# HANGUL SYLLABLE SIOS-WEO-RIEULMIEUM
-0x9A54	0xC23F	# HANGUL SYLLABLE SIOS-WEO-RIEULPIEUP
-0x9A55	0xC240	# HANGUL SYLLABLE SIOS-WEO-RIEULSIOS
-0x9A56	0xC241	# HANGUL SYLLABLE SIOS-WEO-RIEULTHIEUTH
-0x9A57	0xC242	# HANGUL SYLLABLE SIOS-WEO-RIEULPHIEUPH
-0x9A58	0xC243	# HANGUL SYLLABLE SIOS-WEO-RIEULHIEUH
-0x9A59	0xC244	# HANGUL SYLLABLE SIOS-WEO-MIEUM
-0x9A5A	0xC245	# HANGUL SYLLABLE SIOS-WEO-PIEUP
-0x9A61	0xC246	# HANGUL SYLLABLE SIOS-WEO-PIEUPSIOS
-0x9A62	0xC247	# HANGUL SYLLABLE SIOS-WEO-SIOS
-0x9A63	0xC249	# HANGUL SYLLABLE SIOS-WEO-IEUNG
-0x9A64	0xC24A	# HANGUL SYLLABLE SIOS-WEO-CIEUC
-0x9A65	0xC24B	# HANGUL SYLLABLE SIOS-WEO-CHIEUCH
-0x9A66	0xC24C	# HANGUL SYLLABLE SIOS-WEO-KHIEUKH
-0x9A67	0xC24D	# HANGUL SYLLABLE SIOS-WEO-THIEUTH
-0x9A68	0xC24E	# HANGUL SYLLABLE SIOS-WEO-PHIEUPH
-0x9A69	0xC24F	# HANGUL SYLLABLE SIOS-WEO-HIEUH
-0x9A6A	0xC252	# HANGUL SYLLABLE SIOS-WE-SSANGKIYEOK
-0x9A6B	0xC253	# HANGUL SYLLABLE SIOS-WE-KIYEOKSIOS
-0x9A6C	0xC255	# HANGUL SYLLABLE SIOS-WE-NIEUNCIEUC
-0x9A6D	0xC256	# HANGUL SYLLABLE SIOS-WE-NIEUNHIEUH
-0x9A6E	0xC257	# HANGUL SYLLABLE SIOS-WE-TIKEUT
-0x9A6F	0xC259	# HANGUL SYLLABLE SIOS-WE-RIEULKIYEOK
-0x9A70	0xC25A	# HANGUL SYLLABLE SIOS-WE-RIEULMIEUM
-0x9A71	0xC25B	# HANGUL SYLLABLE SIOS-WE-RIEULPIEUP
-0x9A72	0xC25C	# HANGUL SYLLABLE SIOS-WE-RIEULSIOS
-0x9A73	0xC25D	# HANGUL SYLLABLE SIOS-WE-RIEULTHIEUTH
-0x9A74	0xC25E	# HANGUL SYLLABLE SIOS-WE-RIEULPHIEUPH
-0x9A75	0xC25F	# HANGUL SYLLABLE SIOS-WE-RIEULHIEUH
-0x9A76	0xC261	# HANGUL SYLLABLE SIOS-WE-PIEUP
-0x9A77	0xC262	# HANGUL SYLLABLE SIOS-WE-PIEUPSIOS
-0x9A78	0xC263	# HANGUL SYLLABLE SIOS-WE-SIOS
-0x9A79	0xC264	# HANGUL SYLLABLE SIOS-WE-SSANGSIOS
-0x9A7A	0xC266	# HANGUL SYLLABLE SIOS-WE-CIEUC
-0x9A81	0xC267	# HANGUL SYLLABLE SIOS-WE-CHIEUCH
-0x9A82	0xC268	# HANGUL SYLLABLE SIOS-WE-KHIEUKH
-0x9A83	0xC269	# HANGUL SYLLABLE SIOS-WE-THIEUTH
-0x9A84	0xC26A	# HANGUL SYLLABLE SIOS-WE-PHIEUPH
-0x9A85	0xC26B	# HANGUL SYLLABLE SIOS-WE-HIEUH
-0x9A86	0xC26E	# HANGUL SYLLABLE SIOS-WI-SSANGKIYEOK
-0x9A87	0xC26F	# HANGUL SYLLABLE SIOS-WI-KIYEOKSIOS
-0x9A88	0xC271	# HANGUL SYLLABLE SIOS-WI-NIEUNCIEUC
-0x9A89	0xC272	# HANGUL SYLLABLE SIOS-WI-NIEUNHIEUH
-0x9A8A	0xC273	# HANGUL SYLLABLE SIOS-WI-TIKEUT
-0x9A8B	0xC275	# HANGUL SYLLABLE SIOS-WI-RIEULKIYEOK
-0x9A8C	0xC276	# HANGUL SYLLABLE SIOS-WI-RIEULMIEUM
-0x9A8D	0xC277	# HANGUL SYLLABLE SIOS-WI-RIEULPIEUP
-0x9A8E	0xC278	# HANGUL SYLLABLE SIOS-WI-RIEULSIOS
-0x9A8F	0xC279	# HANGUL SYLLABLE SIOS-WI-RIEULTHIEUTH
-0x9A90	0xC27A	# HANGUL SYLLABLE SIOS-WI-RIEULPHIEUPH
-0x9A91	0xC27B	# HANGUL SYLLABLE SIOS-WI-RIEULHIEUH
-0x9A92	0xC27E	# HANGUL SYLLABLE SIOS-WI-PIEUPSIOS
-0x9A93	0xC280	# HANGUL SYLLABLE SIOS-WI-SSANGSIOS
-0x9A94	0xC282	# HANGUL SYLLABLE SIOS-WI-CIEUC
-0x9A95	0xC283	# HANGUL SYLLABLE SIOS-WI-CHIEUCH
-0x9A96	0xC284	# HANGUL SYLLABLE SIOS-WI-KHIEUKH
-0x9A97	0xC285	# HANGUL SYLLABLE SIOS-WI-THIEUTH
-0x9A98	0xC286	# HANGUL SYLLABLE SIOS-WI-PHIEUPH
-0x9A99	0xC287	# HANGUL SYLLABLE SIOS-WI-HIEUH
-0x9A9A	0xC28A	# HANGUL SYLLABLE SIOS-YU-SSANGKIYEOK
-0x9A9B	0xC28B	# HANGUL SYLLABLE SIOS-YU-KIYEOKSIOS
-0x9A9C	0xC28C	# HANGUL SYLLABLE SIOS-YU-NIEUN
-0x9A9D	0xC28D	# HANGUL SYLLABLE SIOS-YU-NIEUNCIEUC
-0x9A9E	0xC28E	# HANGUL SYLLABLE SIOS-YU-NIEUNHIEUH
-0x9A9F	0xC28F	# HANGUL SYLLABLE SIOS-YU-TIKEUT
-0x9AA0	0xC291	# HANGUL SYLLABLE SIOS-YU-RIEULKIYEOK
-0x9AA1	0xC292	# HANGUL SYLLABLE SIOS-YU-RIEULMIEUM
-0x9AA2	0xC293	# HANGUL SYLLABLE SIOS-YU-RIEULPIEUP
-0x9AA3	0xC294	# HANGUL SYLLABLE SIOS-YU-RIEULSIOS
-0x9AA4	0xC295	# HANGUL SYLLABLE SIOS-YU-RIEULTHIEUTH
-0x9AA5	0xC296	# HANGUL SYLLABLE SIOS-YU-RIEULPHIEUPH
-0x9AA6	0xC297	# HANGUL SYLLABLE SIOS-YU-RIEULHIEUH
-0x9AA7	0xC299	# HANGUL SYLLABLE SIOS-YU-PIEUP
-0x9AA8	0xC29A	# HANGUL SYLLABLE SIOS-YU-PIEUPSIOS
-0x9AA9	0xC29C	# HANGUL SYLLABLE SIOS-YU-SSANGSIOS
-0x9AAA	0xC29E	# HANGUL SYLLABLE SIOS-YU-CIEUC
-0x9AAB	0xC29F	# HANGUL SYLLABLE SIOS-YU-CHIEUCH
-0x9AAC	0xC2A0	# HANGUL SYLLABLE SIOS-YU-KHIEUKH
-0x9AAD	0xC2A1	# HANGUL SYLLABLE SIOS-YU-THIEUTH
-0x9AAE	0xC2A2	# HANGUL SYLLABLE SIOS-YU-PHIEUPH
-0x9AAF	0xC2A3	# HANGUL SYLLABLE SIOS-YU-HIEUH
-0x9AB0	0xC2A6	# HANGUL SYLLABLE SIOS-EU-SSANGKIYEOK
-0x9AB1	0xC2A7	# HANGUL SYLLABLE SIOS-EU-KIYEOKSIOS
-0x9AB2	0xC2A9	# HANGUL SYLLABLE SIOS-EU-NIEUNCIEUC
-0x9AB3	0xC2AA	# HANGUL SYLLABLE SIOS-EU-NIEUNHIEUH
-0x9AB4	0xC2AB	# HANGUL SYLLABLE SIOS-EU-TIKEUT
-0x9AB5	0xC2AE	# HANGUL SYLLABLE SIOS-EU-RIEULMIEUM
-0x9AB6	0xC2AF	# HANGUL SYLLABLE SIOS-EU-RIEULPIEUP
-0x9AB7	0xC2B0	# HANGUL SYLLABLE SIOS-EU-RIEULSIOS
-0x9AB8	0xC2B1	# HANGUL SYLLABLE SIOS-EU-RIEULTHIEUTH
-0x9AB9	0xC2B2	# HANGUL SYLLABLE SIOS-EU-RIEULPHIEUPH
-0x9ABA	0xC2B3	# HANGUL SYLLABLE SIOS-EU-RIEULHIEUH
-0x9ABB	0xC2B6	# HANGUL SYLLABLE SIOS-EU-PIEUPSIOS
-0x9ABC	0xC2B8	# HANGUL SYLLABLE SIOS-EU-SSANGSIOS
-0x9ABD	0xC2BA	# HANGUL SYLLABLE SIOS-EU-CIEUC
-0x9ABE	0xC2BB	# HANGUL SYLLABLE SIOS-EU-CHIEUCH
-0x9ABF	0xC2BC	# HANGUL SYLLABLE SIOS-EU-KHIEUKH
-0x9AC0	0xC2BD	# HANGUL SYLLABLE SIOS-EU-THIEUTH
-0x9AC1	0xC2BE	# HANGUL SYLLABLE SIOS-EU-PHIEUPH
-0x9AC2	0xC2BF	# HANGUL SYLLABLE SIOS-EU-HIEUH
-0x9AC3	0xC2C0	# HANGUL SYLLABLE SIOS-YI
-0x9AC4	0xC2C1	# HANGUL SYLLABLE SIOS-YI-KIYEOK
-0x9AC5	0xC2C2	# HANGUL SYLLABLE SIOS-YI-SSANGKIYEOK
-0x9AC6	0xC2C3	# HANGUL SYLLABLE SIOS-YI-KIYEOKSIOS
-0x9AC7	0xC2C4	# HANGUL SYLLABLE SIOS-YI-NIEUN
-0x9AC8	0xC2C5	# HANGUL SYLLABLE SIOS-YI-NIEUNCIEUC
-0x9AC9	0xC2C6	# HANGUL SYLLABLE SIOS-YI-NIEUNHIEUH
-0x9ACA	0xC2C7	# HANGUL SYLLABLE SIOS-YI-TIKEUT
-0x9ACB	0xC2C8	# HANGUL SYLLABLE SIOS-YI-RIEUL
-0x9ACC	0xC2C9	# HANGUL SYLLABLE SIOS-YI-RIEULKIYEOK
-0x9ACD	0xC2CA	# HANGUL SYLLABLE SIOS-YI-RIEULMIEUM
-0x9ACE	0xC2CB	# HANGUL SYLLABLE SIOS-YI-RIEULPIEUP
-0x9ACF	0xC2CC	# HANGUL SYLLABLE SIOS-YI-RIEULSIOS
-0x9AD0	0xC2CD	# HANGUL SYLLABLE SIOS-YI-RIEULTHIEUTH
-0x9AD1	0xC2CE	# HANGUL SYLLABLE SIOS-YI-RIEULPHIEUPH
-0x9AD2	0xC2CF	# HANGUL SYLLABLE SIOS-YI-RIEULHIEUH
-0x9AD3	0xC2D0	# HANGUL SYLLABLE SIOS-YI-MIEUM
-0x9AD4	0xC2D1	# HANGUL SYLLABLE SIOS-YI-PIEUP
-0x9AD5	0xC2D2	# HANGUL SYLLABLE SIOS-YI-PIEUPSIOS
-0x9AD6	0xC2D3	# HANGUL SYLLABLE SIOS-YI-SIOS
-0x9AD7	0xC2D4	# HANGUL SYLLABLE SIOS-YI-SSANGSIOS
-0x9AD8	0xC2D5	# HANGUL SYLLABLE SIOS-YI-IEUNG
-0x9AD9	0xC2D6	# HANGUL SYLLABLE SIOS-YI-CIEUC
-0x9ADA	0xC2D7	# HANGUL SYLLABLE SIOS-YI-CHIEUCH
-0x9ADB	0xC2D8	# HANGUL SYLLABLE SIOS-YI-KHIEUKH
-0x9ADC	0xC2D9	# HANGUL SYLLABLE SIOS-YI-THIEUTH
-0x9ADD	0xC2DA	# HANGUL SYLLABLE SIOS-YI-PHIEUPH
-0x9ADE	0xC2DB	# HANGUL SYLLABLE SIOS-YI-HIEUH
-0x9ADF	0xC2DE	# HANGUL SYLLABLE SIOS-I-SSANGKIYEOK
-0x9AE0	0xC2DF	# HANGUL SYLLABLE SIOS-I-KIYEOKSIOS
-0x9AE1	0xC2E1	# HANGUL SYLLABLE SIOS-I-NIEUNCIEUC
-0x9AE2	0xC2E2	# HANGUL SYLLABLE SIOS-I-NIEUNHIEUH
-0x9AE3	0xC2E5	# HANGUL SYLLABLE SIOS-I-RIEULKIYEOK
-0x9AE4	0xC2E6	# HANGUL SYLLABLE SIOS-I-RIEULMIEUM
-0x9AE5	0xC2E7	# HANGUL SYLLABLE SIOS-I-RIEULPIEUP
-0x9AE6	0xC2E8	# HANGUL SYLLABLE SIOS-I-RIEULSIOS
-0x9AE7	0xC2E9	# HANGUL SYLLABLE SIOS-I-RIEULTHIEUTH
-0x9AE8	0xC2EA	# HANGUL SYLLABLE SIOS-I-RIEULPHIEUPH
-0x9AE9	0xC2EE	# HANGUL SYLLABLE SIOS-I-PIEUPSIOS
-0x9AEA	0xC2F0	# HANGUL SYLLABLE SIOS-I-SSANGSIOS
-0x9AEB	0xC2F2	# HANGUL SYLLABLE SIOS-I-CIEUC
-0x9AEC	0xC2F3	# HANGUL SYLLABLE SIOS-I-CHIEUCH
-0x9AED	0xC2F4	# HANGUL SYLLABLE SIOS-I-KHIEUKH
-0x9AEE	0xC2F5	# HANGUL SYLLABLE SIOS-I-THIEUTH
-0x9AEF	0xC2F7	# HANGUL SYLLABLE SIOS-I-HIEUH
-0x9AF0	0xC2FA	# HANGUL SYLLABLE SSANGSIOS-A-SSANGKIYEOK
-0x9AF1	0xC2FD	# HANGUL SYLLABLE SSANGSIOS-A-NIEUNCIEUC
-0x9AF2	0xC2FE	# HANGUL SYLLABLE SSANGSIOS-A-NIEUNHIEUH
-0x9AF3	0xC2FF	# HANGUL SYLLABLE SSANGSIOS-A-TIKEUT
-0x9AF4	0xC301	# HANGUL SYLLABLE SSANGSIOS-A-RIEULKIYEOK
-0x9AF5	0xC302	# HANGUL SYLLABLE SSANGSIOS-A-RIEULMIEUM
-0x9AF6	0xC303	# HANGUL SYLLABLE SSANGSIOS-A-RIEULPIEUP
-0x9AF7	0xC304	# HANGUL SYLLABLE SSANGSIOS-A-RIEULSIOS
-0x9AF8	0xC305	# HANGUL SYLLABLE SSANGSIOS-A-RIEULTHIEUTH
-0x9AF9	0xC306	# HANGUL SYLLABLE SSANGSIOS-A-RIEULPHIEUPH
-0x9AFA	0xC307	# HANGUL SYLLABLE SSANGSIOS-A-RIEULHIEUH
-0x9AFB	0xC30A	# HANGUL SYLLABLE SSANGSIOS-A-PIEUPSIOS
-0x9AFC	0xC30B	# HANGUL SYLLABLE SSANGSIOS-A-SIOS
-0x9AFD	0xC30E	# HANGUL SYLLABLE SSANGSIOS-A-CIEUC
-0x9AFE	0xC30F	# HANGUL SYLLABLE SSANGSIOS-A-CHIEUCH
-0x9B41	0xC310	# HANGUL SYLLABLE SSANGSIOS-A-KHIEUKH
-0x9B42	0xC311	# HANGUL SYLLABLE SSANGSIOS-A-THIEUTH
-0x9B43	0xC312	# HANGUL SYLLABLE SSANGSIOS-A-PHIEUPH
-0x9B44	0xC316	# HANGUL SYLLABLE SSANGSIOS-AE-SSANGKIYEOK
-0x9B45	0xC317	# HANGUL SYLLABLE SSANGSIOS-AE-KIYEOKSIOS
-0x9B46	0xC319	# HANGUL SYLLABLE SSANGSIOS-AE-NIEUNCIEUC
-0x9B47	0xC31A	# HANGUL SYLLABLE SSANGSIOS-AE-NIEUNHIEUH
-0x9B48	0xC31B	# HANGUL SYLLABLE SSANGSIOS-AE-TIKEUT
-0x9B49	0xC31D	# HANGUL SYLLABLE SSANGSIOS-AE-RIEULKIYEOK
-0x9B4A	0xC31E	# HANGUL SYLLABLE SSANGSIOS-AE-RIEULMIEUM
-0x9B4B	0xC31F	# HANGUL SYLLABLE SSANGSIOS-AE-RIEULPIEUP
-0x9B4C	0xC320	# HANGUL SYLLABLE SSANGSIOS-AE-RIEULSIOS
-0x9B4D	0xC321	# HANGUL SYLLABLE SSANGSIOS-AE-RIEULTHIEUTH
-0x9B4E	0xC322	# HANGUL SYLLABLE SSANGSIOS-AE-RIEULPHIEUPH
-0x9B4F	0xC323	# HANGUL SYLLABLE SSANGSIOS-AE-RIEULHIEUH
-0x9B50	0xC326	# HANGUL SYLLABLE SSANGSIOS-AE-PIEUPSIOS
-0x9B51	0xC327	# HANGUL SYLLABLE SSANGSIOS-AE-SIOS
-0x9B52	0xC32A	# HANGUL SYLLABLE SSANGSIOS-AE-CIEUC
-0x9B53	0xC32B	# HANGUL SYLLABLE SSANGSIOS-AE-CHIEUCH
-0x9B54	0xC32C	# HANGUL SYLLABLE SSANGSIOS-AE-KHIEUKH
-0x9B55	0xC32D	# HANGUL SYLLABLE SSANGSIOS-AE-THIEUTH
-0x9B56	0xC32E	# HANGUL SYLLABLE SSANGSIOS-AE-PHIEUPH
-0x9B57	0xC32F	# HANGUL SYLLABLE SSANGSIOS-AE-HIEUH
-0x9B58	0xC330	# HANGUL SYLLABLE SSANGSIOS-YA
-0x9B59	0xC331	# HANGUL SYLLABLE SSANGSIOS-YA-KIYEOK
-0x9B5A	0xC332	# HANGUL SYLLABLE SSANGSIOS-YA-SSANGKIYEOK
-0x9B61	0xC333	# HANGUL SYLLABLE SSANGSIOS-YA-KIYEOKSIOS
-0x9B62	0xC334	# HANGUL SYLLABLE SSANGSIOS-YA-NIEUN
-0x9B63	0xC335	# HANGUL SYLLABLE SSANGSIOS-YA-NIEUNCIEUC
-0x9B64	0xC336	# HANGUL SYLLABLE SSANGSIOS-YA-NIEUNHIEUH
-0x9B65	0xC337	# HANGUL SYLLABLE SSANGSIOS-YA-TIKEUT
-0x9B66	0xC338	# HANGUL SYLLABLE SSANGSIOS-YA-RIEUL
-0x9B67	0xC339	# HANGUL SYLLABLE SSANGSIOS-YA-RIEULKIYEOK
-0x9B68	0xC33A	# HANGUL SYLLABLE SSANGSIOS-YA-RIEULMIEUM
-0x9B69	0xC33B	# HANGUL SYLLABLE SSANGSIOS-YA-RIEULPIEUP
-0x9B6A	0xC33C	# HANGUL SYLLABLE SSANGSIOS-YA-RIEULSIOS
-0x9B6B	0xC33D	# HANGUL SYLLABLE SSANGSIOS-YA-RIEULTHIEUTH
-0x9B6C	0xC33E	# HANGUL SYLLABLE SSANGSIOS-YA-RIEULPHIEUPH
-0x9B6D	0xC33F	# HANGUL SYLLABLE SSANGSIOS-YA-RIEULHIEUH
-0x9B6E	0xC340	# HANGUL SYLLABLE SSANGSIOS-YA-MIEUM
-0x9B6F	0xC341	# HANGUL SYLLABLE SSANGSIOS-YA-PIEUP
-0x9B70	0xC342	# HANGUL SYLLABLE SSANGSIOS-YA-PIEUPSIOS
-0x9B71	0xC343	# HANGUL SYLLABLE SSANGSIOS-YA-SIOS
-0x9B72	0xC344	# HANGUL SYLLABLE SSANGSIOS-YA-SSANGSIOS
-0x9B73	0xC346	# HANGUL SYLLABLE SSANGSIOS-YA-CIEUC
-0x9B74	0xC347	# HANGUL SYLLABLE SSANGSIOS-YA-CHIEUCH
-0x9B75	0xC348	# HANGUL SYLLABLE SSANGSIOS-YA-KHIEUKH
-0x9B76	0xC349	# HANGUL SYLLABLE SSANGSIOS-YA-THIEUTH
-0x9B77	0xC34A	# HANGUL SYLLABLE SSANGSIOS-YA-PHIEUPH
-0x9B78	0xC34B	# HANGUL SYLLABLE SSANGSIOS-YA-HIEUH
-0x9B79	0xC34C	# HANGUL SYLLABLE SSANGSIOS-YAE
-0x9B7A	0xC34D	# HANGUL SYLLABLE SSANGSIOS-YAE-KIYEOK
-0x9B81	0xC34E	# HANGUL SYLLABLE SSANGSIOS-YAE-SSANGKIYEOK
-0x9B82	0xC34F	# HANGUL SYLLABLE SSANGSIOS-YAE-KIYEOKSIOS
-0x9B83	0xC350	# HANGUL SYLLABLE SSANGSIOS-YAE-NIEUN
-0x9B84	0xC351	# HANGUL SYLLABLE SSANGSIOS-YAE-NIEUNCIEUC
-0x9B85	0xC352	# HANGUL SYLLABLE SSANGSIOS-YAE-NIEUNHIEUH
-0x9B86	0xC353	# HANGUL SYLLABLE SSANGSIOS-YAE-TIKEUT
-0x9B87	0xC354	# HANGUL SYLLABLE SSANGSIOS-YAE-RIEUL
-0x9B88	0xC355	# HANGUL SYLLABLE SSANGSIOS-YAE-RIEULKIYEOK
-0x9B89	0xC356	# HANGUL SYLLABLE SSANGSIOS-YAE-RIEULMIEUM
-0x9B8A	0xC357	# HANGUL SYLLABLE SSANGSIOS-YAE-RIEULPIEUP
-0x9B8B	0xC358	# HANGUL SYLLABLE SSANGSIOS-YAE-RIEULSIOS
-0x9B8C	0xC359	# HANGUL SYLLABLE SSANGSIOS-YAE-RIEULTHIEUTH
-0x9B8D	0xC35A	# HANGUL SYLLABLE SSANGSIOS-YAE-RIEULPHIEUPH
-0x9B8E	0xC35B	# HANGUL SYLLABLE SSANGSIOS-YAE-RIEULHIEUH
-0x9B8F	0xC35C	# HANGUL SYLLABLE SSANGSIOS-YAE-MIEUM
-0x9B90	0xC35D	# HANGUL SYLLABLE SSANGSIOS-YAE-PIEUP
-0x9B91	0xC35E	# HANGUL SYLLABLE SSANGSIOS-YAE-PIEUPSIOS
-0x9B92	0xC35F	# HANGUL SYLLABLE SSANGSIOS-YAE-SIOS
-0x9B93	0xC360	# HANGUL SYLLABLE SSANGSIOS-YAE-SSANGSIOS
-0x9B94	0xC361	# HANGUL SYLLABLE SSANGSIOS-YAE-IEUNG
-0x9B95	0xC362	# HANGUL SYLLABLE SSANGSIOS-YAE-CIEUC
-0x9B96	0xC363	# HANGUL SYLLABLE SSANGSIOS-YAE-CHIEUCH
-0x9B97	0xC364	# HANGUL SYLLABLE SSANGSIOS-YAE-KHIEUKH
-0x9B98	0xC365	# HANGUL SYLLABLE SSANGSIOS-YAE-THIEUTH
-0x9B99	0xC366	# HANGUL SYLLABLE SSANGSIOS-YAE-PHIEUPH
-0x9B9A	0xC367	# HANGUL SYLLABLE SSANGSIOS-YAE-HIEUH
-0x9B9B	0xC36A	# HANGUL SYLLABLE SSANGSIOS-EO-SSANGKIYEOK
-0x9B9C	0xC36B	# HANGUL SYLLABLE SSANGSIOS-EO-KIYEOKSIOS
-0x9B9D	0xC36D	# HANGUL SYLLABLE SSANGSIOS-EO-NIEUNCIEUC
-0x9B9E	0xC36E	# HANGUL SYLLABLE SSANGSIOS-EO-NIEUNHIEUH
-0x9B9F	0xC36F	# HANGUL SYLLABLE SSANGSIOS-EO-TIKEUT
-0x9BA0	0xC371	# HANGUL SYLLABLE SSANGSIOS-EO-RIEULKIYEOK
-0x9BA1	0xC373	# HANGUL SYLLABLE SSANGSIOS-EO-RIEULPIEUP
-0x9BA2	0xC374	# HANGUL SYLLABLE SSANGSIOS-EO-RIEULSIOS
-0x9BA3	0xC375	# HANGUL SYLLABLE SSANGSIOS-EO-RIEULTHIEUTH
-0x9BA4	0xC376	# HANGUL SYLLABLE SSANGSIOS-EO-RIEULPHIEUPH
-0x9BA5	0xC377	# HANGUL SYLLABLE SSANGSIOS-EO-RIEULHIEUH
-0x9BA6	0xC37A	# HANGUL SYLLABLE SSANGSIOS-EO-PIEUPSIOS
-0x9BA7	0xC37B	# HANGUL SYLLABLE SSANGSIOS-EO-SIOS
-0x9BA8	0xC37E	# HANGUL SYLLABLE SSANGSIOS-EO-CIEUC
-0x9BA9	0xC37F	# HANGUL SYLLABLE SSANGSIOS-EO-CHIEUCH
-0x9BAA	0xC380	# HANGUL SYLLABLE SSANGSIOS-EO-KHIEUKH
-0x9BAB	0xC381	# HANGUL SYLLABLE SSANGSIOS-EO-THIEUTH
-0x9BAC	0xC382	# HANGUL SYLLABLE SSANGSIOS-EO-PHIEUPH
-0x9BAD	0xC383	# HANGUL SYLLABLE SSANGSIOS-EO-HIEUH
-0x9BAE	0xC385	# HANGUL SYLLABLE SSANGSIOS-E-KIYEOK
-0x9BAF	0xC386	# HANGUL SYLLABLE SSANGSIOS-E-SSANGKIYEOK
-0x9BB0	0xC387	# HANGUL SYLLABLE SSANGSIOS-E-KIYEOKSIOS
-0x9BB1	0xC389	# HANGUL SYLLABLE SSANGSIOS-E-NIEUNCIEUC
-0x9BB2	0xC38A	# HANGUL SYLLABLE SSANGSIOS-E-NIEUNHIEUH
-0x9BB3	0xC38B	# HANGUL SYLLABLE SSANGSIOS-E-TIKEUT
-0x9BB4	0xC38D	# HANGUL SYLLABLE SSANGSIOS-E-RIEULKIYEOK
-0x9BB5	0xC38E	# HANGUL SYLLABLE SSANGSIOS-E-RIEULMIEUM
-0x9BB6	0xC38F	# HANGUL SYLLABLE SSANGSIOS-E-RIEULPIEUP
-0x9BB7	0xC390	# HANGUL SYLLABLE SSANGSIOS-E-RIEULSIOS
-0x9BB8	0xC391	# HANGUL SYLLABLE SSANGSIOS-E-RIEULTHIEUTH
-0x9BB9	0xC392	# HANGUL SYLLABLE SSANGSIOS-E-RIEULPHIEUPH
-0x9BBA	0xC393	# HANGUL SYLLABLE SSANGSIOS-E-RIEULHIEUH
-0x9BBB	0xC394	# HANGUL SYLLABLE SSANGSIOS-E-MIEUM
-0x9BBC	0xC395	# HANGUL SYLLABLE SSANGSIOS-E-PIEUP
-0x9BBD	0xC396	# HANGUL SYLLABLE SSANGSIOS-E-PIEUPSIOS
-0x9BBE	0xC397	# HANGUL SYLLABLE SSANGSIOS-E-SIOS
-0x9BBF	0xC398	# HANGUL SYLLABLE SSANGSIOS-E-SSANGSIOS
-0x9BC0	0xC399	# HANGUL SYLLABLE SSANGSIOS-E-IEUNG
-0x9BC1	0xC39A	# HANGUL SYLLABLE SSANGSIOS-E-CIEUC
-0x9BC2	0xC39B	# HANGUL SYLLABLE SSANGSIOS-E-CHIEUCH
-0x9BC3	0xC39C	# HANGUL SYLLABLE SSANGSIOS-E-KHIEUKH
-0x9BC4	0xC39D	# HANGUL SYLLABLE SSANGSIOS-E-THIEUTH
-0x9BC5	0xC39E	# HANGUL SYLLABLE SSANGSIOS-E-PHIEUPH
-0x9BC6	0xC39F	# HANGUL SYLLABLE SSANGSIOS-E-HIEUH
-0x9BC7	0xC3A0	# HANGUL SYLLABLE SSANGSIOS-YEO
-0x9BC8	0xC3A1	# HANGUL SYLLABLE SSANGSIOS-YEO-KIYEOK
-0x9BC9	0xC3A2	# HANGUL SYLLABLE SSANGSIOS-YEO-SSANGKIYEOK
-0x9BCA	0xC3A3	# HANGUL SYLLABLE SSANGSIOS-YEO-KIYEOKSIOS
-0x9BCB	0xC3A4	# HANGUL SYLLABLE SSANGSIOS-YEO-NIEUN
-0x9BCC	0xC3A5	# HANGUL SYLLABLE SSANGSIOS-YEO-NIEUNCIEUC
-0x9BCD	0xC3A6	# HANGUL SYLLABLE SSANGSIOS-YEO-NIEUNHIEUH
-0x9BCE	0xC3A7	# HANGUL SYLLABLE SSANGSIOS-YEO-TIKEUT
-0x9BCF	0xC3A8	# HANGUL SYLLABLE SSANGSIOS-YEO-RIEUL
-0x9BD0	0xC3A9	# HANGUL SYLLABLE SSANGSIOS-YEO-RIEULKIYEOK
-0x9BD1	0xC3AA	# HANGUL SYLLABLE SSANGSIOS-YEO-RIEULMIEUM
-0x9BD2	0xC3AB	# HANGUL SYLLABLE SSANGSIOS-YEO-RIEULPIEUP
-0x9BD3	0xC3AC	# HANGUL SYLLABLE SSANGSIOS-YEO-RIEULSIOS
-0x9BD4	0xC3AD	# HANGUL SYLLABLE SSANGSIOS-YEO-RIEULTHIEUTH
-0x9BD5	0xC3AE	# HANGUL SYLLABLE SSANGSIOS-YEO-RIEULPHIEUPH
-0x9BD6	0xC3AF	# HANGUL SYLLABLE SSANGSIOS-YEO-RIEULHIEUH
-0x9BD7	0xC3B0	# HANGUL SYLLABLE SSANGSIOS-YEO-MIEUM
-0x9BD8	0xC3B1	# HANGUL SYLLABLE SSANGSIOS-YEO-PIEUP
-0x9BD9	0xC3B2	# HANGUL SYLLABLE SSANGSIOS-YEO-PIEUPSIOS
-0x9BDA	0xC3B3	# HANGUL SYLLABLE SSANGSIOS-YEO-SIOS
-0x9BDB	0xC3B4	# HANGUL SYLLABLE SSANGSIOS-YEO-SSANGSIOS
-0x9BDC	0xC3B5	# HANGUL SYLLABLE SSANGSIOS-YEO-IEUNG
-0x9BDD	0xC3B6	# HANGUL SYLLABLE SSANGSIOS-YEO-CIEUC
-0x9BDE	0xC3B7	# HANGUL SYLLABLE SSANGSIOS-YEO-CHIEUCH
-0x9BDF	0xC3B8	# HANGUL SYLLABLE SSANGSIOS-YEO-KHIEUKH
-0x9BE0	0xC3B9	# HANGUL SYLLABLE SSANGSIOS-YEO-THIEUTH
-0x9BE1	0xC3BA	# HANGUL SYLLABLE SSANGSIOS-YEO-PHIEUPH
-0x9BE2	0xC3BB	# HANGUL SYLLABLE SSANGSIOS-YEO-HIEUH
-0x9BE3	0xC3BC	# HANGUL SYLLABLE SSANGSIOS-YE
-0x9BE4	0xC3BD	# HANGUL SYLLABLE SSANGSIOS-YE-KIYEOK
-0x9BE5	0xC3BE	# HANGUL SYLLABLE SSANGSIOS-YE-SSANGKIYEOK
-0x9BE6	0xC3BF	# HANGUL SYLLABLE SSANGSIOS-YE-KIYEOKSIOS
-0x9BE7	0xC3C1	# HANGUL SYLLABLE SSANGSIOS-YE-NIEUNCIEUC
-0x9BE8	0xC3C2	# HANGUL SYLLABLE SSANGSIOS-YE-NIEUNHIEUH
-0x9BE9	0xC3C3	# HANGUL SYLLABLE SSANGSIOS-YE-TIKEUT
-0x9BEA	0xC3C4	# HANGUL SYLLABLE SSANGSIOS-YE-RIEUL
-0x9BEB	0xC3C5	# HANGUL SYLLABLE SSANGSIOS-YE-RIEULKIYEOK
-0x9BEC	0xC3C6	# HANGUL SYLLABLE SSANGSIOS-YE-RIEULMIEUM
-0x9BED	0xC3C7	# HANGUL SYLLABLE SSANGSIOS-YE-RIEULPIEUP
-0x9BEE	0xC3C8	# HANGUL SYLLABLE SSANGSIOS-YE-RIEULSIOS
-0x9BEF	0xC3C9	# HANGUL SYLLABLE SSANGSIOS-YE-RIEULTHIEUTH
-0x9BF0	0xC3CA	# HANGUL SYLLABLE SSANGSIOS-YE-RIEULPHIEUPH
-0x9BF1	0xC3CB	# HANGUL SYLLABLE SSANGSIOS-YE-RIEULHIEUH
-0x9BF2	0xC3CC	# HANGUL SYLLABLE SSANGSIOS-YE-MIEUM
-0x9BF3	0xC3CD	# HANGUL SYLLABLE SSANGSIOS-YE-PIEUP
-0x9BF4	0xC3CE	# HANGUL SYLLABLE SSANGSIOS-YE-PIEUPSIOS
-0x9BF5	0xC3CF	# HANGUL SYLLABLE SSANGSIOS-YE-SIOS
-0x9BF6	0xC3D0	# HANGUL SYLLABLE SSANGSIOS-YE-SSANGSIOS
-0x9BF7	0xC3D1	# HANGUL SYLLABLE SSANGSIOS-YE-IEUNG
-0x9BF8	0xC3D2	# HANGUL SYLLABLE SSANGSIOS-YE-CIEUC
-0x9BF9	0xC3D3	# HANGUL SYLLABLE SSANGSIOS-YE-CHIEUCH
-0x9BFA	0xC3D4	# HANGUL SYLLABLE SSANGSIOS-YE-KHIEUKH
-0x9BFB	0xC3D5	# HANGUL SYLLABLE SSANGSIOS-YE-THIEUTH
-0x9BFC	0xC3D6	# HANGUL SYLLABLE SSANGSIOS-YE-PHIEUPH
-0x9BFD	0xC3D7	# HANGUL SYLLABLE SSANGSIOS-YE-HIEUH
-0x9BFE	0xC3DA	# HANGUL SYLLABLE SSANGSIOS-O-SSANGKIYEOK
-0x9C41	0xC3DB	# HANGUL SYLLABLE SSANGSIOS-O-KIYEOKSIOS
-0x9C42	0xC3DD	# HANGUL SYLLABLE SSANGSIOS-O-NIEUNCIEUC
-0x9C43	0xC3DE	# HANGUL SYLLABLE SSANGSIOS-O-NIEUNHIEUH
-0x9C44	0xC3E1	# HANGUL SYLLABLE SSANGSIOS-O-RIEULKIYEOK
-0x9C45	0xC3E3	# HANGUL SYLLABLE SSANGSIOS-O-RIEULPIEUP
-0x9C46	0xC3E4	# HANGUL SYLLABLE SSANGSIOS-O-RIEULSIOS
-0x9C47	0xC3E5	# HANGUL SYLLABLE SSANGSIOS-O-RIEULTHIEUTH
-0x9C48	0xC3E6	# HANGUL SYLLABLE SSANGSIOS-O-RIEULPHIEUPH
-0x9C49	0xC3E7	# HANGUL SYLLABLE SSANGSIOS-O-RIEULHIEUH
-0x9C4A	0xC3EA	# HANGUL SYLLABLE SSANGSIOS-O-PIEUPSIOS
-0x9C4B	0xC3EB	# HANGUL SYLLABLE SSANGSIOS-O-SIOS
-0x9C4C	0xC3EC	# HANGUL SYLLABLE SSANGSIOS-O-SSANGSIOS
-0x9C4D	0xC3EE	# HANGUL SYLLABLE SSANGSIOS-O-CIEUC
-0x9C4E	0xC3EF	# HANGUL SYLLABLE SSANGSIOS-O-CHIEUCH
-0x9C4F	0xC3F0	# HANGUL SYLLABLE SSANGSIOS-O-KHIEUKH
-0x9C50	0xC3F1	# HANGUL SYLLABLE SSANGSIOS-O-THIEUTH
-0x9C51	0xC3F2	# HANGUL SYLLABLE SSANGSIOS-O-PHIEUPH
-0x9C52	0xC3F3	# HANGUL SYLLABLE SSANGSIOS-O-HIEUH
-0x9C53	0xC3F6	# HANGUL SYLLABLE SSANGSIOS-WA-SSANGKIYEOK
-0x9C54	0xC3F7	# HANGUL SYLLABLE SSANGSIOS-WA-KIYEOKSIOS
-0x9C55	0xC3F9	# HANGUL SYLLABLE SSANGSIOS-WA-NIEUNCIEUC
-0x9C56	0xC3FA	# HANGUL SYLLABLE SSANGSIOS-WA-NIEUNHIEUH
-0x9C57	0xC3FB	# HANGUL SYLLABLE SSANGSIOS-WA-TIKEUT
-0x9C58	0xC3FC	# HANGUL SYLLABLE SSANGSIOS-WA-RIEUL
-0x9C59	0xC3FD	# HANGUL SYLLABLE SSANGSIOS-WA-RIEULKIYEOK
-0x9C5A	0xC3FE	# HANGUL SYLLABLE SSANGSIOS-WA-RIEULMIEUM
-0x9C61	0xC3FF	# HANGUL SYLLABLE SSANGSIOS-WA-RIEULPIEUP
-0x9C62	0xC400	# HANGUL SYLLABLE SSANGSIOS-WA-RIEULSIOS
-0x9C63	0xC401	# HANGUL SYLLABLE SSANGSIOS-WA-RIEULTHIEUTH
-0x9C64	0xC402	# HANGUL SYLLABLE SSANGSIOS-WA-RIEULPHIEUPH
-0x9C65	0xC403	# HANGUL SYLLABLE SSANGSIOS-WA-RIEULHIEUH
-0x9C66	0xC404	# HANGUL SYLLABLE SSANGSIOS-WA-MIEUM
-0x9C67	0xC405	# HANGUL SYLLABLE SSANGSIOS-WA-PIEUP
-0x9C68	0xC406	# HANGUL SYLLABLE SSANGSIOS-WA-PIEUPSIOS
-0x9C69	0xC407	# HANGUL SYLLABLE SSANGSIOS-WA-SIOS
-0x9C6A	0xC409	# HANGUL SYLLABLE SSANGSIOS-WA-IEUNG
-0x9C6B	0xC40A	# HANGUL SYLLABLE SSANGSIOS-WA-CIEUC
-0x9C6C	0xC40B	# HANGUL SYLLABLE SSANGSIOS-WA-CHIEUCH
-0x9C6D	0xC40C	# HANGUL SYLLABLE SSANGSIOS-WA-KHIEUKH
-0x9C6E	0xC40D	# HANGUL SYLLABLE SSANGSIOS-WA-THIEUTH
-0x9C6F	0xC40E	# HANGUL SYLLABLE SSANGSIOS-WA-PHIEUPH
-0x9C70	0xC40F	# HANGUL SYLLABLE SSANGSIOS-WA-HIEUH
-0x9C71	0xC411	# HANGUL SYLLABLE SSANGSIOS-WAE-KIYEOK
-0x9C72	0xC412	# HANGUL SYLLABLE SSANGSIOS-WAE-SSANGKIYEOK
-0x9C73	0xC413	# HANGUL SYLLABLE SSANGSIOS-WAE-KIYEOKSIOS
-0x9C74	0xC414	# HANGUL SYLLABLE SSANGSIOS-WAE-NIEUN
-0x9C75	0xC415	# HANGUL SYLLABLE SSANGSIOS-WAE-NIEUNCIEUC
-0x9C76	0xC416	# HANGUL SYLLABLE SSANGSIOS-WAE-NIEUNHIEUH
-0x9C77	0xC417	# HANGUL SYLLABLE SSANGSIOS-WAE-TIKEUT
-0x9C78	0xC418	# HANGUL SYLLABLE SSANGSIOS-WAE-RIEUL
-0x9C79	0xC419	# HANGUL SYLLABLE SSANGSIOS-WAE-RIEULKIYEOK
-0x9C7A	0xC41A	# HANGUL SYLLABLE SSANGSIOS-WAE-RIEULMIEUM
-0x9C81	0xC41B	# HANGUL SYLLABLE SSANGSIOS-WAE-RIEULPIEUP
-0x9C82	0xC41C	# HANGUL SYLLABLE SSANGSIOS-WAE-RIEULSIOS
-0x9C83	0xC41D	# HANGUL SYLLABLE SSANGSIOS-WAE-RIEULTHIEUTH
-0x9C84	0xC41E	# HANGUL SYLLABLE SSANGSIOS-WAE-RIEULPHIEUPH
-0x9C85	0xC41F	# HANGUL SYLLABLE SSANGSIOS-WAE-RIEULHIEUH
-0x9C86	0xC420	# HANGUL SYLLABLE SSANGSIOS-WAE-MIEUM
-0x9C87	0xC421	# HANGUL SYLLABLE SSANGSIOS-WAE-PIEUP
-0x9C88	0xC422	# HANGUL SYLLABLE SSANGSIOS-WAE-PIEUPSIOS
-0x9C89	0xC423	# HANGUL SYLLABLE SSANGSIOS-WAE-SIOS
-0x9C8A	0xC425	# HANGUL SYLLABLE SSANGSIOS-WAE-IEUNG
-0x9C8B	0xC426	# HANGUL SYLLABLE SSANGSIOS-WAE-CIEUC
-0x9C8C	0xC427	# HANGUL SYLLABLE SSANGSIOS-WAE-CHIEUCH
-0x9C8D	0xC428	# HANGUL SYLLABLE SSANGSIOS-WAE-KHIEUKH
-0x9C8E	0xC429	# HANGUL SYLLABLE SSANGSIOS-WAE-THIEUTH
-0x9C8F	0xC42A	# HANGUL SYLLABLE SSANGSIOS-WAE-PHIEUPH
-0x9C90	0xC42B	# HANGUL SYLLABLE SSANGSIOS-WAE-HIEUH
-0x9C91	0xC42D	# HANGUL SYLLABLE SSANGSIOS-OE-KIYEOK
-0x9C92	0xC42E	# HANGUL SYLLABLE SSANGSIOS-OE-SSANGKIYEOK
-0x9C93	0xC42F	# HANGUL SYLLABLE SSANGSIOS-OE-KIYEOKSIOS
-0x9C94	0xC431	# HANGUL SYLLABLE SSANGSIOS-OE-NIEUNCIEUC
-0x9C95	0xC432	# HANGUL SYLLABLE SSANGSIOS-OE-NIEUNHIEUH
-0x9C96	0xC433	# HANGUL SYLLABLE SSANGSIOS-OE-TIKEUT
-0x9C97	0xC435	# HANGUL SYLLABLE SSANGSIOS-OE-RIEULKIYEOK
-0x9C98	0xC436	# HANGUL SYLLABLE SSANGSIOS-OE-RIEULMIEUM
-0x9C99	0xC437	# HANGUL SYLLABLE SSANGSIOS-OE-RIEULPIEUP
-0x9C9A	0xC438	# HANGUL SYLLABLE SSANGSIOS-OE-RIEULSIOS
-0x9C9B	0xC439	# HANGUL SYLLABLE SSANGSIOS-OE-RIEULTHIEUTH
-0x9C9C	0xC43A	# HANGUL SYLLABLE SSANGSIOS-OE-RIEULPHIEUPH
-0x9C9D	0xC43B	# HANGUL SYLLABLE SSANGSIOS-OE-RIEULHIEUH
-0x9C9E	0xC43E	# HANGUL SYLLABLE SSANGSIOS-OE-PIEUPSIOS
-0x9C9F	0xC43F	# HANGUL SYLLABLE SSANGSIOS-OE-SIOS
-0x9CA0	0xC440	# HANGUL SYLLABLE SSANGSIOS-OE-SSANGSIOS
-0x9CA1	0xC441	# HANGUL SYLLABLE SSANGSIOS-OE-IEUNG
-0x9CA2	0xC442	# HANGUL SYLLABLE SSANGSIOS-OE-CIEUC
-0x9CA3	0xC443	# HANGUL SYLLABLE SSANGSIOS-OE-CHIEUCH
-0x9CA4	0xC444	# HANGUL SYLLABLE SSANGSIOS-OE-KHIEUKH
-0x9CA5	0xC445	# HANGUL SYLLABLE SSANGSIOS-OE-THIEUTH
-0x9CA6	0xC446	# HANGUL SYLLABLE SSANGSIOS-OE-PHIEUPH
-0x9CA7	0xC447	# HANGUL SYLLABLE SSANGSIOS-OE-HIEUH
-0x9CA8	0xC449	# HANGUL SYLLABLE SSANGSIOS-YO-KIYEOK
-0x9CA9	0xC44A	# HANGUL SYLLABLE SSANGSIOS-YO-SSANGKIYEOK
-0x9CAA	0xC44B	# HANGUL SYLLABLE SSANGSIOS-YO-KIYEOKSIOS
-0x9CAB	0xC44C	# HANGUL SYLLABLE SSANGSIOS-YO-NIEUN
-0x9CAC	0xC44D	# HANGUL SYLLABLE SSANGSIOS-YO-NIEUNCIEUC
-0x9CAD	0xC44E	# HANGUL SYLLABLE SSANGSIOS-YO-NIEUNHIEUH
-0x9CAE	0xC44F	# HANGUL SYLLABLE SSANGSIOS-YO-TIKEUT
-0x9CAF	0xC450	# HANGUL SYLLABLE SSANGSIOS-YO-RIEUL
-0x9CB0	0xC451	# HANGUL SYLLABLE SSANGSIOS-YO-RIEULKIYEOK
-0x9CB1	0xC452	# HANGUL SYLLABLE SSANGSIOS-YO-RIEULMIEUM
-0x9CB2	0xC453	# HANGUL SYLLABLE SSANGSIOS-YO-RIEULPIEUP
-0x9CB3	0xC454	# HANGUL SYLLABLE SSANGSIOS-YO-RIEULSIOS
-0x9CB4	0xC455	# HANGUL SYLLABLE SSANGSIOS-YO-RIEULTHIEUTH
-0x9CB5	0xC456	# HANGUL SYLLABLE SSANGSIOS-YO-RIEULPHIEUPH
-0x9CB6	0xC457	# HANGUL SYLLABLE SSANGSIOS-YO-RIEULHIEUH
-0x9CB7	0xC458	# HANGUL SYLLABLE SSANGSIOS-YO-MIEUM
-0x9CB8	0xC459	# HANGUL SYLLABLE SSANGSIOS-YO-PIEUP
-0x9CB9	0xC45A	# HANGUL SYLLABLE SSANGSIOS-YO-PIEUPSIOS
-0x9CBA	0xC45B	# HANGUL SYLLABLE SSANGSIOS-YO-SIOS
-0x9CBB	0xC45C	# HANGUL SYLLABLE SSANGSIOS-YO-SSANGSIOS
-0x9CBC	0xC45D	# HANGUL SYLLABLE SSANGSIOS-YO-IEUNG
-0x9CBD	0xC45E	# HANGUL SYLLABLE SSANGSIOS-YO-CIEUC
-0x9CBE	0xC45F	# HANGUL SYLLABLE SSANGSIOS-YO-CHIEUCH
-0x9CBF	0xC460	# HANGUL SYLLABLE SSANGSIOS-YO-KHIEUKH
-0x9CC0	0xC461	# HANGUL SYLLABLE SSANGSIOS-YO-THIEUTH
-0x9CC1	0xC462	# HANGUL SYLLABLE SSANGSIOS-YO-PHIEUPH
-0x9CC2	0xC463	# HANGUL SYLLABLE SSANGSIOS-YO-HIEUH
-0x9CC3	0xC466	# HANGUL SYLLABLE SSANGSIOS-U-SSANGKIYEOK
-0x9CC4	0xC467	# HANGUL SYLLABLE SSANGSIOS-U-KIYEOKSIOS
-0x9CC5	0xC469	# HANGUL SYLLABLE SSANGSIOS-U-NIEUNCIEUC
-0x9CC6	0xC46A	# HANGUL SYLLABLE SSANGSIOS-U-NIEUNHIEUH
-0x9CC7	0xC46B	# HANGUL SYLLABLE SSANGSIOS-U-TIKEUT
-0x9CC8	0xC46D	# HANGUL SYLLABLE SSANGSIOS-U-RIEULKIYEOK
-0x9CC9	0xC46E	# HANGUL SYLLABLE SSANGSIOS-U-RIEULMIEUM
-0x9CCA	0xC46F	# HANGUL SYLLABLE SSANGSIOS-U-RIEULPIEUP
-0x9CCB	0xC470	# HANGUL SYLLABLE SSANGSIOS-U-RIEULSIOS
-0x9CCC	0xC471	# HANGUL SYLLABLE SSANGSIOS-U-RIEULTHIEUTH
-0x9CCD	0xC472	# HANGUL SYLLABLE SSANGSIOS-U-RIEULPHIEUPH
-0x9CCE	0xC473	# HANGUL SYLLABLE SSANGSIOS-U-RIEULHIEUH
-0x9CCF	0xC476	# HANGUL SYLLABLE SSANGSIOS-U-PIEUPSIOS
-0x9CD0	0xC477	# HANGUL SYLLABLE SSANGSIOS-U-SIOS
-0x9CD1	0xC478	# HANGUL SYLLABLE SSANGSIOS-U-SSANGSIOS
-0x9CD2	0xC47A	# HANGUL SYLLABLE SSANGSIOS-U-CIEUC
-0x9CD3	0xC47B	# HANGUL SYLLABLE SSANGSIOS-U-CHIEUCH
-0x9CD4	0xC47C	# HANGUL SYLLABLE SSANGSIOS-U-KHIEUKH
-0x9CD5	0xC47D	# HANGUL SYLLABLE SSANGSIOS-U-THIEUTH
-0x9CD6	0xC47E	# HANGUL SYLLABLE SSANGSIOS-U-PHIEUPH
-0x9CD7	0xC47F	# HANGUL SYLLABLE SSANGSIOS-U-HIEUH
-0x9CD8	0xC481	# HANGUL SYLLABLE SSANGSIOS-WEO-KIYEOK
-0x9CD9	0xC482	# HANGUL SYLLABLE SSANGSIOS-WEO-SSANGKIYEOK
-0x9CDA	0xC483	# HANGUL SYLLABLE SSANGSIOS-WEO-KIYEOKSIOS
-0x9CDB	0xC484	# HANGUL SYLLABLE SSANGSIOS-WEO-NIEUN
-0x9CDC	0xC485	# HANGUL SYLLABLE SSANGSIOS-WEO-NIEUNCIEUC
-0x9CDD	0xC486	# HANGUL SYLLABLE SSANGSIOS-WEO-NIEUNHIEUH
-0x9CDE	0xC487	# HANGUL SYLLABLE SSANGSIOS-WEO-TIKEUT
-0x9CDF	0xC488	# HANGUL SYLLABLE SSANGSIOS-WEO-RIEUL
-0x9CE0	0xC489	# HANGUL SYLLABLE SSANGSIOS-WEO-RIEULKIYEOK
-0x9CE1	0xC48A	# HANGUL SYLLABLE SSANGSIOS-WEO-RIEULMIEUM
-0x9CE2	0xC48B	# HANGUL SYLLABLE SSANGSIOS-WEO-RIEULPIEUP
-0x9CE3	0xC48C	# HANGUL SYLLABLE SSANGSIOS-WEO-RIEULSIOS
-0x9CE4	0xC48D	# HANGUL SYLLABLE SSANGSIOS-WEO-RIEULTHIEUTH
-0x9CE5	0xC48E	# HANGUL SYLLABLE SSANGSIOS-WEO-RIEULPHIEUPH
-0x9CE6	0xC48F	# HANGUL SYLLABLE SSANGSIOS-WEO-RIEULHIEUH
-0x9CE7	0xC490	# HANGUL SYLLABLE SSANGSIOS-WEO-MIEUM
-0x9CE8	0xC491	# HANGUL SYLLABLE SSANGSIOS-WEO-PIEUP
-0x9CE9	0xC492	# HANGUL SYLLABLE SSANGSIOS-WEO-PIEUPSIOS
-0x9CEA	0xC493	# HANGUL SYLLABLE SSANGSIOS-WEO-SIOS
-0x9CEB	0xC495	# HANGUL SYLLABLE SSANGSIOS-WEO-IEUNG
-0x9CEC	0xC496	# HANGUL SYLLABLE SSANGSIOS-WEO-CIEUC
-0x9CED	0xC497	# HANGUL SYLLABLE SSANGSIOS-WEO-CHIEUCH
-0x9CEE	0xC498	# HANGUL SYLLABLE SSANGSIOS-WEO-KHIEUKH
-0x9CEF	0xC499	# HANGUL SYLLABLE SSANGSIOS-WEO-THIEUTH
-0x9CF0	0xC49A	# HANGUL SYLLABLE SSANGSIOS-WEO-PHIEUPH
-0x9CF1	0xC49B	# HANGUL SYLLABLE SSANGSIOS-WEO-HIEUH
-0x9CF2	0xC49D	# HANGUL SYLLABLE SSANGSIOS-WE-KIYEOK
-0x9CF3	0xC49E	# HANGUL SYLLABLE SSANGSIOS-WE-SSANGKIYEOK
-0x9CF4	0xC49F	# HANGUL SYLLABLE SSANGSIOS-WE-KIYEOKSIOS
-0x9CF5	0xC4A0	# HANGUL SYLLABLE SSANGSIOS-WE-NIEUN
-0x9CF6	0xC4A1	# HANGUL SYLLABLE SSANGSIOS-WE-NIEUNCIEUC
-0x9CF7	0xC4A2	# HANGUL SYLLABLE SSANGSIOS-WE-NIEUNHIEUH
-0x9CF8	0xC4A3	# HANGUL SYLLABLE SSANGSIOS-WE-TIKEUT
-0x9CF9	0xC4A4	# HANGUL SYLLABLE SSANGSIOS-WE-RIEUL
-0x9CFA	0xC4A5	# HANGUL SYLLABLE SSANGSIOS-WE-RIEULKIYEOK
-0x9CFB	0xC4A6	# HANGUL SYLLABLE SSANGSIOS-WE-RIEULMIEUM
-0x9CFC	0xC4A7	# HANGUL SYLLABLE SSANGSIOS-WE-RIEULPIEUP
-0x9CFD	0xC4A8	# HANGUL SYLLABLE SSANGSIOS-WE-RIEULSIOS
-0x9CFE	0xC4A9	# HANGUL SYLLABLE SSANGSIOS-WE-RIEULTHIEUTH
-0x9D41	0xC4AA	# HANGUL SYLLABLE SSANGSIOS-WE-RIEULPHIEUPH
-0x9D42	0xC4AB	# HANGUL SYLLABLE SSANGSIOS-WE-RIEULHIEUH
-0x9D43	0xC4AC	# HANGUL SYLLABLE SSANGSIOS-WE-MIEUM
-0x9D44	0xC4AD	# HANGUL SYLLABLE SSANGSIOS-WE-PIEUP
-0x9D45	0xC4AE	# HANGUL SYLLABLE SSANGSIOS-WE-PIEUPSIOS
-0x9D46	0xC4AF	# HANGUL SYLLABLE SSANGSIOS-WE-SIOS
-0x9D47	0xC4B0	# HANGUL SYLLABLE SSANGSIOS-WE-SSANGSIOS
-0x9D48	0xC4B1	# HANGUL SYLLABLE SSANGSIOS-WE-IEUNG
-0x9D49	0xC4B2	# HANGUL SYLLABLE SSANGSIOS-WE-CIEUC
-0x9D4A	0xC4B3	# HANGUL SYLLABLE SSANGSIOS-WE-CHIEUCH
-0x9D4B	0xC4B4	# HANGUL SYLLABLE SSANGSIOS-WE-KHIEUKH
-0x9D4C	0xC4B5	# HANGUL SYLLABLE SSANGSIOS-WE-THIEUTH
-0x9D4D	0xC4B6	# HANGUL SYLLABLE SSANGSIOS-WE-PHIEUPH
-0x9D4E	0xC4B7	# HANGUL SYLLABLE SSANGSIOS-WE-HIEUH
-0x9D4F	0xC4B9	# HANGUL SYLLABLE SSANGSIOS-WI-KIYEOK
-0x9D50	0xC4BA	# HANGUL SYLLABLE SSANGSIOS-WI-SSANGKIYEOK
-0x9D51	0xC4BB	# HANGUL SYLLABLE SSANGSIOS-WI-KIYEOKSIOS
-0x9D52	0xC4BD	# HANGUL SYLLABLE SSANGSIOS-WI-NIEUNCIEUC
-0x9D53	0xC4BE	# HANGUL SYLLABLE SSANGSIOS-WI-NIEUNHIEUH
-0x9D54	0xC4BF	# HANGUL SYLLABLE SSANGSIOS-WI-TIKEUT
-0x9D55	0xC4C0	# HANGUL SYLLABLE SSANGSIOS-WI-RIEUL
-0x9D56	0xC4C1	# HANGUL SYLLABLE SSANGSIOS-WI-RIEULKIYEOK
-0x9D57	0xC4C2	# HANGUL SYLLABLE SSANGSIOS-WI-RIEULMIEUM
-0x9D58	0xC4C3	# HANGUL SYLLABLE SSANGSIOS-WI-RIEULPIEUP
-0x9D59	0xC4C4	# HANGUL SYLLABLE SSANGSIOS-WI-RIEULSIOS
-0x9D5A	0xC4C5	# HANGUL SYLLABLE SSANGSIOS-WI-RIEULTHIEUTH
-0x9D61	0xC4C6	# HANGUL SYLLABLE SSANGSIOS-WI-RIEULPHIEUPH
-0x9D62	0xC4C7	# HANGUL SYLLABLE SSANGSIOS-WI-RIEULHIEUH
-0x9D63	0xC4C8	# HANGUL SYLLABLE SSANGSIOS-WI-MIEUM
-0x9D64	0xC4C9	# HANGUL SYLLABLE SSANGSIOS-WI-PIEUP
-0x9D65	0xC4CA	# HANGUL SYLLABLE SSANGSIOS-WI-PIEUPSIOS
-0x9D66	0xC4CB	# HANGUL SYLLABLE SSANGSIOS-WI-SIOS
-0x9D67	0xC4CC	# HANGUL SYLLABLE SSANGSIOS-WI-SSANGSIOS
-0x9D68	0xC4CD	# HANGUL SYLLABLE SSANGSIOS-WI-IEUNG
-0x9D69	0xC4CE	# HANGUL SYLLABLE SSANGSIOS-WI-CIEUC
-0x9D6A	0xC4CF	# HANGUL SYLLABLE SSANGSIOS-WI-CHIEUCH
-0x9D6B	0xC4D0	# HANGUL SYLLABLE SSANGSIOS-WI-KHIEUKH
-0x9D6C	0xC4D1	# HANGUL SYLLABLE SSANGSIOS-WI-THIEUTH
-0x9D6D	0xC4D2	# HANGUL SYLLABLE SSANGSIOS-WI-PHIEUPH
-0x9D6E	0xC4D3	# HANGUL SYLLABLE SSANGSIOS-WI-HIEUH
-0x9D6F	0xC4D4	# HANGUL SYLLABLE SSANGSIOS-YU
-0x9D70	0xC4D5	# HANGUL SYLLABLE SSANGSIOS-YU-KIYEOK
-0x9D71	0xC4D6	# HANGUL SYLLABLE SSANGSIOS-YU-SSANGKIYEOK
-0x9D72	0xC4D7	# HANGUL SYLLABLE SSANGSIOS-YU-KIYEOKSIOS
-0x9D73	0xC4D8	# HANGUL SYLLABLE SSANGSIOS-YU-NIEUN
-0x9D74	0xC4D9	# HANGUL SYLLABLE SSANGSIOS-YU-NIEUNCIEUC
-0x9D75	0xC4DA	# HANGUL SYLLABLE SSANGSIOS-YU-NIEUNHIEUH
-0x9D76	0xC4DB	# HANGUL SYLLABLE SSANGSIOS-YU-TIKEUT
-0x9D77	0xC4DC	# HANGUL SYLLABLE SSANGSIOS-YU-RIEUL
-0x9D78	0xC4DD	# HANGUL SYLLABLE SSANGSIOS-YU-RIEULKIYEOK
-0x9D79	0xC4DE	# HANGUL SYLLABLE SSANGSIOS-YU-RIEULMIEUM
-0x9D7A	0xC4DF	# HANGUL SYLLABLE SSANGSIOS-YU-RIEULPIEUP
-0x9D81	0xC4E0	# HANGUL SYLLABLE SSANGSIOS-YU-RIEULSIOS
-0x9D82	0xC4E1	# HANGUL SYLLABLE SSANGSIOS-YU-RIEULTHIEUTH
-0x9D83	0xC4E2	# HANGUL SYLLABLE SSANGSIOS-YU-RIEULPHIEUPH
-0x9D84	0xC4E3	# HANGUL SYLLABLE SSANGSIOS-YU-RIEULHIEUH
-0x9D85	0xC4E4	# HANGUL SYLLABLE SSANGSIOS-YU-MIEUM
-0x9D86	0xC4E5	# HANGUL SYLLABLE SSANGSIOS-YU-PIEUP
-0x9D87	0xC4E6	# HANGUL SYLLABLE SSANGSIOS-YU-PIEUPSIOS
-0x9D88	0xC4E7	# HANGUL SYLLABLE SSANGSIOS-YU-SIOS
-0x9D89	0xC4E8	# HANGUL SYLLABLE SSANGSIOS-YU-SSANGSIOS
-0x9D8A	0xC4EA	# HANGUL SYLLABLE SSANGSIOS-YU-CIEUC
-0x9D8B	0xC4EB	# HANGUL SYLLABLE SSANGSIOS-YU-CHIEUCH
-0x9D8C	0xC4EC	# HANGUL SYLLABLE SSANGSIOS-YU-KHIEUKH
-0x9D8D	0xC4ED	# HANGUL SYLLABLE SSANGSIOS-YU-THIEUTH
-0x9D8E	0xC4EE	# HANGUL SYLLABLE SSANGSIOS-YU-PHIEUPH
-0x9D8F	0xC4EF	# HANGUL SYLLABLE SSANGSIOS-YU-HIEUH
-0x9D90	0xC4F2	# HANGUL SYLLABLE SSANGSIOS-EU-SSANGKIYEOK
-0x9D91	0xC4F3	# HANGUL SYLLABLE SSANGSIOS-EU-KIYEOKSIOS
-0x9D92	0xC4F5	# HANGUL SYLLABLE SSANGSIOS-EU-NIEUNCIEUC
-0x9D93	0xC4F6	# HANGUL SYLLABLE SSANGSIOS-EU-NIEUNHIEUH
-0x9D94	0xC4F7	# HANGUL SYLLABLE SSANGSIOS-EU-TIKEUT
-0x9D95	0xC4F9	# HANGUL SYLLABLE SSANGSIOS-EU-RIEULKIYEOK
-0x9D96	0xC4FB	# HANGUL SYLLABLE SSANGSIOS-EU-RIEULPIEUP
-0x9D97	0xC4FC	# HANGUL SYLLABLE SSANGSIOS-EU-RIEULSIOS
-0x9D98	0xC4FD	# HANGUL SYLLABLE SSANGSIOS-EU-RIEULTHIEUTH
-0x9D99	0xC4FE	# HANGUL SYLLABLE SSANGSIOS-EU-RIEULPHIEUPH
-0x9D9A	0xC502	# HANGUL SYLLABLE SSANGSIOS-EU-PIEUPSIOS
-0x9D9B	0xC503	# HANGUL SYLLABLE SSANGSIOS-EU-SIOS
-0x9D9C	0xC504	# HANGUL SYLLABLE SSANGSIOS-EU-SSANGSIOS
-0x9D9D	0xC505	# HANGUL SYLLABLE SSANGSIOS-EU-IEUNG
-0x9D9E	0xC506	# HANGUL SYLLABLE SSANGSIOS-EU-CIEUC
-0x9D9F	0xC507	# HANGUL SYLLABLE SSANGSIOS-EU-CHIEUCH
-0x9DA0	0xC508	# HANGUL SYLLABLE SSANGSIOS-EU-KHIEUKH
-0x9DA1	0xC509	# HANGUL SYLLABLE SSANGSIOS-EU-THIEUTH
-0x9DA2	0xC50A	# HANGUL SYLLABLE SSANGSIOS-EU-PHIEUPH
-0x9DA3	0xC50B	# HANGUL SYLLABLE SSANGSIOS-EU-HIEUH
-0x9DA4	0xC50D	# HANGUL SYLLABLE SSANGSIOS-YI-KIYEOK
-0x9DA5	0xC50E	# HANGUL SYLLABLE SSANGSIOS-YI-SSANGKIYEOK
-0x9DA6	0xC50F	# HANGUL SYLLABLE SSANGSIOS-YI-KIYEOKSIOS
-0x9DA7	0xC511	# HANGUL SYLLABLE SSANGSIOS-YI-NIEUNCIEUC
-0x9DA8	0xC512	# HANGUL SYLLABLE SSANGSIOS-YI-NIEUNHIEUH
-0x9DA9	0xC513	# HANGUL SYLLABLE SSANGSIOS-YI-TIKEUT
-0x9DAA	0xC515	# HANGUL SYLLABLE SSANGSIOS-YI-RIEULKIYEOK
-0x9DAB	0xC516	# HANGUL SYLLABLE SSANGSIOS-YI-RIEULMIEUM
-0x9DAC	0xC517	# HANGUL SYLLABLE SSANGSIOS-YI-RIEULPIEUP
-0x9DAD	0xC518	# HANGUL SYLLABLE SSANGSIOS-YI-RIEULSIOS
-0x9DAE	0xC519	# HANGUL SYLLABLE SSANGSIOS-YI-RIEULTHIEUTH
-0x9DAF	0xC51A	# HANGUL SYLLABLE SSANGSIOS-YI-RIEULPHIEUPH
-0x9DB0	0xC51B	# HANGUL SYLLABLE SSANGSIOS-YI-RIEULHIEUH
-0x9DB1	0xC51D	# HANGUL SYLLABLE SSANGSIOS-YI-PIEUP
-0x9DB2	0xC51E	# HANGUL SYLLABLE SSANGSIOS-YI-PIEUPSIOS
-0x9DB3	0xC51F	# HANGUL SYLLABLE SSANGSIOS-YI-SIOS
-0x9DB4	0xC520	# HANGUL SYLLABLE SSANGSIOS-YI-SSANGSIOS
-0x9DB5	0xC521	# HANGUL SYLLABLE SSANGSIOS-YI-IEUNG
-0x9DB6	0xC522	# HANGUL SYLLABLE SSANGSIOS-YI-CIEUC
-0x9DB7	0xC523	# HANGUL SYLLABLE SSANGSIOS-YI-CHIEUCH
-0x9DB8	0xC524	# HANGUL SYLLABLE SSANGSIOS-YI-KHIEUKH
-0x9DB9	0xC525	# HANGUL SYLLABLE SSANGSIOS-YI-THIEUTH
-0x9DBA	0xC526	# HANGUL SYLLABLE SSANGSIOS-YI-PHIEUPH
-0x9DBB	0xC527	# HANGUL SYLLABLE SSANGSIOS-YI-HIEUH
-0x9DBC	0xC52A	# HANGUL SYLLABLE SSANGSIOS-I-SSANGKIYEOK
-0x9DBD	0xC52B	# HANGUL SYLLABLE SSANGSIOS-I-KIYEOKSIOS
-0x9DBE	0xC52D	# HANGUL SYLLABLE SSANGSIOS-I-NIEUNCIEUC
-0x9DBF	0xC52E	# HANGUL SYLLABLE SSANGSIOS-I-NIEUNHIEUH
-0x9DC0	0xC52F	# HANGUL SYLLABLE SSANGSIOS-I-TIKEUT
-0x9DC1	0xC531	# HANGUL SYLLABLE SSANGSIOS-I-RIEULKIYEOK
-0x9DC2	0xC532	# HANGUL SYLLABLE SSANGSIOS-I-RIEULMIEUM
-0x9DC3	0xC533	# HANGUL SYLLABLE SSANGSIOS-I-RIEULPIEUP
-0x9DC4	0xC534	# HANGUL SYLLABLE SSANGSIOS-I-RIEULSIOS
-0x9DC5	0xC535	# HANGUL SYLLABLE SSANGSIOS-I-RIEULTHIEUTH
-0x9DC6	0xC536	# HANGUL SYLLABLE SSANGSIOS-I-RIEULPHIEUPH
-0x9DC7	0xC537	# HANGUL SYLLABLE SSANGSIOS-I-RIEULHIEUH
-0x9DC8	0xC53A	# HANGUL SYLLABLE SSANGSIOS-I-PIEUPSIOS
-0x9DC9	0xC53C	# HANGUL SYLLABLE SSANGSIOS-I-SSANGSIOS
-0x9DCA	0xC53E	# HANGUL SYLLABLE SSANGSIOS-I-CIEUC
-0x9DCB	0xC53F	# HANGUL SYLLABLE SSANGSIOS-I-CHIEUCH
-0x9DCC	0xC540	# HANGUL SYLLABLE SSANGSIOS-I-KHIEUKH
-0x9DCD	0xC541	# HANGUL SYLLABLE SSANGSIOS-I-THIEUTH
-0x9DCE	0xC542	# HANGUL SYLLABLE SSANGSIOS-I-PHIEUPH
-0x9DCF	0xC543	# HANGUL SYLLABLE SSANGSIOS-I-HIEUH
-0x9DD0	0xC546	# HANGUL SYLLABLE IEUNG-A-SSANGKIYEOK
-0x9DD1	0xC547	# HANGUL SYLLABLE IEUNG-A-KIYEOKSIOS
-0x9DD2	0xC54B	# HANGUL SYLLABLE IEUNG-A-TIKEUT
-0x9DD3	0xC54F	# HANGUL SYLLABLE IEUNG-A-RIEULPIEUP
-0x9DD4	0xC550	# HANGUL SYLLABLE IEUNG-A-RIEULSIOS
-0x9DD5	0xC551	# HANGUL SYLLABLE IEUNG-A-RIEULTHIEUTH
-0x9DD6	0xC552	# HANGUL SYLLABLE IEUNG-A-RIEULPHIEUPH
-0x9DD7	0xC556	# HANGUL SYLLABLE IEUNG-A-PIEUPSIOS
-0x9DD8	0xC55A	# HANGUL SYLLABLE IEUNG-A-CIEUC
-0x9DD9	0xC55B	# HANGUL SYLLABLE IEUNG-A-CHIEUCH
-0x9DDA	0xC55C	# HANGUL SYLLABLE IEUNG-A-KHIEUKH
-0x9DDB	0xC55F	# HANGUL SYLLABLE IEUNG-A-HIEUH
-0x9DDC	0xC562	# HANGUL SYLLABLE IEUNG-AE-SSANGKIYEOK
-0x9DDD	0xC563	# HANGUL SYLLABLE IEUNG-AE-KIYEOKSIOS
-0x9DDE	0xC565	# HANGUL SYLLABLE IEUNG-AE-NIEUNCIEUC
-0x9DDF	0xC566	# HANGUL SYLLABLE IEUNG-AE-NIEUNHIEUH
-0x9DE0	0xC567	# HANGUL SYLLABLE IEUNG-AE-TIKEUT
-0x9DE1	0xC569	# HANGUL SYLLABLE IEUNG-AE-RIEULKIYEOK
-0x9DE2	0xC56A	# HANGUL SYLLABLE IEUNG-AE-RIEULMIEUM
-0x9DE3	0xC56B	# HANGUL SYLLABLE IEUNG-AE-RIEULPIEUP
-0x9DE4	0xC56C	# HANGUL SYLLABLE IEUNG-AE-RIEULSIOS
-0x9DE5	0xC56D	# HANGUL SYLLABLE IEUNG-AE-RIEULTHIEUTH
-0x9DE6	0xC56E	# HANGUL SYLLABLE IEUNG-AE-RIEULPHIEUPH
-0x9DE7	0xC56F	# HANGUL SYLLABLE IEUNG-AE-RIEULHIEUH
-0x9DE8	0xC572	# HANGUL SYLLABLE IEUNG-AE-PIEUPSIOS
-0x9DE9	0xC576	# HANGUL SYLLABLE IEUNG-AE-CIEUC
-0x9DEA	0xC577	# HANGUL SYLLABLE IEUNG-AE-CHIEUCH
-0x9DEB	0xC578	# HANGUL SYLLABLE IEUNG-AE-KHIEUKH
-0x9DEC	0xC579	# HANGUL SYLLABLE IEUNG-AE-THIEUTH
-0x9DED	0xC57A	# HANGUL SYLLABLE IEUNG-AE-PHIEUPH
-0x9DEE	0xC57B	# HANGUL SYLLABLE IEUNG-AE-HIEUH
-0x9DEF	0xC57E	# HANGUL SYLLABLE IEUNG-YA-SSANGKIYEOK
-0x9DF0	0xC57F	# HANGUL SYLLABLE IEUNG-YA-KIYEOKSIOS
-0x9DF1	0xC581	# HANGUL SYLLABLE IEUNG-YA-NIEUNCIEUC
-0x9DF2	0xC582	# HANGUL SYLLABLE IEUNG-YA-NIEUNHIEUH
-0x9DF3	0xC583	# HANGUL SYLLABLE IEUNG-YA-TIKEUT
-0x9DF4	0xC585	# HANGUL SYLLABLE IEUNG-YA-RIEULKIYEOK
-0x9DF5	0xC586	# HANGUL SYLLABLE IEUNG-YA-RIEULMIEUM
-0x9DF6	0xC588	# HANGUL SYLLABLE IEUNG-YA-RIEULSIOS
-0x9DF7	0xC589	# HANGUL SYLLABLE IEUNG-YA-RIEULTHIEUTH
-0x9DF8	0xC58A	# HANGUL SYLLABLE IEUNG-YA-RIEULPHIEUPH
-0x9DF9	0xC58B	# HANGUL SYLLABLE IEUNG-YA-RIEULHIEUH
-0x9DFA	0xC58E	# HANGUL SYLLABLE IEUNG-YA-PIEUPSIOS
-0x9DFB	0xC590	# HANGUL SYLLABLE IEUNG-YA-SSANGSIOS
-0x9DFC	0xC592	# HANGUL SYLLABLE IEUNG-YA-CIEUC
-0x9DFD	0xC593	# HANGUL SYLLABLE IEUNG-YA-CHIEUCH
-0x9DFE	0xC594	# HANGUL SYLLABLE IEUNG-YA-KHIEUKH
-0x9E41	0xC596	# HANGUL SYLLABLE IEUNG-YA-PHIEUPH
-0x9E42	0xC599	# HANGUL SYLLABLE IEUNG-YAE-KIYEOK
-0x9E43	0xC59A	# HANGUL SYLLABLE IEUNG-YAE-SSANGKIYEOK
-0x9E44	0xC59B	# HANGUL SYLLABLE IEUNG-YAE-KIYEOKSIOS
-0x9E45	0xC59D	# HANGUL SYLLABLE IEUNG-YAE-NIEUNCIEUC
-0x9E46	0xC59E	# HANGUL SYLLABLE IEUNG-YAE-NIEUNHIEUH
-0x9E47	0xC59F	# HANGUL SYLLABLE IEUNG-YAE-TIKEUT
-0x9E48	0xC5A1	# HANGUL SYLLABLE IEUNG-YAE-RIEULKIYEOK
-0x9E49	0xC5A2	# HANGUL SYLLABLE IEUNG-YAE-RIEULMIEUM
-0x9E4A	0xC5A3	# HANGUL SYLLABLE IEUNG-YAE-RIEULPIEUP
-0x9E4B	0xC5A4	# HANGUL SYLLABLE IEUNG-YAE-RIEULSIOS
-0x9E4C	0xC5A5	# HANGUL SYLLABLE IEUNG-YAE-RIEULTHIEUTH
-0x9E4D	0xC5A6	# HANGUL SYLLABLE IEUNG-YAE-RIEULPHIEUPH
-0x9E4E	0xC5A7	# HANGUL SYLLABLE IEUNG-YAE-RIEULHIEUH
-0x9E4F	0xC5A8	# HANGUL SYLLABLE IEUNG-YAE-MIEUM
-0x9E50	0xC5AA	# HANGUL SYLLABLE IEUNG-YAE-PIEUPSIOS
-0x9E51	0xC5AB	# HANGUL SYLLABLE IEUNG-YAE-SIOS
-0x9E52	0xC5AC	# HANGUL SYLLABLE IEUNG-YAE-SSANGSIOS
-0x9E53	0xC5AD	# HANGUL SYLLABLE IEUNG-YAE-IEUNG
-0x9E54	0xC5AE	# HANGUL SYLLABLE IEUNG-YAE-CIEUC
-0x9E55	0xC5AF	# HANGUL SYLLABLE IEUNG-YAE-CHIEUCH
-0x9E56	0xC5B0	# HANGUL SYLLABLE IEUNG-YAE-KHIEUKH
-0x9E57	0xC5B1	# HANGUL SYLLABLE IEUNG-YAE-THIEUTH
-0x9E58	0xC5B2	# HANGUL SYLLABLE IEUNG-YAE-PHIEUPH
-0x9E59	0xC5B3	# HANGUL SYLLABLE IEUNG-YAE-HIEUH
-0x9E5A	0xC5B6	# HANGUL SYLLABLE IEUNG-EO-SSANGKIYEOK
-0x9E61	0xC5B7	# HANGUL SYLLABLE IEUNG-EO-KIYEOKSIOS
-0x9E62	0xC5BA	# HANGUL SYLLABLE IEUNG-EO-NIEUNHIEUH
-0x9E63	0xC5BF	# HANGUL SYLLABLE IEUNG-EO-RIEULPIEUP
-0x9E64	0xC5C0	# HANGUL SYLLABLE IEUNG-EO-RIEULSIOS
-0x9E65	0xC5C1	# HANGUL SYLLABLE IEUNG-EO-RIEULTHIEUTH
-0x9E66	0xC5C2	# HANGUL SYLLABLE IEUNG-EO-RIEULPHIEUPH
-0x9E67	0xC5C3	# HANGUL SYLLABLE IEUNG-EO-RIEULHIEUH
-0x9E68	0xC5CB	# HANGUL SYLLABLE IEUNG-EO-CHIEUCH
-0x9E69	0xC5CD	# HANGUL SYLLABLE IEUNG-EO-THIEUTH
-0x9E6A	0xC5CF	# HANGUL SYLLABLE IEUNG-EO-HIEUH
-0x9E6B	0xC5D2	# HANGUL SYLLABLE IEUNG-E-SSANGKIYEOK
-0x9E6C	0xC5D3	# HANGUL SYLLABLE IEUNG-E-KIYEOKSIOS
-0x9E6D	0xC5D5	# HANGUL SYLLABLE IEUNG-E-NIEUNCIEUC
-0x9E6E	0xC5D6	# HANGUL SYLLABLE IEUNG-E-NIEUNHIEUH
-0x9E6F	0xC5D7	# HANGUL SYLLABLE IEUNG-E-TIKEUT
-0x9E70	0xC5D9	# HANGUL SYLLABLE IEUNG-E-RIEULKIYEOK
-0x9E71	0xC5DA	# HANGUL SYLLABLE IEUNG-E-RIEULMIEUM
-0x9E72	0xC5DB	# HANGUL SYLLABLE IEUNG-E-RIEULPIEUP
-0x9E73	0xC5DC	# HANGUL SYLLABLE IEUNG-E-RIEULSIOS
-0x9E74	0xC5DD	# HANGUL SYLLABLE IEUNG-E-RIEULTHIEUTH
-0x9E75	0xC5DE	# HANGUL SYLLABLE IEUNG-E-RIEULPHIEUPH
-0x9E76	0xC5DF	# HANGUL SYLLABLE IEUNG-E-RIEULHIEUH
-0x9E77	0xC5E2	# HANGUL SYLLABLE IEUNG-E-PIEUPSIOS
-0x9E78	0xC5E4	# HANGUL SYLLABLE IEUNG-E-SSANGSIOS
-0x9E79	0xC5E6	# HANGUL SYLLABLE IEUNG-E-CIEUC
-0x9E7A	0xC5E7	# HANGUL SYLLABLE IEUNG-E-CHIEUCH
-0x9E81	0xC5E8	# HANGUL SYLLABLE IEUNG-E-KHIEUKH
-0x9E82	0xC5E9	# HANGUL SYLLABLE IEUNG-E-THIEUTH
-0x9E83	0xC5EA	# HANGUL SYLLABLE IEUNG-E-PHIEUPH
-0x9E84	0xC5EB	# HANGUL SYLLABLE IEUNG-E-HIEUH
-0x9E85	0xC5EF	# HANGUL SYLLABLE IEUNG-YEO-KIYEOKSIOS
-0x9E86	0xC5F1	# HANGUL SYLLABLE IEUNG-YEO-NIEUNCIEUC
-0x9E87	0xC5F2	# HANGUL SYLLABLE IEUNG-YEO-NIEUNHIEUH
-0x9E88	0xC5F3	# HANGUL SYLLABLE IEUNG-YEO-TIKEUT
-0x9E89	0xC5F5	# HANGUL SYLLABLE IEUNG-YEO-RIEULKIYEOK
-0x9E8A	0xC5F8	# HANGUL SYLLABLE IEUNG-YEO-RIEULSIOS
-0x9E8B	0xC5F9	# HANGUL SYLLABLE IEUNG-YEO-RIEULTHIEUTH
-0x9E8C	0xC5FA	# HANGUL SYLLABLE IEUNG-YEO-RIEULPHIEUPH
-0x9E8D	0xC5FB	# HANGUL SYLLABLE IEUNG-YEO-RIEULHIEUH
-0x9E8E	0xC602	# HANGUL SYLLABLE IEUNG-YEO-CIEUC
-0x9E8F	0xC603	# HANGUL SYLLABLE IEUNG-YEO-CHIEUCH
-0x9E90	0xC604	# HANGUL SYLLABLE IEUNG-YEO-KHIEUKH
-0x9E91	0xC609	# HANGUL SYLLABLE IEUNG-YE-KIYEOK
-0x9E92	0xC60A	# HANGUL SYLLABLE IEUNG-YE-SSANGKIYEOK
-0x9E93	0xC60B	# HANGUL SYLLABLE IEUNG-YE-KIYEOKSIOS
-0x9E94	0xC60D	# HANGUL SYLLABLE IEUNG-YE-NIEUNCIEUC
-0x9E95	0xC60E	# HANGUL SYLLABLE IEUNG-YE-NIEUNHIEUH
-0x9E96	0xC60F	# HANGUL SYLLABLE IEUNG-YE-TIKEUT
-0x9E97	0xC611	# HANGUL SYLLABLE IEUNG-YE-RIEULKIYEOK
-0x9E98	0xC612	# HANGUL SYLLABLE IEUNG-YE-RIEULMIEUM
-0x9E99	0xC613	# HANGUL SYLLABLE IEUNG-YE-RIEULPIEUP
-0x9E9A	0xC614	# HANGUL SYLLABLE IEUNG-YE-RIEULSIOS
-0x9E9B	0xC615	# HANGUL SYLLABLE IEUNG-YE-RIEULTHIEUTH
-0x9E9C	0xC616	# HANGUL SYLLABLE IEUNG-YE-RIEULPHIEUPH
-0x9E9D	0xC617	# HANGUL SYLLABLE IEUNG-YE-RIEULHIEUH
-0x9E9E	0xC61A	# HANGUL SYLLABLE IEUNG-YE-PIEUPSIOS
-0x9E9F	0xC61D	# HANGUL SYLLABLE IEUNG-YE-IEUNG
-0x9EA0	0xC61E	# HANGUL SYLLABLE IEUNG-YE-CIEUC
-0x9EA1	0xC61F	# HANGUL SYLLABLE IEUNG-YE-CHIEUCH
-0x9EA2	0xC620	# HANGUL SYLLABLE IEUNG-YE-KHIEUKH
-0x9EA3	0xC621	# HANGUL SYLLABLE IEUNG-YE-THIEUTH
-0x9EA4	0xC622	# HANGUL SYLLABLE IEUNG-YE-PHIEUPH
-0x9EA5	0xC623	# HANGUL SYLLABLE IEUNG-YE-HIEUH
-0x9EA6	0xC626	# HANGUL SYLLABLE IEUNG-O-SSANGKIYEOK
-0x9EA7	0xC627	# HANGUL SYLLABLE IEUNG-O-KIYEOKSIOS
-0x9EA8	0xC629	# HANGUL SYLLABLE IEUNG-O-NIEUNCIEUC
-0x9EA9	0xC62A	# HANGUL SYLLABLE IEUNG-O-NIEUNHIEUH
-0x9EAA	0xC62B	# HANGUL SYLLABLE IEUNG-O-TIKEUT
-0x9EAB	0xC62F	# HANGUL SYLLABLE IEUNG-O-RIEULPIEUP
-0x9EAC	0xC631	# HANGUL SYLLABLE IEUNG-O-RIEULTHIEUTH
-0x9EAD	0xC632	# HANGUL SYLLABLE IEUNG-O-RIEULPHIEUPH
-0x9EAE	0xC636	# HANGUL SYLLABLE IEUNG-O-PIEUPSIOS
-0x9EAF	0xC638	# HANGUL SYLLABLE IEUNG-O-SSANGSIOS
-0x9EB0	0xC63A	# HANGUL SYLLABLE IEUNG-O-CIEUC
-0x9EB1	0xC63C	# HANGUL SYLLABLE IEUNG-O-KHIEUKH
-0x9EB2	0xC63D	# HANGUL SYLLABLE IEUNG-O-THIEUTH
-0x9EB3	0xC63E	# HANGUL SYLLABLE IEUNG-O-PHIEUPH
-0x9EB4	0xC63F	# HANGUL SYLLABLE IEUNG-O-HIEUH
-0x9EB5	0xC642	# HANGUL SYLLABLE IEUNG-WA-SSANGKIYEOK
-0x9EB6	0xC643	# HANGUL SYLLABLE IEUNG-WA-KIYEOKSIOS
-0x9EB7	0xC645	# HANGUL SYLLABLE IEUNG-WA-NIEUNCIEUC
-0x9EB8	0xC646	# HANGUL SYLLABLE IEUNG-WA-NIEUNHIEUH
-0x9EB9	0xC647	# HANGUL SYLLABLE IEUNG-WA-TIKEUT
-0x9EBA	0xC649	# HANGUL SYLLABLE IEUNG-WA-RIEULKIYEOK
-0x9EBB	0xC64A	# HANGUL SYLLABLE IEUNG-WA-RIEULMIEUM
-0x9EBC	0xC64B	# HANGUL SYLLABLE IEUNG-WA-RIEULPIEUP
-0x9EBD	0xC64C	# HANGUL SYLLABLE IEUNG-WA-RIEULSIOS
-0x9EBE	0xC64D	# HANGUL SYLLABLE IEUNG-WA-RIEULTHIEUTH
-0x9EBF	0xC64E	# HANGUL SYLLABLE IEUNG-WA-RIEULPHIEUPH
-0x9EC0	0xC64F	# HANGUL SYLLABLE IEUNG-WA-RIEULHIEUH
-0x9EC1	0xC652	# HANGUL SYLLABLE IEUNG-WA-PIEUPSIOS
-0x9EC2	0xC656	# HANGUL SYLLABLE IEUNG-WA-CIEUC
-0x9EC3	0xC657	# HANGUL SYLLABLE IEUNG-WA-CHIEUCH
-0x9EC4	0xC658	# HANGUL SYLLABLE IEUNG-WA-KHIEUKH
-0x9EC5	0xC659	# HANGUL SYLLABLE IEUNG-WA-THIEUTH
-0x9EC6	0xC65A	# HANGUL SYLLABLE IEUNG-WA-PHIEUPH
-0x9EC7	0xC65B	# HANGUL SYLLABLE IEUNG-WA-HIEUH
-0x9EC8	0xC65E	# HANGUL SYLLABLE IEUNG-WAE-SSANGKIYEOK
-0x9EC9	0xC65F	# HANGUL SYLLABLE IEUNG-WAE-KIYEOKSIOS
-0x9ECA	0xC661	# HANGUL SYLLABLE IEUNG-WAE-NIEUNCIEUC
-0x9ECB	0xC662	# HANGUL SYLLABLE IEUNG-WAE-NIEUNHIEUH
-0x9ECC	0xC663	# HANGUL SYLLABLE IEUNG-WAE-TIKEUT
-0x9ECD	0xC664	# HANGUL SYLLABLE IEUNG-WAE-RIEUL
-0x9ECE	0xC665	# HANGUL SYLLABLE IEUNG-WAE-RIEULKIYEOK
-0x9ECF	0xC666	# HANGUL SYLLABLE IEUNG-WAE-RIEULMIEUM
-0x9ED0	0xC667	# HANGUL SYLLABLE IEUNG-WAE-RIEULPIEUP
-0x9ED1	0xC668	# HANGUL SYLLABLE IEUNG-WAE-RIEULSIOS
-0x9ED2	0xC669	# HANGUL SYLLABLE IEUNG-WAE-RIEULTHIEUTH
-0x9ED3	0xC66A	# HANGUL SYLLABLE IEUNG-WAE-RIEULPHIEUPH
-0x9ED4	0xC66B	# HANGUL SYLLABLE IEUNG-WAE-RIEULHIEUH
-0x9ED5	0xC66D	# HANGUL SYLLABLE IEUNG-WAE-PIEUP
-0x9ED6	0xC66E	# HANGUL SYLLABLE IEUNG-WAE-PIEUPSIOS
-0x9ED7	0xC670	# HANGUL SYLLABLE IEUNG-WAE-SSANGSIOS
-0x9ED8	0xC672	# HANGUL SYLLABLE IEUNG-WAE-CIEUC
-0x9ED9	0xC673	# HANGUL SYLLABLE IEUNG-WAE-CHIEUCH
-0x9EDA	0xC674	# HANGUL SYLLABLE IEUNG-WAE-KHIEUKH
-0x9EDB	0xC675	# HANGUL SYLLABLE IEUNG-WAE-THIEUTH
-0x9EDC	0xC676	# HANGUL SYLLABLE IEUNG-WAE-PHIEUPH
-0x9EDD	0xC677	# HANGUL SYLLABLE IEUNG-WAE-HIEUH
-0x9EDE	0xC67A	# HANGUL SYLLABLE IEUNG-OE-SSANGKIYEOK
-0x9EDF	0xC67B	# HANGUL SYLLABLE IEUNG-OE-KIYEOKSIOS
-0x9EE0	0xC67D	# HANGUL SYLLABLE IEUNG-OE-NIEUNCIEUC
-0x9EE1	0xC67E	# HANGUL SYLLABLE IEUNG-OE-NIEUNHIEUH
-0x9EE2	0xC67F	# HANGUL SYLLABLE IEUNG-OE-TIKEUT
-0x9EE3	0xC681	# HANGUL SYLLABLE IEUNG-OE-RIEULKIYEOK
-0x9EE4	0xC682	# HANGUL SYLLABLE IEUNG-OE-RIEULMIEUM
-0x9EE5	0xC683	# HANGUL SYLLABLE IEUNG-OE-RIEULPIEUP
-0x9EE6	0xC684	# HANGUL SYLLABLE IEUNG-OE-RIEULSIOS
-0x9EE7	0xC685	# HANGUL SYLLABLE IEUNG-OE-RIEULTHIEUTH
-0x9EE8	0xC686	# HANGUL SYLLABLE IEUNG-OE-RIEULPHIEUPH
-0x9EE9	0xC687	# HANGUL SYLLABLE IEUNG-OE-RIEULHIEUH
-0x9EEA	0xC68A	# HANGUL SYLLABLE IEUNG-OE-PIEUPSIOS
-0x9EEB	0xC68C	# HANGUL SYLLABLE IEUNG-OE-SSANGSIOS
-0x9EEC	0xC68E	# HANGUL SYLLABLE IEUNG-OE-CIEUC
-0x9EED	0xC68F	# HANGUL SYLLABLE IEUNG-OE-CHIEUCH
-0x9EEE	0xC690	# HANGUL SYLLABLE IEUNG-OE-KHIEUKH
-0x9EEF	0xC691	# HANGUL SYLLABLE IEUNG-OE-THIEUTH
-0x9EF0	0xC692	# HANGUL SYLLABLE IEUNG-OE-PHIEUPH
-0x9EF1	0xC693	# HANGUL SYLLABLE IEUNG-OE-HIEUH
-0x9EF2	0xC696	# HANGUL SYLLABLE IEUNG-YO-SSANGKIYEOK
-0x9EF3	0xC697	# HANGUL SYLLABLE IEUNG-YO-KIYEOKSIOS
-0x9EF4	0xC699	# HANGUL SYLLABLE IEUNG-YO-NIEUNCIEUC
-0x9EF5	0xC69A	# HANGUL SYLLABLE IEUNG-YO-NIEUNHIEUH
-0x9EF6	0xC69B	# HANGUL SYLLABLE IEUNG-YO-TIKEUT
-0x9EF7	0xC69D	# HANGUL SYLLABLE IEUNG-YO-RIEULKIYEOK
-0x9EF8	0xC69E	# HANGUL SYLLABLE IEUNG-YO-RIEULMIEUM
-0x9EF9	0xC69F	# HANGUL SYLLABLE IEUNG-YO-RIEULPIEUP
-0x9EFA	0xC6A0	# HANGUL SYLLABLE IEUNG-YO-RIEULSIOS
-0x9EFB	0xC6A1	# HANGUL SYLLABLE IEUNG-YO-RIEULTHIEUTH
-0x9EFC	0xC6A2	# HANGUL SYLLABLE IEUNG-YO-RIEULPHIEUPH
-0x9EFD	0xC6A3	# HANGUL SYLLABLE IEUNG-YO-RIEULHIEUH
-0x9EFE	0xC6A6	# HANGUL SYLLABLE IEUNG-YO-PIEUPSIOS
-0x9F41	0xC6A8	# HANGUL SYLLABLE IEUNG-YO-SSANGSIOS
-0x9F42	0xC6AA	# HANGUL SYLLABLE IEUNG-YO-CIEUC
-0x9F43	0xC6AB	# HANGUL SYLLABLE IEUNG-YO-CHIEUCH
-0x9F44	0xC6AC	# HANGUL SYLLABLE IEUNG-YO-KHIEUKH
-0x9F45	0xC6AD	# HANGUL SYLLABLE IEUNG-YO-THIEUTH
-0x9F46	0xC6AE	# HANGUL SYLLABLE IEUNG-YO-PHIEUPH
-0x9F47	0xC6AF	# HANGUL SYLLABLE IEUNG-YO-HIEUH
-0x9F48	0xC6B2	# HANGUL SYLLABLE IEUNG-U-SSANGKIYEOK
-0x9F49	0xC6B3	# HANGUL SYLLABLE IEUNG-U-KIYEOKSIOS
-0x9F4A	0xC6B5	# HANGUL SYLLABLE IEUNG-U-NIEUNCIEUC
-0x9F4B	0xC6B6	# HANGUL SYLLABLE IEUNG-U-NIEUNHIEUH
-0x9F4C	0xC6B7	# HANGUL SYLLABLE IEUNG-U-TIKEUT
-0x9F4D	0xC6BB	# HANGUL SYLLABLE IEUNG-U-RIEULPIEUP
-0x9F4E	0xC6BC	# HANGUL SYLLABLE IEUNG-U-RIEULSIOS
-0x9F4F	0xC6BD	# HANGUL SYLLABLE IEUNG-U-RIEULTHIEUTH
-0x9F50	0xC6BE	# HANGUL SYLLABLE IEUNG-U-RIEULPHIEUPH
-0x9F51	0xC6BF	# HANGUL SYLLABLE IEUNG-U-RIEULHIEUH
-0x9F52	0xC6C2	# HANGUL SYLLABLE IEUNG-U-PIEUPSIOS
-0x9F53	0xC6C4	# HANGUL SYLLABLE IEUNG-U-SSANGSIOS
-0x9F54	0xC6C6	# HANGUL SYLLABLE IEUNG-U-CIEUC
-0x9F55	0xC6C7	# HANGUL SYLLABLE IEUNG-U-CHIEUCH
-0x9F56	0xC6C8	# HANGUL SYLLABLE IEUNG-U-KHIEUKH
-0x9F57	0xC6C9	# HANGUL SYLLABLE IEUNG-U-THIEUTH
-0x9F58	0xC6CA	# HANGUL SYLLABLE IEUNG-U-PHIEUPH
-0x9F59	0xC6CB	# HANGUL SYLLABLE IEUNG-U-HIEUH
-0x9F5A	0xC6CE	# HANGUL SYLLABLE IEUNG-WEO-SSANGKIYEOK
-0x9F61	0xC6CF	# HANGUL SYLLABLE IEUNG-WEO-KIYEOKSIOS
-0x9F62	0xC6D1	# HANGUL SYLLABLE IEUNG-WEO-NIEUNCIEUC
-0x9F63	0xC6D2	# HANGUL SYLLABLE IEUNG-WEO-NIEUNHIEUH
-0x9F64	0xC6D3	# HANGUL SYLLABLE IEUNG-WEO-TIKEUT
-0x9F65	0xC6D5	# HANGUL SYLLABLE IEUNG-WEO-RIEULKIYEOK
-0x9F66	0xC6D6	# HANGUL SYLLABLE IEUNG-WEO-RIEULMIEUM
-0x9F67	0xC6D7	# HANGUL SYLLABLE IEUNG-WEO-RIEULPIEUP
-0x9F68	0xC6D8	# HANGUL SYLLABLE IEUNG-WEO-RIEULSIOS
-0x9F69	0xC6D9	# HANGUL SYLLABLE IEUNG-WEO-RIEULTHIEUTH
-0x9F6A	0xC6DA	# HANGUL SYLLABLE IEUNG-WEO-RIEULPHIEUPH
-0x9F6B	0xC6DB	# HANGUL SYLLABLE IEUNG-WEO-RIEULHIEUH
-0x9F6C	0xC6DE	# HANGUL SYLLABLE IEUNG-WEO-PIEUPSIOS
-0x9F6D	0xC6DF	# HANGUL SYLLABLE IEUNG-WEO-SIOS
-0x9F6E	0xC6E2	# HANGUL SYLLABLE IEUNG-WEO-CIEUC
-0x9F6F	0xC6E3	# HANGUL SYLLABLE IEUNG-WEO-CHIEUCH
-0x9F70	0xC6E4	# HANGUL SYLLABLE IEUNG-WEO-KHIEUKH
-0x9F71	0xC6E5	# HANGUL SYLLABLE IEUNG-WEO-THIEUTH
-0x9F72	0xC6E6	# HANGUL SYLLABLE IEUNG-WEO-PHIEUPH
-0x9F73	0xC6E7	# HANGUL SYLLABLE IEUNG-WEO-HIEUH
-0x9F74	0xC6EA	# HANGUL SYLLABLE IEUNG-WE-SSANGKIYEOK
-0x9F75	0xC6EB	# HANGUL SYLLABLE IEUNG-WE-KIYEOKSIOS
-0x9F76	0xC6ED	# HANGUL SYLLABLE IEUNG-WE-NIEUNCIEUC
-0x9F77	0xC6EE	# HANGUL SYLLABLE IEUNG-WE-NIEUNHIEUH
-0x9F78	0xC6EF	# HANGUL SYLLABLE IEUNG-WE-TIKEUT
-0x9F79	0xC6F1	# HANGUL SYLLABLE IEUNG-WE-RIEULKIYEOK
-0x9F7A	0xC6F2	# HANGUL SYLLABLE IEUNG-WE-RIEULMIEUM
-0x9F81	0xC6F3	# HANGUL SYLLABLE IEUNG-WE-RIEULPIEUP
-0x9F82	0xC6F4	# HANGUL SYLLABLE IEUNG-WE-RIEULSIOS
-0x9F83	0xC6F5	# HANGUL SYLLABLE IEUNG-WE-RIEULTHIEUTH
-0x9F84	0xC6F6	# HANGUL SYLLABLE IEUNG-WE-RIEULPHIEUPH
-0x9F85	0xC6F7	# HANGUL SYLLABLE IEUNG-WE-RIEULHIEUH
-0x9F86	0xC6FA	# HANGUL SYLLABLE IEUNG-WE-PIEUPSIOS
-0x9F87	0xC6FB	# HANGUL SYLLABLE IEUNG-WE-SIOS
-0x9F88	0xC6FC	# HANGUL SYLLABLE IEUNG-WE-SSANGSIOS
-0x9F89	0xC6FE	# HANGUL SYLLABLE IEUNG-WE-CIEUC
-0x9F8A	0xC6FF	# HANGUL SYLLABLE IEUNG-WE-CHIEUCH
-0x9F8B	0xC700	# HANGUL SYLLABLE IEUNG-WE-KHIEUKH
-0x9F8C	0xC701	# HANGUL SYLLABLE IEUNG-WE-THIEUTH
-0x9F8D	0xC702	# HANGUL SYLLABLE IEUNG-WE-PHIEUPH
-0x9F8E	0xC703	# HANGUL SYLLABLE IEUNG-WE-HIEUH
-0x9F8F	0xC706	# HANGUL SYLLABLE IEUNG-WI-SSANGKIYEOK
-0x9F90	0xC707	# HANGUL SYLLABLE IEUNG-WI-KIYEOKSIOS
-0x9F91	0xC709	# HANGUL SYLLABLE IEUNG-WI-NIEUNCIEUC
-0x9F92	0xC70A	# HANGUL SYLLABLE IEUNG-WI-NIEUNHIEUH
-0x9F93	0xC70B	# HANGUL SYLLABLE IEUNG-WI-TIKEUT
-0x9F94	0xC70D	# HANGUL SYLLABLE IEUNG-WI-RIEULKIYEOK
-0x9F95	0xC70E	# HANGUL SYLLABLE IEUNG-WI-RIEULMIEUM
-0x9F96	0xC70F	# HANGUL SYLLABLE IEUNG-WI-RIEULPIEUP
-0x9F97	0xC710	# HANGUL SYLLABLE IEUNG-WI-RIEULSIOS
-0x9F98	0xC711	# HANGUL SYLLABLE IEUNG-WI-RIEULTHIEUTH
-0x9F99	0xC712	# HANGUL SYLLABLE IEUNG-WI-RIEULPHIEUPH
-0x9F9A	0xC713	# HANGUL SYLLABLE IEUNG-WI-RIEULHIEUH
-0x9F9B	0xC716	# HANGUL SYLLABLE IEUNG-WI-PIEUPSIOS
-0x9F9C	0xC718	# HANGUL SYLLABLE IEUNG-WI-SSANGSIOS
-0x9F9D	0xC71A	# HANGUL SYLLABLE IEUNG-WI-CIEUC
-0x9F9E	0xC71B	# HANGUL SYLLABLE IEUNG-WI-CHIEUCH
-0x9F9F	0xC71C	# HANGUL SYLLABLE IEUNG-WI-KHIEUKH
-0x9FA0	0xC71D	# HANGUL SYLLABLE IEUNG-WI-THIEUTH
-0x9FA1	0xC71E	# HANGUL SYLLABLE IEUNG-WI-PHIEUPH
-0x9FA2	0xC71F	# HANGUL SYLLABLE IEUNG-WI-HIEUH
-0x9FA3	0xC722	# HANGUL SYLLABLE IEUNG-YU-SSANGKIYEOK
-0x9FA4	0xC723	# HANGUL SYLLABLE IEUNG-YU-KIYEOKSIOS
-0x9FA5	0xC725	# HANGUL SYLLABLE IEUNG-YU-NIEUNCIEUC
-0x9FA6	0xC726	# HANGUL SYLLABLE IEUNG-YU-NIEUNHIEUH
-0x9FA7	0xC727	# HANGUL SYLLABLE IEUNG-YU-TIKEUT
-0x9FA8	0xC729	# HANGUL SYLLABLE IEUNG-YU-RIEULKIYEOK
-0x9FA9	0xC72A	# HANGUL SYLLABLE IEUNG-YU-RIEULMIEUM
-0x9FAA	0xC72B	# HANGUL SYLLABLE IEUNG-YU-RIEULPIEUP
-0x9FAB	0xC72C	# HANGUL SYLLABLE IEUNG-YU-RIEULSIOS
-0x9FAC	0xC72D	# HANGUL SYLLABLE IEUNG-YU-RIEULTHIEUTH
-0x9FAD	0xC72E	# HANGUL SYLLABLE IEUNG-YU-RIEULPHIEUPH
-0x9FAE	0xC72F	# HANGUL SYLLABLE IEUNG-YU-RIEULHIEUH
-0x9FAF	0xC732	# HANGUL SYLLABLE IEUNG-YU-PIEUPSIOS
-0x9FB0	0xC734	# HANGUL SYLLABLE IEUNG-YU-SSANGSIOS
-0x9FB1	0xC736	# HANGUL SYLLABLE IEUNG-YU-CIEUC
-0x9FB2	0xC738	# HANGUL SYLLABLE IEUNG-YU-KHIEUKH
-0x9FB3	0xC739	# HANGUL SYLLABLE IEUNG-YU-THIEUTH
-0x9FB4	0xC73A	# HANGUL SYLLABLE IEUNG-YU-PHIEUPH
-0x9FB5	0xC73B	# HANGUL SYLLABLE IEUNG-YU-HIEUH
-0x9FB6	0xC73E	# HANGUL SYLLABLE IEUNG-EU-SSANGKIYEOK
-0x9FB7	0xC73F	# HANGUL SYLLABLE IEUNG-EU-KIYEOKSIOS
-0x9FB8	0xC741	# HANGUL SYLLABLE IEUNG-EU-NIEUNCIEUC
-0x9FB9	0xC742	# HANGUL SYLLABLE IEUNG-EU-NIEUNHIEUH
-0x9FBA	0xC743	# HANGUL SYLLABLE IEUNG-EU-TIKEUT
-0x9FBB	0xC745	# HANGUL SYLLABLE IEUNG-EU-RIEULKIYEOK
-0x9FBC	0xC746	# HANGUL SYLLABLE IEUNG-EU-RIEULMIEUM
-0x9FBD	0xC747	# HANGUL SYLLABLE IEUNG-EU-RIEULPIEUP
-0x9FBE	0xC748	# HANGUL SYLLABLE IEUNG-EU-RIEULSIOS
-0x9FBF	0xC749	# HANGUL SYLLABLE IEUNG-EU-RIEULTHIEUTH
-0x9FC0	0xC74B	# HANGUL SYLLABLE IEUNG-EU-RIEULHIEUH
-0x9FC1	0xC74E	# HANGUL SYLLABLE IEUNG-EU-PIEUPSIOS
-0x9FC2	0xC750	# HANGUL SYLLABLE IEUNG-EU-SSANGSIOS
-0x9FC3	0xC759	# HANGUL SYLLABLE IEUNG-YI-KIYEOK
-0x9FC4	0xC75A	# HANGUL SYLLABLE IEUNG-YI-SSANGKIYEOK
-0x9FC5	0xC75B	# HANGUL SYLLABLE IEUNG-YI-KIYEOKSIOS
-0x9FC6	0xC75D	# HANGUL SYLLABLE IEUNG-YI-NIEUNCIEUC
-0x9FC7	0xC75E	# HANGUL SYLLABLE IEUNG-YI-NIEUNHIEUH
-0x9FC8	0xC75F	# HANGUL SYLLABLE IEUNG-YI-TIKEUT
-0x9FC9	0xC761	# HANGUL SYLLABLE IEUNG-YI-RIEULKIYEOK
-0x9FCA	0xC762	# HANGUL SYLLABLE IEUNG-YI-RIEULMIEUM
-0x9FCB	0xC763	# HANGUL SYLLABLE IEUNG-YI-RIEULPIEUP
-0x9FCC	0xC764	# HANGUL SYLLABLE IEUNG-YI-RIEULSIOS
-0x9FCD	0xC765	# HANGUL SYLLABLE IEUNG-YI-RIEULTHIEUTH
-0x9FCE	0xC766	# HANGUL SYLLABLE IEUNG-YI-RIEULPHIEUPH
-0x9FCF	0xC767	# HANGUL SYLLABLE IEUNG-YI-RIEULHIEUH
-0x9FD0	0xC769	# HANGUL SYLLABLE IEUNG-YI-PIEUP
-0x9FD1	0xC76A	# HANGUL SYLLABLE IEUNG-YI-PIEUPSIOS
-0x9FD2	0xC76C	# HANGUL SYLLABLE IEUNG-YI-SSANGSIOS
-0x9FD3	0xC76D	# HANGUL SYLLABLE IEUNG-YI-IEUNG
-0x9FD4	0xC76E	# HANGUL SYLLABLE IEUNG-YI-CIEUC
-0x9FD5	0xC76F	# HANGUL SYLLABLE IEUNG-YI-CHIEUCH
-0x9FD6	0xC770	# HANGUL SYLLABLE IEUNG-YI-KHIEUKH
-0x9FD7	0xC771	# HANGUL SYLLABLE IEUNG-YI-THIEUTH
-0x9FD8	0xC772	# HANGUL SYLLABLE IEUNG-YI-PHIEUPH
-0x9FD9	0xC773	# HANGUL SYLLABLE IEUNG-YI-HIEUH
-0x9FDA	0xC776	# HANGUL SYLLABLE IEUNG-I-SSANGKIYEOK
-0x9FDB	0xC777	# HANGUL SYLLABLE IEUNG-I-KIYEOKSIOS
-0x9FDC	0xC779	# HANGUL SYLLABLE IEUNG-I-NIEUNCIEUC
-0x9FDD	0xC77A	# HANGUL SYLLABLE IEUNG-I-NIEUNHIEUH
-0x9FDE	0xC77B	# HANGUL SYLLABLE IEUNG-I-TIKEUT
-0x9FDF	0xC77F	# HANGUL SYLLABLE IEUNG-I-RIEULPIEUP
-0x9FE0	0xC780	# HANGUL SYLLABLE IEUNG-I-RIEULSIOS
-0x9FE1	0xC781	# HANGUL SYLLABLE IEUNG-I-RIEULTHIEUTH
-0x9FE2	0xC782	# HANGUL SYLLABLE IEUNG-I-RIEULPHIEUPH
-0x9FE3	0xC786	# HANGUL SYLLABLE IEUNG-I-PIEUPSIOS
-0x9FE4	0xC78B	# HANGUL SYLLABLE IEUNG-I-CHIEUCH
-0x9FE5	0xC78C	# HANGUL SYLLABLE IEUNG-I-KHIEUKH
-0x9FE6	0xC78D	# HANGUL SYLLABLE IEUNG-I-THIEUTH
-0x9FE7	0xC78F	# HANGUL SYLLABLE IEUNG-I-HIEUH
-0x9FE8	0xC792	# HANGUL SYLLABLE CIEUC-A-SSANGKIYEOK
-0x9FE9	0xC793	# HANGUL SYLLABLE CIEUC-A-KIYEOKSIOS
-0x9FEA	0xC795	# HANGUL SYLLABLE CIEUC-A-NIEUNCIEUC
-0x9FEB	0xC799	# HANGUL SYLLABLE CIEUC-A-RIEULKIYEOK
-0x9FEC	0xC79B	# HANGUL SYLLABLE CIEUC-A-RIEULPIEUP
-0x9FED	0xC79C	# HANGUL SYLLABLE CIEUC-A-RIEULSIOS
-0x9FEE	0xC79D	# HANGUL SYLLABLE CIEUC-A-RIEULTHIEUTH
-0x9FEF	0xC79E	# HANGUL SYLLABLE CIEUC-A-RIEULPHIEUPH
-0x9FF0	0xC79F	# HANGUL SYLLABLE CIEUC-A-RIEULHIEUH
-0x9FF1	0xC7A2	# HANGUL SYLLABLE CIEUC-A-PIEUPSIOS
-0x9FF2	0xC7A7	# HANGUL SYLLABLE CIEUC-A-CHIEUCH
-0x9FF3	0xC7A8	# HANGUL SYLLABLE CIEUC-A-KHIEUKH
-0x9FF4	0xC7A9	# HANGUL SYLLABLE CIEUC-A-THIEUTH
-0x9FF5	0xC7AA	# HANGUL SYLLABLE CIEUC-A-PHIEUPH
-0x9FF6	0xC7AB	# HANGUL SYLLABLE CIEUC-A-HIEUH
-0x9FF7	0xC7AE	# HANGUL SYLLABLE CIEUC-AE-SSANGKIYEOK
-0x9FF8	0xC7AF	# HANGUL SYLLABLE CIEUC-AE-KIYEOKSIOS
-0x9FF9	0xC7B1	# HANGUL SYLLABLE CIEUC-AE-NIEUNCIEUC
-0x9FFA	0xC7B2	# HANGUL SYLLABLE CIEUC-AE-NIEUNHIEUH
-0x9FFB	0xC7B3	# HANGUL SYLLABLE CIEUC-AE-TIKEUT
-0x9FFC	0xC7B5	# HANGUL SYLLABLE CIEUC-AE-RIEULKIYEOK
-0x9FFD	0xC7B6	# HANGUL SYLLABLE CIEUC-AE-RIEULMIEUM
-0x9FFE	0xC7B7	# HANGUL SYLLABLE CIEUC-AE-RIEULPIEUP
-0xA041	0xC7B8	# HANGUL SYLLABLE CIEUC-AE-RIEULSIOS
-0xA042	0xC7B9	# HANGUL SYLLABLE CIEUC-AE-RIEULTHIEUTH
-0xA043	0xC7BA	# HANGUL SYLLABLE CIEUC-AE-RIEULPHIEUPH
-0xA044	0xC7BB	# HANGUL SYLLABLE CIEUC-AE-RIEULHIEUH
-0xA045	0xC7BE	# HANGUL SYLLABLE CIEUC-AE-PIEUPSIOS
-0xA046	0xC7C2	# HANGUL SYLLABLE CIEUC-AE-CIEUC
-0xA047	0xC7C3	# HANGUL SYLLABLE CIEUC-AE-CHIEUCH
-0xA048	0xC7C4	# HANGUL SYLLABLE CIEUC-AE-KHIEUKH
-0xA049	0xC7C5	# HANGUL SYLLABLE CIEUC-AE-THIEUTH
-0xA04A	0xC7C6	# HANGUL SYLLABLE CIEUC-AE-PHIEUPH
-0xA04B	0xC7C7	# HANGUL SYLLABLE CIEUC-AE-HIEUH
-0xA04C	0xC7CA	# HANGUL SYLLABLE CIEUC-YA-SSANGKIYEOK
-0xA04D	0xC7CB	# HANGUL SYLLABLE CIEUC-YA-KIYEOKSIOS
-0xA04E	0xC7CD	# HANGUL SYLLABLE CIEUC-YA-NIEUNCIEUC
-0xA04F	0xC7CF	# HANGUL SYLLABLE CIEUC-YA-TIKEUT
-0xA050	0xC7D1	# HANGUL SYLLABLE CIEUC-YA-RIEULKIYEOK
-0xA051	0xC7D2	# HANGUL SYLLABLE CIEUC-YA-RIEULMIEUM
-0xA052	0xC7D3	# HANGUL SYLLABLE CIEUC-YA-RIEULPIEUP
-0xA053	0xC7D4	# HANGUL SYLLABLE CIEUC-YA-RIEULSIOS
-0xA054	0xC7D5	# HANGUL SYLLABLE CIEUC-YA-RIEULTHIEUTH
-0xA055	0xC7D6	# HANGUL SYLLABLE CIEUC-YA-RIEULPHIEUPH
-0xA056	0xC7D7	# HANGUL SYLLABLE CIEUC-YA-RIEULHIEUH
-0xA057	0xC7D9	# HANGUL SYLLABLE CIEUC-YA-PIEUP
-0xA058	0xC7DA	# HANGUL SYLLABLE CIEUC-YA-PIEUPSIOS
-0xA059	0xC7DB	# HANGUL SYLLABLE CIEUC-YA-SIOS
-0xA05A	0xC7DC	# HANGUL SYLLABLE CIEUC-YA-SSANGSIOS
-0xA061	0xC7DE	# HANGUL SYLLABLE CIEUC-YA-CIEUC
-0xA062	0xC7DF	# HANGUL SYLLABLE CIEUC-YA-CHIEUCH
-0xA063	0xC7E0	# HANGUL SYLLABLE CIEUC-YA-KHIEUKH
-0xA064	0xC7E1	# HANGUL SYLLABLE CIEUC-YA-THIEUTH
-0xA065	0xC7E2	# HANGUL SYLLABLE CIEUC-YA-PHIEUPH
-0xA066	0xC7E3	# HANGUL SYLLABLE CIEUC-YA-HIEUH
-0xA067	0xC7E5	# HANGUL SYLLABLE CIEUC-YAE-KIYEOK
-0xA068	0xC7E6	# HANGUL SYLLABLE CIEUC-YAE-SSANGKIYEOK
-0xA069	0xC7E7	# HANGUL SYLLABLE CIEUC-YAE-KIYEOKSIOS
-0xA06A	0xC7E9	# HANGUL SYLLABLE CIEUC-YAE-NIEUNCIEUC
-0xA06B	0xC7EA	# HANGUL SYLLABLE CIEUC-YAE-NIEUNHIEUH
-0xA06C	0xC7EB	# HANGUL SYLLABLE CIEUC-YAE-TIKEUT
-0xA06D	0xC7ED	# HANGUL SYLLABLE CIEUC-YAE-RIEULKIYEOK
-0xA06E	0xC7EE	# HANGUL SYLLABLE CIEUC-YAE-RIEULMIEUM
-0xA06F	0xC7EF	# HANGUL SYLLABLE CIEUC-YAE-RIEULPIEUP
-0xA070	0xC7F0	# HANGUL SYLLABLE CIEUC-YAE-RIEULSIOS
-0xA071	0xC7F1	# HANGUL SYLLABLE CIEUC-YAE-RIEULTHIEUTH
-0xA072	0xC7F2	# HANGUL SYLLABLE CIEUC-YAE-RIEULPHIEUPH
-0xA073	0xC7F3	# HANGUL SYLLABLE CIEUC-YAE-RIEULHIEUH
-0xA074	0xC7F4	# HANGUL SYLLABLE CIEUC-YAE-MIEUM
-0xA075	0xC7F5	# HANGUL SYLLABLE CIEUC-YAE-PIEUP
-0xA076	0xC7F6	# HANGUL SYLLABLE CIEUC-YAE-PIEUPSIOS
-0xA077	0xC7F7	# HANGUL SYLLABLE CIEUC-YAE-SIOS
-0xA078	0xC7F8	# HANGUL SYLLABLE CIEUC-YAE-SSANGSIOS
-0xA079	0xC7F9	# HANGUL SYLLABLE CIEUC-YAE-IEUNG
-0xA07A	0xC7FA	# HANGUL SYLLABLE CIEUC-YAE-CIEUC
-0xA081	0xC7FB	# HANGUL SYLLABLE CIEUC-YAE-CHIEUCH
-0xA082	0xC7FC	# HANGUL SYLLABLE CIEUC-YAE-KHIEUKH
-0xA083	0xC7FD	# HANGUL SYLLABLE CIEUC-YAE-THIEUTH
-0xA084	0xC7FE	# HANGUL SYLLABLE CIEUC-YAE-PHIEUPH
-0xA085	0xC7FF	# HANGUL SYLLABLE CIEUC-YAE-HIEUH
-0xA086	0xC802	# HANGUL SYLLABLE CIEUC-EO-SSANGKIYEOK
-0xA087	0xC803	# HANGUL SYLLABLE CIEUC-EO-KIYEOKSIOS
-0xA088	0xC805	# HANGUL SYLLABLE CIEUC-EO-NIEUNCIEUC
-0xA089	0xC806	# HANGUL SYLLABLE CIEUC-EO-NIEUNHIEUH
-0xA08A	0xC807	# HANGUL SYLLABLE CIEUC-EO-TIKEUT
-0xA08B	0xC809	# HANGUL SYLLABLE CIEUC-EO-RIEULKIYEOK
-0xA08C	0xC80B	# HANGUL SYLLABLE CIEUC-EO-RIEULPIEUP
-0xA08D	0xC80C	# HANGUL SYLLABLE CIEUC-EO-RIEULSIOS
-0xA08E	0xC80D	# HANGUL SYLLABLE CIEUC-EO-RIEULTHIEUTH
-0xA08F	0xC80E	# HANGUL SYLLABLE CIEUC-EO-RIEULPHIEUPH
-0xA090	0xC80F	# HANGUL SYLLABLE CIEUC-EO-RIEULHIEUH
-0xA091	0xC812	# HANGUL SYLLABLE CIEUC-EO-PIEUPSIOS
-0xA092	0xC814	# HANGUL SYLLABLE CIEUC-EO-SSANGSIOS
-0xA093	0xC817	# HANGUL SYLLABLE CIEUC-EO-CHIEUCH
-0xA094	0xC818	# HANGUL SYLLABLE CIEUC-EO-KHIEUKH
-0xA095	0xC819	# HANGUL SYLLABLE CIEUC-EO-THIEUTH
-0xA096	0xC81A	# HANGUL SYLLABLE CIEUC-EO-PHIEUPH
-0xA097	0xC81B	# HANGUL SYLLABLE CIEUC-EO-HIEUH
-0xA098	0xC81E	# HANGUL SYLLABLE CIEUC-E-SSANGKIYEOK
-0xA099	0xC81F	# HANGUL SYLLABLE CIEUC-E-KIYEOKSIOS
-0xA09A	0xC821	# HANGUL SYLLABLE CIEUC-E-NIEUNCIEUC
-0xA09B	0xC822	# HANGUL SYLLABLE CIEUC-E-NIEUNHIEUH
-0xA09C	0xC823	# HANGUL SYLLABLE CIEUC-E-TIKEUT
-0xA09D	0xC825	# HANGUL SYLLABLE CIEUC-E-RIEULKIYEOK
-0xA09E	0xC826	# HANGUL SYLLABLE CIEUC-E-RIEULMIEUM
-0xA09F	0xC827	# HANGUL SYLLABLE CIEUC-E-RIEULPIEUP
-0xA0A0	0xC828	# HANGUL SYLLABLE CIEUC-E-RIEULSIOS
-0xA0A1	0xC829	# HANGUL SYLLABLE CIEUC-E-RIEULTHIEUTH
-0xA0A2	0xC82A	# HANGUL SYLLABLE CIEUC-E-RIEULPHIEUPH
-0xA0A3	0xC82B	# HANGUL SYLLABLE CIEUC-E-RIEULHIEUH
-0xA0A4	0xC82E	# HANGUL SYLLABLE CIEUC-E-PIEUPSIOS
-0xA0A5	0xC830	# HANGUL SYLLABLE CIEUC-E-SSANGSIOS
-0xA0A6	0xC832	# HANGUL SYLLABLE CIEUC-E-CIEUC
-0xA0A7	0xC833	# HANGUL SYLLABLE CIEUC-E-CHIEUCH
-0xA0A8	0xC834	# HANGUL SYLLABLE CIEUC-E-KHIEUKH
-0xA0A9	0xC835	# HANGUL SYLLABLE CIEUC-E-THIEUTH
-0xA0AA	0xC836	# HANGUL SYLLABLE CIEUC-E-PHIEUPH
-0xA0AB	0xC837	# HANGUL SYLLABLE CIEUC-E-HIEUH
-0xA0AC	0xC839	# HANGUL SYLLABLE CIEUC-YEO-KIYEOK
-0xA0AD	0xC83A	# HANGUL SYLLABLE CIEUC-YEO-SSANGKIYEOK
-0xA0AE	0xC83B	# HANGUL SYLLABLE CIEUC-YEO-KIYEOKSIOS
-0xA0AF	0xC83D	# HANGUL SYLLABLE CIEUC-YEO-NIEUNCIEUC
-0xA0B0	0xC83E	# HANGUL SYLLABLE CIEUC-YEO-NIEUNHIEUH
-0xA0B1	0xC83F	# HANGUL SYLLABLE CIEUC-YEO-TIKEUT
-0xA0B2	0xC841	# HANGUL SYLLABLE CIEUC-YEO-RIEULKIYEOK
-0xA0B3	0xC842	# HANGUL SYLLABLE CIEUC-YEO-RIEULMIEUM
-0xA0B4	0xC843	# HANGUL SYLLABLE CIEUC-YEO-RIEULPIEUP
-0xA0B5	0xC844	# HANGUL SYLLABLE CIEUC-YEO-RIEULSIOS
-0xA0B6	0xC845	# HANGUL SYLLABLE CIEUC-YEO-RIEULTHIEUTH
-0xA0B7	0xC846	# HANGUL SYLLABLE CIEUC-YEO-RIEULPHIEUPH
-0xA0B8	0xC847	# HANGUL SYLLABLE CIEUC-YEO-RIEULHIEUH
-0xA0B9	0xC84A	# HANGUL SYLLABLE CIEUC-YEO-PIEUPSIOS
-0xA0BA	0xC84B	# HANGUL SYLLABLE CIEUC-YEO-SIOS
-0xA0BB	0xC84E	# HANGUL SYLLABLE CIEUC-YEO-CIEUC
-0xA0BC	0xC84F	# HANGUL SYLLABLE CIEUC-YEO-CHIEUCH
-0xA0BD	0xC850	# HANGUL SYLLABLE CIEUC-YEO-KHIEUKH
-0xA0BE	0xC851	# HANGUL SYLLABLE CIEUC-YEO-THIEUTH
-0xA0BF	0xC852	# HANGUL SYLLABLE CIEUC-YEO-PHIEUPH
-0xA0C0	0xC853	# HANGUL SYLLABLE CIEUC-YEO-HIEUH
-0xA0C1	0xC855	# HANGUL SYLLABLE CIEUC-YE-KIYEOK
-0xA0C2	0xC856	# HANGUL SYLLABLE CIEUC-YE-SSANGKIYEOK
-0xA0C3	0xC857	# HANGUL SYLLABLE CIEUC-YE-KIYEOKSIOS
-0xA0C4	0xC858	# HANGUL SYLLABLE CIEUC-YE-NIEUN
-0xA0C5	0xC859	# HANGUL SYLLABLE CIEUC-YE-NIEUNCIEUC
-0xA0C6	0xC85A	# HANGUL SYLLABLE CIEUC-YE-NIEUNHIEUH
-0xA0C7	0xC85B	# HANGUL SYLLABLE CIEUC-YE-TIKEUT
-0xA0C8	0xC85C	# HANGUL SYLLABLE CIEUC-YE-RIEUL
-0xA0C9	0xC85D	# HANGUL SYLLABLE CIEUC-YE-RIEULKIYEOK
-0xA0CA	0xC85E	# HANGUL SYLLABLE CIEUC-YE-RIEULMIEUM
-0xA0CB	0xC85F	# HANGUL SYLLABLE CIEUC-YE-RIEULPIEUP
-0xA0CC	0xC860	# HANGUL SYLLABLE CIEUC-YE-RIEULSIOS
-0xA0CD	0xC861	# HANGUL SYLLABLE CIEUC-YE-RIEULTHIEUTH
-0xA0CE	0xC862	# HANGUL SYLLABLE CIEUC-YE-RIEULPHIEUPH
-0xA0CF	0xC863	# HANGUL SYLLABLE CIEUC-YE-RIEULHIEUH
-0xA0D0	0xC864	# HANGUL SYLLABLE CIEUC-YE-MIEUM
-0xA0D1	0xC865	# HANGUL SYLLABLE CIEUC-YE-PIEUP
-0xA0D2	0xC866	# HANGUL SYLLABLE CIEUC-YE-PIEUPSIOS
-0xA0D3	0xC867	# HANGUL SYLLABLE CIEUC-YE-SIOS
-0xA0D4	0xC868	# HANGUL SYLLABLE CIEUC-YE-SSANGSIOS
-0xA0D5	0xC869	# HANGUL SYLLABLE CIEUC-YE-IEUNG
-0xA0D6	0xC86A	# HANGUL SYLLABLE CIEUC-YE-CIEUC
-0xA0D7	0xC86B	# HANGUL SYLLABLE CIEUC-YE-CHIEUCH
-0xA0D8	0xC86C	# HANGUL SYLLABLE CIEUC-YE-KHIEUKH
-0xA0D9	0xC86D	# HANGUL SYLLABLE CIEUC-YE-THIEUTH
-0xA0DA	0xC86E	# HANGUL SYLLABLE CIEUC-YE-PHIEUPH
-0xA0DB	0xC86F	# HANGUL SYLLABLE CIEUC-YE-HIEUH
-0xA0DC	0xC872	# HANGUL SYLLABLE CIEUC-O-SSANGKIYEOK
-0xA0DD	0xC873	# HANGUL SYLLABLE CIEUC-O-KIYEOKSIOS
-0xA0DE	0xC875	# HANGUL SYLLABLE CIEUC-O-NIEUNCIEUC
-0xA0DF	0xC876	# HANGUL SYLLABLE CIEUC-O-NIEUNHIEUH
-0xA0E0	0xC877	# HANGUL SYLLABLE CIEUC-O-TIKEUT
-0xA0E1	0xC879	# HANGUL SYLLABLE CIEUC-O-RIEULKIYEOK
-0xA0E2	0xC87B	# HANGUL SYLLABLE CIEUC-O-RIEULPIEUP
-0xA0E3	0xC87C	# HANGUL SYLLABLE CIEUC-O-RIEULSIOS
-0xA0E4	0xC87D	# HANGUL SYLLABLE CIEUC-O-RIEULTHIEUTH
-0xA0E5	0xC87E	# HANGUL SYLLABLE CIEUC-O-RIEULPHIEUPH
-0xA0E6	0xC87F	# HANGUL SYLLABLE CIEUC-O-RIEULHIEUH
-0xA0E7	0xC882	# HANGUL SYLLABLE CIEUC-O-PIEUPSIOS
-0xA0E8	0xC884	# HANGUL SYLLABLE CIEUC-O-SSANGSIOS
-0xA0E9	0xC888	# HANGUL SYLLABLE CIEUC-O-KHIEUKH
-0xA0EA	0xC889	# HANGUL SYLLABLE CIEUC-O-THIEUTH
-0xA0EB	0xC88A	# HANGUL SYLLABLE CIEUC-O-PHIEUPH
-0xA0EC	0xC88E	# HANGUL SYLLABLE CIEUC-WA-SSANGKIYEOK
-0xA0ED	0xC88F	# HANGUL SYLLABLE CIEUC-WA-KIYEOKSIOS
-0xA0EE	0xC890	# HANGUL SYLLABLE CIEUC-WA-NIEUN
-0xA0EF	0xC891	# HANGUL SYLLABLE CIEUC-WA-NIEUNCIEUC
-0xA0F0	0xC892	# HANGUL SYLLABLE CIEUC-WA-NIEUNHIEUH
-0xA0F1	0xC893	# HANGUL SYLLABLE CIEUC-WA-TIKEUT
-0xA0F2	0xC895	# HANGUL SYLLABLE CIEUC-WA-RIEULKIYEOK
-0xA0F3	0xC896	# HANGUL SYLLABLE CIEUC-WA-RIEULMIEUM
-0xA0F4	0xC897	# HANGUL SYLLABLE CIEUC-WA-RIEULPIEUP
-0xA0F5	0xC898	# HANGUL SYLLABLE CIEUC-WA-RIEULSIOS
-0xA0F6	0xC899	# HANGUL SYLLABLE CIEUC-WA-RIEULTHIEUTH
-0xA0F7	0xC89A	# HANGUL SYLLABLE CIEUC-WA-RIEULPHIEUPH
-0xA0F8	0xC89B	# HANGUL SYLLABLE CIEUC-WA-RIEULHIEUH
-0xA0F9	0xC89C	# HANGUL SYLLABLE CIEUC-WA-MIEUM
-0xA0FA	0xC89E	# HANGUL SYLLABLE CIEUC-WA-PIEUPSIOS
-0xA0FB	0xC8A0	# HANGUL SYLLABLE CIEUC-WA-SSANGSIOS
-0xA0FC	0xC8A2	# HANGUL SYLLABLE CIEUC-WA-CIEUC
-0xA0FD	0xC8A3	# HANGUL SYLLABLE CIEUC-WA-CHIEUCH
-0xA0FE	0xC8A4	# HANGUL SYLLABLE CIEUC-WA-KHIEUKH
-0xA141	0xC8A5	# HANGUL SYLLABLE CIEUC-WA-THIEUTH
-0xA142	0xC8A6	# HANGUL SYLLABLE CIEUC-WA-PHIEUPH
-0xA143	0xC8A7	# HANGUL SYLLABLE CIEUC-WA-HIEUH
-0xA144	0xC8A9	# HANGUL SYLLABLE CIEUC-WAE-KIYEOK
-0xA145	0xC8AA	# HANGUL SYLLABLE CIEUC-WAE-SSANGKIYEOK
-0xA146	0xC8AB	# HANGUL SYLLABLE CIEUC-WAE-KIYEOKSIOS
-0xA147	0xC8AC	# HANGUL SYLLABLE CIEUC-WAE-NIEUN
-0xA148	0xC8AD	# HANGUL SYLLABLE CIEUC-WAE-NIEUNCIEUC
-0xA149	0xC8AE	# HANGUL SYLLABLE CIEUC-WAE-NIEUNHIEUH
-0xA14A	0xC8AF	# HANGUL SYLLABLE CIEUC-WAE-TIKEUT
-0xA14B	0xC8B0	# HANGUL SYLLABLE CIEUC-WAE-RIEUL
-0xA14C	0xC8B1	# HANGUL SYLLABLE CIEUC-WAE-RIEULKIYEOK
-0xA14D	0xC8B2	# HANGUL SYLLABLE CIEUC-WAE-RIEULMIEUM
-0xA14E	0xC8B3	# HANGUL SYLLABLE CIEUC-WAE-RIEULPIEUP
-0xA14F	0xC8B4	# HANGUL SYLLABLE CIEUC-WAE-RIEULSIOS
-0xA150	0xC8B5	# HANGUL SYLLABLE CIEUC-WAE-RIEULTHIEUTH
-0xA151	0xC8B6	# HANGUL SYLLABLE CIEUC-WAE-RIEULPHIEUPH
-0xA152	0xC8B7	# HANGUL SYLLABLE CIEUC-WAE-RIEULHIEUH
-0xA153	0xC8B8	# HANGUL SYLLABLE CIEUC-WAE-MIEUM
-0xA154	0xC8B9	# HANGUL SYLLABLE CIEUC-WAE-PIEUP
-0xA155	0xC8BA	# HANGUL SYLLABLE CIEUC-WAE-PIEUPSIOS
-0xA156	0xC8BB	# HANGUL SYLLABLE CIEUC-WAE-SIOS
-0xA157	0xC8BE	# HANGUL SYLLABLE CIEUC-WAE-CIEUC
-0xA158	0xC8BF	# HANGUL SYLLABLE CIEUC-WAE-CHIEUCH
-0xA159	0xC8C0	# HANGUL SYLLABLE CIEUC-WAE-KHIEUKH
-0xA15A	0xC8C1	# HANGUL SYLLABLE CIEUC-WAE-THIEUTH
-0xA161	0xC8C2	# HANGUL SYLLABLE CIEUC-WAE-PHIEUPH
-0xA162	0xC8C3	# HANGUL SYLLABLE CIEUC-WAE-HIEUH
-0xA163	0xC8C5	# HANGUL SYLLABLE CIEUC-OE-KIYEOK
-0xA164	0xC8C6	# HANGUL SYLLABLE CIEUC-OE-SSANGKIYEOK
-0xA165	0xC8C7	# HANGUL SYLLABLE CIEUC-OE-KIYEOKSIOS
-0xA166	0xC8C9	# HANGUL SYLLABLE CIEUC-OE-NIEUNCIEUC
-0xA167	0xC8CA	# HANGUL SYLLABLE CIEUC-OE-NIEUNHIEUH
-0xA168	0xC8CB	# HANGUL SYLLABLE CIEUC-OE-TIKEUT
-0xA169	0xC8CD	# HANGUL SYLLABLE CIEUC-OE-RIEULKIYEOK
-0xA16A	0xC8CE	# HANGUL SYLLABLE CIEUC-OE-RIEULMIEUM
-0xA16B	0xC8CF	# HANGUL SYLLABLE CIEUC-OE-RIEULPIEUP
-0xA16C	0xC8D0	# HANGUL SYLLABLE CIEUC-OE-RIEULSIOS
-0xA16D	0xC8D1	# HANGUL SYLLABLE CIEUC-OE-RIEULTHIEUTH
-0xA16E	0xC8D2	# HANGUL SYLLABLE CIEUC-OE-RIEULPHIEUPH
-0xA16F	0xC8D3	# HANGUL SYLLABLE CIEUC-OE-RIEULHIEUH
-0xA170	0xC8D6	# HANGUL SYLLABLE CIEUC-OE-PIEUPSIOS
-0xA171	0xC8D8	# HANGUL SYLLABLE CIEUC-OE-SSANGSIOS
-0xA172	0xC8DA	# HANGUL SYLLABLE CIEUC-OE-CIEUC
-0xA173	0xC8DB	# HANGUL SYLLABLE CIEUC-OE-CHIEUCH
-0xA174	0xC8DC	# HANGUL SYLLABLE CIEUC-OE-KHIEUKH
-0xA175	0xC8DD	# HANGUL SYLLABLE CIEUC-OE-THIEUTH
-0xA176	0xC8DE	# HANGUL SYLLABLE CIEUC-OE-PHIEUPH
-0xA177	0xC8DF	# HANGUL SYLLABLE CIEUC-OE-HIEUH
-0xA178	0xC8E2	# HANGUL SYLLABLE CIEUC-YO-SSANGKIYEOK
-0xA179	0xC8E3	# HANGUL SYLLABLE CIEUC-YO-KIYEOKSIOS
-0xA17A	0xC8E5	# HANGUL SYLLABLE CIEUC-YO-NIEUNCIEUC
-0xA181	0xC8E6	# HANGUL SYLLABLE CIEUC-YO-NIEUNHIEUH
-0xA182	0xC8E7	# HANGUL SYLLABLE CIEUC-YO-TIKEUT
-0xA183	0xC8E8	# HANGUL SYLLABLE CIEUC-YO-RIEUL
-0xA184	0xC8E9	# HANGUL SYLLABLE CIEUC-YO-RIEULKIYEOK
-0xA185	0xC8EA	# HANGUL SYLLABLE CIEUC-YO-RIEULMIEUM
-0xA186	0xC8EB	# HANGUL SYLLABLE CIEUC-YO-RIEULPIEUP
-0xA187	0xC8EC	# HANGUL SYLLABLE CIEUC-YO-RIEULSIOS
-0xA188	0xC8ED	# HANGUL SYLLABLE CIEUC-YO-RIEULTHIEUTH
-0xA189	0xC8EE	# HANGUL SYLLABLE CIEUC-YO-RIEULPHIEUPH
-0xA18A	0xC8EF	# HANGUL SYLLABLE CIEUC-YO-RIEULHIEUH
-0xA18B	0xC8F0	# HANGUL SYLLABLE CIEUC-YO-MIEUM
-0xA18C	0xC8F1	# HANGUL SYLLABLE CIEUC-YO-PIEUP
-0xA18D	0xC8F2	# HANGUL SYLLABLE CIEUC-YO-PIEUPSIOS
-0xA18E	0xC8F3	# HANGUL SYLLABLE CIEUC-YO-SIOS
-0xA18F	0xC8F4	# HANGUL SYLLABLE CIEUC-YO-SSANGSIOS
-0xA190	0xC8F6	# HANGUL SYLLABLE CIEUC-YO-CIEUC
-0xA191	0xC8F7	# HANGUL SYLLABLE CIEUC-YO-CHIEUCH
-0xA192	0xC8F8	# HANGUL SYLLABLE CIEUC-YO-KHIEUKH
-0xA193	0xC8F9	# HANGUL SYLLABLE CIEUC-YO-THIEUTH
-0xA194	0xC8FA	# HANGUL SYLLABLE CIEUC-YO-PHIEUPH
-0xA195	0xC8FB	# HANGUL SYLLABLE CIEUC-YO-HIEUH
-0xA196	0xC8FE	# HANGUL SYLLABLE CIEUC-U-SSANGKIYEOK
-0xA197	0xC8FF	# HANGUL SYLLABLE CIEUC-U-KIYEOKSIOS
-0xA198	0xC901	# HANGUL SYLLABLE CIEUC-U-NIEUNCIEUC
-0xA199	0xC902	# HANGUL SYLLABLE CIEUC-U-NIEUNHIEUH
-0xA19A	0xC903	# HANGUL SYLLABLE CIEUC-U-TIKEUT
-0xA19B	0xC907	# HANGUL SYLLABLE CIEUC-U-RIEULPIEUP
-0xA19C	0xC908	# HANGUL SYLLABLE CIEUC-U-RIEULSIOS
-0xA19D	0xC909	# HANGUL SYLLABLE CIEUC-U-RIEULTHIEUTH
-0xA19E	0xC90A	# HANGUL SYLLABLE CIEUC-U-RIEULPHIEUPH
-0xA19F	0xC90B	# HANGUL SYLLABLE CIEUC-U-RIEULHIEUH
-0xA1A0	0xC90E	# HANGUL SYLLABLE CIEUC-U-PIEUPSIOS
-0xA1A1	0x3000	# IDEOGRAPHIC SPACE
-0xA1A2	0x3001	# IDEOGRAPHIC COMMA
-0xA1A3	0x3002	# IDEOGRAPHIC FULL STOP
-0xA1A4	0x00B7	# MIDDLE DOT
-0xA1A5	0x2025	# TWO DOT LEADER
-0xA1A6	0x2026	# HORIZONTAL ELLIPSIS
-0xA1A7	0x00A8	# DIAERESIS
-0xA1A8	0x3003	# DITTO MARK
-0xA1A9	0x00AD	# SOFT HYPHEN
-0xA1AA	0x2015	# HORIZONTAL BAR
-0xA1AB	0x2225	# PARALLEL TO
-0xA1AC	0xFF3C	# FULLWIDTH REVERSE SOLIDUS
-0xA1AD	0x223C	# TILDE OPERATOR
-0xA1AE	0x2018	# LEFT SINGLE QUOTATION MARK
-0xA1AF	0x2019	# RIGHT SINGLE QUOTATION MARK
-0xA1B0	0x201C	# LEFT DOUBLE QUOTATION MARK
-0xA1B1	0x201D	# RIGHT DOUBLE QUOTATION MARK
-0xA1B2	0x3014	# LEFT TORTOISE SHELL BRACKET
-0xA1B3	0x3015	# RIGHT TORTOISE SHELL BRACKET
-0xA1B4	0x3008	# LEFT ANGLE BRACKET
-0xA1B5	0x3009	# RIGHT ANGLE BRACKET
-0xA1B6	0x300A	# LEFT DOUBLE ANGLE BRACKET
-0xA1B7	0x300B	# RIGHT DOUBLE ANGLE BRACKET
-0xA1B8	0x300C	# LEFT CORNER BRACKET
-0xA1B9	0x300D	# RIGHT CORNER BRACKET
-0xA1BA	0x300E	# LEFT WHITE CORNER BRACKET
-0xA1BB	0x300F	# RIGHT WHITE CORNER BRACKET
-0xA1BC	0x3010	# LEFT BLACK LENTICULAR BRACKET
-0xA1BD	0x3011	# RIGHT BLACK LENTICULAR BRACKET
-0xA1BE	0x00B1	# PLUS-MINUS SIGN
-0xA1BF	0x00D7	# MULTIPLICATION SIGN
-0xA1C0	0x00F7	# DIVISION SIGN
-0xA1C1	0x2260	# NOT EQUAL TO
-0xA1C2	0x2264	# LESS-THAN OR EQUAL TO
-0xA1C3	0x2265	# GREATER-THAN OR EQUAL TO
-0xA1C4	0x221E	# INFINITY
-0xA1C5	0x2234	# THEREFORE
-0xA1C6	0x00B0	# DEGREE SIGN
-0xA1C7	0x2032	# PRIME
-0xA1C8	0x2033	# DOUBLE PRIME
-0xA1C9	0x2103	# DEGREE CELSIUS
-0xA1CA	0x212B	# ANGSTROM SIGN
-0xA1CB	0xFFE0	# FULLWIDTH CENT SIGN
-0xA1CC	0xFFE1	# FULLWIDTH POUND SIGN
-0xA1CD	0xFFE5	# FULLWIDTH YEN SIGN
-0xA1CE	0x2642	# MALE SIGN
-0xA1CF	0x2640	# FEMALE SIGN
-0xA1D0	0x2220	# ANGLE
-0xA1D1	0x22A5	# UP TACK
-0xA1D2	0x2312	# ARC
-0xA1D3	0x2202	# PARTIAL DIFFERENTIAL
-0xA1D4	0x2207	# NABLA
-0xA1D5	0x2261	# IDENTICAL TO
-0xA1D6	0x2252	# APPROXIMATELY EQUAL TO OR THE IMAGE OF
-0xA1D7	0x00A7	# SECTION SIGN
-0xA1D8	0x203B	# REFERENCE MARK
-0xA1D9	0x2606	# WHITE STAR
-0xA1DA	0x2605	# BLACK STAR
-0xA1DB	0x25CB	# WHITE CIRCLE
-0xA1DC	0x25CF	# BLACK CIRCLE
-0xA1DD	0x25CE	# BULLSEYE
-0xA1DE	0x25C7	# WHITE DIAMOND
-0xA1DF	0x25C6	# BLACK DIAMOND
-0xA1E0	0x25A1	# WHITE SQUARE
-0xA1E1	0x25A0	# BLACK SQUARE
-0xA1E2	0x25B3	# WHITE UP-POINTING TRIANGLE
-0xA1E3	0x25B2	# BLACK UP-POINTING TRIANGLE
-0xA1E4	0x25BD	# WHITE DOWN-POINTING TRIANGLE
-0xA1E5	0x25BC	# BLACK DOWN-POINTING TRIANGLE
-0xA1E6	0x2192	# RIGHTWARDS ARROW
-0xA1E7	0x2190	# LEFTWARDS ARROW
-0xA1E8	0x2191	# UPWARDS ARROW
-0xA1E9	0x2193	# DOWNWARDS ARROW
-0xA1EA	0x2194	# LEFT RIGHT ARROW
-0xA1EB	0x3013	# GETA MARK
-0xA1EC	0x226A	# MUCH LESS-THAN
-0xA1ED	0x226B	# MUCH GREATER-THAN
-0xA1EE	0x221A	# SQUARE ROOT
-0xA1EF	0x223D	# REVERSED TILDE
-0xA1F0	0x221D	# PROPORTIONAL TO
-0xA1F1	0x2235	# BECAUSE
-0xA1F2	0x222B	# INTEGRAL
-0xA1F3	0x222C	# DOUBLE INTEGRAL
-0xA1F4	0x2208	# ELEMENT OF
-0xA1F5	0x220B	# CONTAINS AS MEMBER
-0xA1F6	0x2286	# SUBSET OF OR EQUAL TO
-0xA1F7	0x2287	# SUPERSET OF OR EQUAL TO
-0xA1F8	0x2282	# SUBSET OF
-0xA1F9	0x2283	# SUPERSET OF
-0xA1FA	0x222A	# UNION
-0xA1FB	0x2229	# INTERSECTION
-0xA1FC	0x2227	# LOGICAL AND
-0xA1FD	0x2228	# LOGICAL OR
-0xA1FE	0xFFE2	# FULLWIDTH NOT SIGN
-0xA241	0xC910	# HANGUL SYLLABLE CIEUC-U-SSANGSIOS
-0xA242	0xC912	# HANGUL SYLLABLE CIEUC-U-CIEUC
-0xA243	0xC913	# HANGUL SYLLABLE CIEUC-U-CHIEUCH
-0xA244	0xC914	# HANGUL SYLLABLE CIEUC-U-KHIEUKH
-0xA245	0xC915	# HANGUL SYLLABLE CIEUC-U-THIEUTH
-0xA246	0xC916	# HANGUL SYLLABLE CIEUC-U-PHIEUPH
-0xA247	0xC917	# HANGUL SYLLABLE CIEUC-U-HIEUH
-0xA248	0xC919	# HANGUL SYLLABLE CIEUC-WEO-KIYEOK
-0xA249	0xC91A	# HANGUL SYLLABLE CIEUC-WEO-SSANGKIYEOK
-0xA24A	0xC91B	# HANGUL SYLLABLE CIEUC-WEO-KIYEOKSIOS
-0xA24B	0xC91C	# HANGUL SYLLABLE CIEUC-WEO-NIEUN
-0xA24C	0xC91D	# HANGUL SYLLABLE CIEUC-WEO-NIEUNCIEUC
-0xA24D	0xC91E	# HANGUL SYLLABLE CIEUC-WEO-NIEUNHIEUH
-0xA24E	0xC91F	# HANGUL SYLLABLE CIEUC-WEO-TIKEUT
-0xA24F	0xC920	# HANGUL SYLLABLE CIEUC-WEO-RIEUL
-0xA250	0xC921	# HANGUL SYLLABLE CIEUC-WEO-RIEULKIYEOK
-0xA251	0xC922	# HANGUL SYLLABLE CIEUC-WEO-RIEULMIEUM
-0xA252	0xC923	# HANGUL SYLLABLE CIEUC-WEO-RIEULPIEUP
-0xA253	0xC924	# HANGUL SYLLABLE CIEUC-WEO-RIEULSIOS
-0xA254	0xC925	# HANGUL SYLLABLE CIEUC-WEO-RIEULTHIEUTH
-0xA255	0xC926	# HANGUL SYLLABLE CIEUC-WEO-RIEULPHIEUPH
-0xA256	0xC927	# HANGUL SYLLABLE CIEUC-WEO-RIEULHIEUH
-0xA257	0xC928	# HANGUL SYLLABLE CIEUC-WEO-MIEUM
-0xA258	0xC929	# HANGUL SYLLABLE CIEUC-WEO-PIEUP
-0xA259	0xC92A	# HANGUL SYLLABLE CIEUC-WEO-PIEUPSIOS
-0xA25A	0xC92B	# HANGUL SYLLABLE CIEUC-WEO-SIOS
-0xA261	0xC92D	# HANGUL SYLLABLE CIEUC-WEO-IEUNG
-0xA262	0xC92E	# HANGUL SYLLABLE CIEUC-WEO-CIEUC
-0xA263	0xC92F	# HANGUL SYLLABLE CIEUC-WEO-CHIEUCH
-0xA264	0xC930	# HANGUL SYLLABLE CIEUC-WEO-KHIEUKH
-0xA265	0xC931	# HANGUL SYLLABLE CIEUC-WEO-THIEUTH
-0xA266	0xC932	# HANGUL SYLLABLE CIEUC-WEO-PHIEUPH
-0xA267	0xC933	# HANGUL SYLLABLE CIEUC-WEO-HIEUH
-0xA268	0xC935	# HANGUL SYLLABLE CIEUC-WE-KIYEOK
-0xA269	0xC936	# HANGUL SYLLABLE CIEUC-WE-SSANGKIYEOK
-0xA26A	0xC937	# HANGUL SYLLABLE CIEUC-WE-KIYEOKSIOS
-0xA26B	0xC938	# HANGUL SYLLABLE CIEUC-WE-NIEUN
-0xA26C	0xC939	# HANGUL SYLLABLE CIEUC-WE-NIEUNCIEUC
-0xA26D	0xC93A	# HANGUL SYLLABLE CIEUC-WE-NIEUNHIEUH
-0xA26E	0xC93B	# HANGUL SYLLABLE CIEUC-WE-TIKEUT
-0xA26F	0xC93C	# HANGUL SYLLABLE CIEUC-WE-RIEUL
-0xA270	0xC93D	# HANGUL SYLLABLE CIEUC-WE-RIEULKIYEOK
-0xA271	0xC93E	# HANGUL SYLLABLE CIEUC-WE-RIEULMIEUM
-0xA272	0xC93F	# HANGUL SYLLABLE CIEUC-WE-RIEULPIEUP
-0xA273	0xC940	# HANGUL SYLLABLE CIEUC-WE-RIEULSIOS
-0xA274	0xC941	# HANGUL SYLLABLE CIEUC-WE-RIEULTHIEUTH
-0xA275	0xC942	# HANGUL SYLLABLE CIEUC-WE-RIEULPHIEUPH
-0xA276	0xC943	# HANGUL SYLLABLE CIEUC-WE-RIEULHIEUH
-0xA277	0xC944	# HANGUL SYLLABLE CIEUC-WE-MIEUM
-0xA278	0xC945	# HANGUL SYLLABLE CIEUC-WE-PIEUP
-0xA279	0xC946	# HANGUL SYLLABLE CIEUC-WE-PIEUPSIOS
-0xA27A	0xC947	# HANGUL SYLLABLE CIEUC-WE-SIOS
-0xA281	0xC948	# HANGUL SYLLABLE CIEUC-WE-SSANGSIOS
-0xA282	0xC949	# HANGUL SYLLABLE CIEUC-WE-IEUNG
-0xA283	0xC94A	# HANGUL SYLLABLE CIEUC-WE-CIEUC
-0xA284	0xC94B	# HANGUL SYLLABLE CIEUC-WE-CHIEUCH
-0xA285	0xC94C	# HANGUL SYLLABLE CIEUC-WE-KHIEUKH
-0xA286	0xC94D	# HANGUL SYLLABLE CIEUC-WE-THIEUTH
-0xA287	0xC94E	# HANGUL SYLLABLE CIEUC-WE-PHIEUPH
-0xA288	0xC94F	# HANGUL SYLLABLE CIEUC-WE-HIEUH
-0xA289	0xC952	# HANGUL SYLLABLE CIEUC-WI-SSANGKIYEOK
-0xA28A	0xC953	# HANGUL SYLLABLE CIEUC-WI-KIYEOKSIOS
-0xA28B	0xC955	# HANGUL SYLLABLE CIEUC-WI-NIEUNCIEUC
-0xA28C	0xC956	# HANGUL SYLLABLE CIEUC-WI-NIEUNHIEUH
-0xA28D	0xC957	# HANGUL SYLLABLE CIEUC-WI-TIKEUT
-0xA28E	0xC959	# HANGUL SYLLABLE CIEUC-WI-RIEULKIYEOK
-0xA28F	0xC95A	# HANGUL SYLLABLE CIEUC-WI-RIEULMIEUM
-0xA290	0xC95B	# HANGUL SYLLABLE CIEUC-WI-RIEULPIEUP
-0xA291	0xC95C	# HANGUL SYLLABLE CIEUC-WI-RIEULSIOS
-0xA292	0xC95D	# HANGUL SYLLABLE CIEUC-WI-RIEULTHIEUTH
-0xA293	0xC95E	# HANGUL SYLLABLE CIEUC-WI-RIEULPHIEUPH
-0xA294	0xC95F	# HANGUL SYLLABLE CIEUC-WI-RIEULHIEUH
-0xA295	0xC962	# HANGUL SYLLABLE CIEUC-WI-PIEUPSIOS
-0xA296	0xC964	# HANGUL SYLLABLE CIEUC-WI-SSANGSIOS
-0xA297	0xC965	# HANGUL SYLLABLE CIEUC-WI-IEUNG
-0xA298	0xC966	# HANGUL SYLLABLE CIEUC-WI-CIEUC
-0xA299	0xC967	# HANGUL SYLLABLE CIEUC-WI-CHIEUCH
-0xA29A	0xC968	# HANGUL SYLLABLE CIEUC-WI-KHIEUKH
-0xA29B	0xC969	# HANGUL SYLLABLE CIEUC-WI-THIEUTH
-0xA29C	0xC96A	# HANGUL SYLLABLE CIEUC-WI-PHIEUPH
-0xA29D	0xC96B	# HANGUL SYLLABLE CIEUC-WI-HIEUH
-0xA29E	0xC96D	# HANGUL SYLLABLE CIEUC-YU-KIYEOK
-0xA29F	0xC96E	# HANGUL SYLLABLE CIEUC-YU-SSANGKIYEOK
-0xA2A0	0xC96F	# HANGUL SYLLABLE CIEUC-YU-KIYEOKSIOS
-0xA2A1	0x21D2	# RIGHTWARDS DOUBLE ARROW
-0xA2A2	0x21D4	# LEFT RIGHT DOUBLE ARROW
-0xA2A3	0x2200	# FOR ALL
-0xA2A4	0x2203	# THERE EXISTS
-0xA2A5	0x00B4	# ACUTE ACCENT
-0xA2A6	0xFF5E	# FULLWIDTH TILDE
-0xA2A7	0x02C7	# CARON
-0xA2A8	0x02D8	# BREVE
-0xA2A9	0x02DD	# DOUBLE ACUTE ACCENT
-0xA2AA	0x02DA	# RING ABOVE
-0xA2AB	0x02D9	# DOT ABOVE
-0xA2AC	0x00B8	# CEDILLA
-0xA2AD	0x02DB	# OGONEK
-0xA2AE	0x00A1	# INVERTED EXCLAMATION MARK
-0xA2AF	0x00BF	# INVERTED QUESTION MARK
-0xA2B0	0x02D0	# MODIFIER LETTER TRIANGULAR COLON
-0xA2B1	0x222E	# CONTOUR INTEGRAL
-0xA2B2	0x2211	# N-ARY SUMMATION
-0xA2B3	0x220F	# N-ARY PRODUCT
-0xA2B4	0x00A4	# CURRENCY SIGN
-0xA2B5	0x2109	# DEGREE FAHRENHEIT
-0xA2B6	0x2030	# PER MILLE SIGN
-0xA2B7	0x25C1	# WHITE LEFT-POINTING TRIANGLE
-0xA2B8	0x25C0	# BLACK LEFT-POINTING TRIANGLE
-0xA2B9	0x25B7	# WHITE RIGHT-POINTING TRIANGLE
-0xA2BA	0x25B6	# BLACK RIGHT-POINTING TRIANGLE
-0xA2BB	0x2664	# WHITE SPADE SUIT
-0xA2BC	0x2660	# BLACK SPADE SUIT
-0xA2BD	0x2661	# WHITE HEART SUIT
-0xA2BE	0x2665	# BLACK HEART SUIT
-0xA2BF	0x2667	# WHITE CLUB SUIT
-0xA2C0	0x2663	# BLACK CLUB SUIT
-0xA2C1	0x2299	# CIRCLED DOT OPERATOR
-0xA2C2	0x25C8	# WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
-0xA2C3	0x25A3	# WHITE SQUARE CONTAINING BLACK SMALL SQUARE
-0xA2C4	0x25D0	# CIRCLE WITH LEFT HALF BLACK
-0xA2C5	0x25D1	# CIRCLE WITH RIGHT HALF BLACK
-0xA2C6	0x2592	# MEDIUM SHADE
-0xA2C7	0x25A4	# SQUARE WITH HORIZONTAL FILL
-0xA2C8	0x25A5	# SQUARE WITH VERTICAL FILL
-0xA2C9	0x25A8	# SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
-0xA2CA	0x25A7	# SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
-0xA2CB	0x25A6	# SQUARE WITH ORTHOGONAL CROSSHATCH FILL
-0xA2CC	0x25A9	# SQUARE WITH DIAGONAL CROSSHATCH FILL
-0xA2CD	0x2668	# HOT SPRINGS
-0xA2CE	0x260F	# WHITE TELEPHONE
-0xA2CF	0x260E	# BLACK TELEPHONE
-0xA2D0	0x261C	# WHITE LEFT POINTING INDEX
-0xA2D1	0x261E	# WHITE RIGHT POINTING INDEX
-0xA2D2	0x00B6	# PILCROW SIGN
-0xA2D3	0x2020	# DAGGER
-0xA2D4	0x2021	# DOUBLE DAGGER
-0xA2D5	0x2195	# UP DOWN ARROW
-0xA2D6	0x2197	# NORTH EAST ARROW
-0xA2D7	0x2199	# SOUTH WEST ARROW
-0xA2D8	0x2196	# NORTH WEST ARROW
-0xA2D9	0x2198	# SOUTH EAST ARROW
-0xA2DA	0x266D	# MUSIC FLAT SIGN
-0xA2DB	0x2669	# QUARTER NOTE
-0xA2DC	0x266A	# EIGHTH NOTE
-0xA2DD	0x266C	# BEAMED SIXTEENTH NOTES
-0xA2DE	0x327F	# KOREAN STANDARD SYMBOL
-0xA2DF	0x321C	# PARENTHESIZED HANGUL CIEUC U
-0xA2E0	0x2116	# NUMERO SIGN
-0xA2E1	0x33C7	# SQUARE CO
-0xA2E2	0x2122	# TRADE MARK SIGN
-0xA2E3	0x33C2	# SQUARE AM
-0xA2E4	0x33D8	# SQUARE PM
-0xA2E5	0x2121	# TELEPHONE SIGN
-0xA341	0xC971	# HANGUL SYLLABLE CIEUC-YU-NIEUNCIEUC
-0xA342	0xC972	# HANGUL SYLLABLE CIEUC-YU-NIEUNHIEUH
-0xA343	0xC973	# HANGUL SYLLABLE CIEUC-YU-TIKEUT
-0xA344	0xC975	# HANGUL SYLLABLE CIEUC-YU-RIEULKIYEOK
-0xA345	0xC976	# HANGUL SYLLABLE CIEUC-YU-RIEULMIEUM
-0xA346	0xC977	# HANGUL SYLLABLE CIEUC-YU-RIEULPIEUP
-0xA347	0xC978	# HANGUL SYLLABLE CIEUC-YU-RIEULSIOS
-0xA348	0xC979	# HANGUL SYLLABLE CIEUC-YU-RIEULTHIEUTH
-0xA349	0xC97A	# HANGUL SYLLABLE CIEUC-YU-RIEULPHIEUPH
-0xA34A	0xC97B	# HANGUL SYLLABLE CIEUC-YU-RIEULHIEUH
-0xA34B	0xC97D	# HANGUL SYLLABLE CIEUC-YU-PIEUP
-0xA34C	0xC97E	# HANGUL SYLLABLE CIEUC-YU-PIEUPSIOS
-0xA34D	0xC97F	# HANGUL SYLLABLE CIEUC-YU-SIOS
-0xA34E	0xC980	# HANGUL SYLLABLE CIEUC-YU-SSANGSIOS
-0xA34F	0xC981	# HANGUL SYLLABLE CIEUC-YU-IEUNG
-0xA350	0xC982	# HANGUL SYLLABLE CIEUC-YU-CIEUC
-0xA351	0xC983	# HANGUL SYLLABLE CIEUC-YU-CHIEUCH
-0xA352	0xC984	# HANGUL SYLLABLE CIEUC-YU-KHIEUKH
-0xA353	0xC985	# HANGUL SYLLABLE CIEUC-YU-THIEUTH
-0xA354	0xC986	# HANGUL SYLLABLE CIEUC-YU-PHIEUPH
-0xA355	0xC987	# HANGUL SYLLABLE CIEUC-YU-HIEUH
-0xA356	0xC98A	# HANGUL SYLLABLE CIEUC-EU-SSANGKIYEOK
-0xA357	0xC98B	# HANGUL SYLLABLE CIEUC-EU-KIYEOKSIOS
-0xA358	0xC98D	# HANGUL SYLLABLE CIEUC-EU-NIEUNCIEUC
-0xA359	0xC98E	# HANGUL SYLLABLE CIEUC-EU-NIEUNHIEUH
-0xA35A	0xC98F	# HANGUL SYLLABLE CIEUC-EU-TIKEUT
-0xA361	0xC991	# HANGUL SYLLABLE CIEUC-EU-RIEULKIYEOK
-0xA362	0xC992	# HANGUL SYLLABLE CIEUC-EU-RIEULMIEUM
-0xA363	0xC993	# HANGUL SYLLABLE CIEUC-EU-RIEULPIEUP
-0xA364	0xC994	# HANGUL SYLLABLE CIEUC-EU-RIEULSIOS
-0xA365	0xC995	# HANGUL SYLLABLE CIEUC-EU-RIEULTHIEUTH
-0xA366	0xC996	# HANGUL SYLLABLE CIEUC-EU-RIEULPHIEUPH
-0xA367	0xC997	# HANGUL SYLLABLE CIEUC-EU-RIEULHIEUH
-0xA368	0xC99A	# HANGUL SYLLABLE CIEUC-EU-PIEUPSIOS
-0xA369	0xC99C	# HANGUL SYLLABLE CIEUC-EU-SSANGSIOS
-0xA36A	0xC99E	# HANGUL SYLLABLE CIEUC-EU-CIEUC
-0xA36B	0xC99F	# HANGUL SYLLABLE CIEUC-EU-CHIEUCH
-0xA36C	0xC9A0	# HANGUL SYLLABLE CIEUC-EU-KHIEUKH
-0xA36D	0xC9A1	# HANGUL SYLLABLE CIEUC-EU-THIEUTH
-0xA36E	0xC9A2	# HANGUL SYLLABLE CIEUC-EU-PHIEUPH
-0xA36F	0xC9A3	# HANGUL SYLLABLE CIEUC-EU-HIEUH
-0xA370	0xC9A4	# HANGUL SYLLABLE CIEUC-YI
-0xA371	0xC9A5	# HANGUL SYLLABLE CIEUC-YI-KIYEOK
-0xA372	0xC9A6	# HANGUL SYLLABLE CIEUC-YI-SSANGKIYEOK
-0xA373	0xC9A7	# HANGUL SYLLABLE CIEUC-YI-KIYEOKSIOS
-0xA374	0xC9A8	# HANGUL SYLLABLE CIEUC-YI-NIEUN
-0xA375	0xC9A9	# HANGUL SYLLABLE CIEUC-YI-NIEUNCIEUC
-0xA376	0xC9AA	# HANGUL SYLLABLE CIEUC-YI-NIEUNHIEUH
-0xA377	0xC9AB	# HANGUL SYLLABLE CIEUC-YI-TIKEUT
-0xA378	0xC9AC	# HANGUL SYLLABLE CIEUC-YI-RIEUL
-0xA379	0xC9AD	# HANGUL SYLLABLE CIEUC-YI-RIEULKIYEOK
-0xA37A	0xC9AE	# HANGUL SYLLABLE CIEUC-YI-RIEULMIEUM
-0xA381	0xC9AF	# HANGUL SYLLABLE CIEUC-YI-RIEULPIEUP
-0xA382	0xC9B0	# HANGUL SYLLABLE CIEUC-YI-RIEULSIOS
-0xA383	0xC9B1	# HANGUL SYLLABLE CIEUC-YI-RIEULTHIEUTH
-0xA384	0xC9B2	# HANGUL SYLLABLE CIEUC-YI-RIEULPHIEUPH
-0xA385	0xC9B3	# HANGUL SYLLABLE CIEUC-YI-RIEULHIEUH
-0xA386	0xC9B4	# HANGUL SYLLABLE CIEUC-YI-MIEUM
-0xA387	0xC9B5	# HANGUL SYLLABLE CIEUC-YI-PIEUP
-0xA388	0xC9B6	# HANGUL SYLLABLE CIEUC-YI-PIEUPSIOS
-0xA389	0xC9B7	# HANGUL SYLLABLE CIEUC-YI-SIOS
-0xA38A	0xC9B8	# HANGUL SYLLABLE CIEUC-YI-SSANGSIOS
-0xA38B	0xC9B9	# HANGUL SYLLABLE CIEUC-YI-IEUNG
-0xA38C	0xC9BA	# HANGUL SYLLABLE CIEUC-YI-CIEUC
-0xA38D	0xC9BB	# HANGUL SYLLABLE CIEUC-YI-CHIEUCH
-0xA38E	0xC9BC	# HANGUL SYLLABLE CIEUC-YI-KHIEUKH
-0xA38F	0xC9BD	# HANGUL SYLLABLE CIEUC-YI-THIEUTH
-0xA390	0xC9BE	# HANGUL SYLLABLE CIEUC-YI-PHIEUPH
-0xA391	0xC9BF	# HANGUL SYLLABLE CIEUC-YI-HIEUH
-0xA392	0xC9C2	# HANGUL SYLLABLE CIEUC-I-SSANGKIYEOK
-0xA393	0xC9C3	# HANGUL SYLLABLE CIEUC-I-KIYEOKSIOS
-0xA394	0xC9C5	# HANGUL SYLLABLE CIEUC-I-NIEUNCIEUC
-0xA395	0xC9C6	# HANGUL SYLLABLE CIEUC-I-NIEUNHIEUH
-0xA396	0xC9C9	# HANGUL SYLLABLE CIEUC-I-RIEULKIYEOK
-0xA397	0xC9CB	# HANGUL SYLLABLE CIEUC-I-RIEULPIEUP
-0xA398	0xC9CC	# HANGUL SYLLABLE CIEUC-I-RIEULSIOS
-0xA399	0xC9CD	# HANGUL SYLLABLE CIEUC-I-RIEULTHIEUTH
-0xA39A	0xC9CE	# HANGUL SYLLABLE CIEUC-I-RIEULPHIEUPH
-0xA39B	0xC9CF	# HANGUL SYLLABLE CIEUC-I-RIEULHIEUH
-0xA39C	0xC9D2	# HANGUL SYLLABLE CIEUC-I-PIEUPSIOS
-0xA39D	0xC9D4	# HANGUL SYLLABLE CIEUC-I-SSANGSIOS
-0xA39E	0xC9D7	# HANGUL SYLLABLE CIEUC-I-CHIEUCH
-0xA39F	0xC9D8	# HANGUL SYLLABLE CIEUC-I-KHIEUKH
-0xA3A0	0xC9DB	# HANGUL SYLLABLE CIEUC-I-HIEUH
-0xA3A1	0xFF01	# FULLWIDTH EXCLAMATION MARK
-0xA3A2	0xFF02	# FULLWIDTH QUOTATION MARK
-0xA3A3	0xFF03	# FULLWIDTH NUMBER SIGN
-0xA3A4	0xFF04	# FULLWIDTH DOLLAR SIGN
-0xA3A5	0xFF05	# FULLWIDTH PERCENT SIGN
-0xA3A6	0xFF06	# FULLWIDTH AMPERSAND
-0xA3A7	0xFF07	# FULLWIDTH APOSTROPHE
-0xA3A8	0xFF08	# FULLWIDTH LEFT PARENTHESIS
-0xA3A9	0xFF09	# FULLWIDTH RIGHT PARENTHESIS
-0xA3AA	0xFF0A	# FULLWIDTH ASTERISK
-0xA3AB	0xFF0B	# FULLWIDTH PLUS SIGN
-0xA3AC	0xFF0C	# FULLWIDTH COMMA
-0xA3AD	0xFF0D	# FULLWIDTH HYPHEN-MINUS
-0xA3AE	0xFF0E	# FULLWIDTH FULL STOP
-0xA3AF	0xFF0F	# FULLWIDTH SOLIDUS
-0xA3B0	0xFF10	# FULLWIDTH DIGIT ZERO
-0xA3B1	0xFF11	# FULLWIDTH DIGIT ONE
-0xA3B2	0xFF12	# FULLWIDTH DIGIT TWO
-0xA3B3	0xFF13	# FULLWIDTH DIGIT THREE
-0xA3B4	0xFF14	# FULLWIDTH DIGIT FOUR
-0xA3B5	0xFF15	# FULLWIDTH DIGIT FIVE
-0xA3B6	0xFF16	# FULLWIDTH DIGIT SIX
-0xA3B7	0xFF17	# FULLWIDTH DIGIT SEVEN
-0xA3B8	0xFF18	# FULLWIDTH DIGIT EIGHT
-0xA3B9	0xFF19	# FULLWIDTH DIGIT NINE
-0xA3BA	0xFF1A	# FULLWIDTH COLON
-0xA3BB	0xFF1B	# FULLWIDTH SEMICOLON
-0xA3BC	0xFF1C	# FULLWIDTH LESS-THAN SIGN
-0xA3BD	0xFF1D	# FULLWIDTH EQUALS SIGN
-0xA3BE	0xFF1E	# FULLWIDTH GREATER-THAN SIGN
-0xA3BF	0xFF1F	# FULLWIDTH QUESTION MARK
-0xA3C0	0xFF20	# FULLWIDTH COMMERCIAL AT
-0xA3C1	0xFF21	# FULLWIDTH LATIN CAPITAL LETTER A
-0xA3C2	0xFF22	# FULLWIDTH LATIN CAPITAL LETTER B
-0xA3C3	0xFF23	# FULLWIDTH LATIN CAPITAL LETTER C
-0xA3C4	0xFF24	# FULLWIDTH LATIN CAPITAL LETTER D
-0xA3C5	0xFF25	# FULLWIDTH LATIN CAPITAL LETTER E
-0xA3C6	0xFF26	# FULLWIDTH LATIN CAPITAL LETTER F
-0xA3C7	0xFF27	# FULLWIDTH LATIN CAPITAL LETTER G
-0xA3C8	0xFF28	# FULLWIDTH LATIN CAPITAL LETTER H
-0xA3C9	0xFF29	# FULLWIDTH LATIN CAPITAL LETTER I
-0xA3CA	0xFF2A	# FULLWIDTH LATIN CAPITAL LETTER J
-0xA3CB	0xFF2B	# FULLWIDTH LATIN CAPITAL LETTER K
-0xA3CC	0xFF2C	# FULLWIDTH LATIN CAPITAL LETTER L
-0xA3CD	0xFF2D	# FULLWIDTH LATIN CAPITAL LETTER M
-0xA3CE	0xFF2E	# FULLWIDTH LATIN CAPITAL LETTER N
-0xA3CF	0xFF2F	# FULLWIDTH LATIN CAPITAL LETTER O
-0xA3D0	0xFF30	# FULLWIDTH LATIN CAPITAL LETTER P
-0xA3D1	0xFF31	# FULLWIDTH LATIN CAPITAL LETTER Q
-0xA3D2	0xFF32	# FULLWIDTH LATIN CAPITAL LETTER R
-0xA3D3	0xFF33	# FULLWIDTH LATIN CAPITAL LETTER S
-0xA3D4	0xFF34	# FULLWIDTH LATIN CAPITAL LETTER T
-0xA3D5	0xFF35	# FULLWIDTH LATIN CAPITAL LETTER U
-0xA3D6	0xFF36	# FULLWIDTH LATIN CAPITAL LETTER V
-0xA3D7	0xFF37	# FULLWIDTH LATIN CAPITAL LETTER W
-0xA3D8	0xFF38	# FULLWIDTH LATIN CAPITAL LETTER X
-0xA3D9	0xFF39	# FULLWIDTH LATIN CAPITAL LETTER Y
-0xA3DA	0xFF3A	# FULLWIDTH LATIN CAPITAL LETTER Z
-0xA3DB	0xFF3B	# FULLWIDTH LEFT SQUARE BRACKET
-0xA3DC	0xFFE6	# FULLWIDTH WON SIGN
-0xA3DD	0xFF3D	# FULLWIDTH RIGHT SQUARE BRACKET
-0xA3DE	0xFF3E	# FULLWIDTH CIRCUMFLEX ACCENT
-0xA3DF	0xFF3F	# FULLWIDTH LOW LINE
-0xA3E0	0xFF40	# FULLWIDTH GRAVE ACCENT
-0xA3E1	0xFF41	# FULLWIDTH LATIN SMALL LETTER A
-0xA3E2	0xFF42	# FULLWIDTH LATIN SMALL LETTER B
-0xA3E3	0xFF43	# FULLWIDTH LATIN SMALL LETTER C
-0xA3E4	0xFF44	# FULLWIDTH LATIN SMALL LETTER D
-0xA3E5	0xFF45	# FULLWIDTH LATIN SMALL LETTER E
-0xA3E6	0xFF46	# FULLWIDTH LATIN SMALL LETTER F
-0xA3E7	0xFF47	# FULLWIDTH LATIN SMALL LETTER G
-0xA3E8	0xFF48	# FULLWIDTH LATIN SMALL LETTER H
-0xA3E9	0xFF49	# FULLWIDTH LATIN SMALL LETTER I
-0xA3EA	0xFF4A	# FULLWIDTH LATIN SMALL LETTER J
-0xA3EB	0xFF4B	# FULLWIDTH LATIN SMALL LETTER K
-0xA3EC	0xFF4C	# FULLWIDTH LATIN SMALL LETTER L
-0xA3ED	0xFF4D	# FULLWIDTH LATIN SMALL LETTER M
-0xA3EE	0xFF4E	# FULLWIDTH LATIN SMALL LETTER N
-0xA3EF	0xFF4F	# FULLWIDTH LATIN SMALL LETTER O
-0xA3F0	0xFF50	# FULLWIDTH LATIN SMALL LETTER P
-0xA3F1	0xFF51	# FULLWIDTH LATIN SMALL LETTER Q
-0xA3F2	0xFF52	# FULLWIDTH LATIN SMALL LETTER R
-0xA3F3	0xFF53	# FULLWIDTH LATIN SMALL LETTER S
-0xA3F4	0xFF54	# FULLWIDTH LATIN SMALL LETTER T
-0xA3F5	0xFF55	# FULLWIDTH LATIN SMALL LETTER U
-0xA3F6	0xFF56	# FULLWIDTH LATIN SMALL LETTER V
-0xA3F7	0xFF57	# FULLWIDTH LATIN SMALL LETTER W
-0xA3F8	0xFF58	# FULLWIDTH LATIN SMALL LETTER X
-0xA3F9	0xFF59	# FULLWIDTH LATIN SMALL LETTER Y
-0xA3FA	0xFF5A	# FULLWIDTH LATIN SMALL LETTER Z
-0xA3FB	0xFF5B	# FULLWIDTH LEFT CURLY BRACKET
-0xA3FC	0xFF5C	# FULLWIDTH VERTICAL LINE
-0xA3FD	0xFF5D	# FULLWIDTH RIGHT CURLY BRACKET
-0xA3FE	0xFFE3	# FULLWIDTH MACRON
-0xA441	0xC9DE	# HANGUL SYLLABLE SSANGCIEUC-A-SSANGKIYEOK
-0xA442	0xC9DF	# HANGUL SYLLABLE SSANGCIEUC-A-KIYEOKSIOS
-0xA443	0xC9E1	# HANGUL SYLLABLE SSANGCIEUC-A-NIEUNCIEUC
-0xA444	0xC9E3	# HANGUL SYLLABLE SSANGCIEUC-A-TIKEUT
-0xA445	0xC9E5	# HANGUL SYLLABLE SSANGCIEUC-A-RIEULKIYEOK
-0xA446	0xC9E6	# HANGUL SYLLABLE SSANGCIEUC-A-RIEULMIEUM
-0xA447	0xC9E8	# HANGUL SYLLABLE SSANGCIEUC-A-RIEULSIOS
-0xA448	0xC9E9	# HANGUL SYLLABLE SSANGCIEUC-A-RIEULTHIEUTH
-0xA449	0xC9EA	# HANGUL SYLLABLE SSANGCIEUC-A-RIEULPHIEUPH
-0xA44A	0xC9EB	# HANGUL SYLLABLE SSANGCIEUC-A-RIEULHIEUH
-0xA44B	0xC9EE	# HANGUL SYLLABLE SSANGCIEUC-A-PIEUPSIOS
-0xA44C	0xC9F2	# HANGUL SYLLABLE SSANGCIEUC-A-CIEUC
-0xA44D	0xC9F3	# HANGUL SYLLABLE SSANGCIEUC-A-CHIEUCH
-0xA44E	0xC9F4	# HANGUL SYLLABLE SSANGCIEUC-A-KHIEUKH
-0xA44F	0xC9F5	# HANGUL SYLLABLE SSANGCIEUC-A-THIEUTH
-0xA450	0xC9F6	# HANGUL SYLLABLE SSANGCIEUC-A-PHIEUPH
-0xA451	0xC9F7	# HANGUL SYLLABLE SSANGCIEUC-A-HIEUH
-0xA452	0xC9FA	# HANGUL SYLLABLE SSANGCIEUC-AE-SSANGKIYEOK
-0xA453	0xC9FB	# HANGUL SYLLABLE SSANGCIEUC-AE-KIYEOKSIOS
-0xA454	0xC9FD	# HANGUL SYLLABLE SSANGCIEUC-AE-NIEUNCIEUC
-0xA455	0xC9FE	# HANGUL SYLLABLE SSANGCIEUC-AE-NIEUNHIEUH
-0xA456	0xC9FF	# HANGUL SYLLABLE SSANGCIEUC-AE-TIKEUT
-0xA457	0xCA01	# HANGUL SYLLABLE SSANGCIEUC-AE-RIEULKIYEOK
-0xA458	0xCA02	# HANGUL SYLLABLE SSANGCIEUC-AE-RIEULMIEUM
-0xA459	0xCA03	# HANGUL SYLLABLE SSANGCIEUC-AE-RIEULPIEUP
-0xA45A	0xCA04	# HANGUL SYLLABLE SSANGCIEUC-AE-RIEULSIOS
-0xA461	0xCA05	# HANGUL SYLLABLE SSANGCIEUC-AE-RIEULTHIEUTH
-0xA462	0xCA06	# HANGUL SYLLABLE SSANGCIEUC-AE-RIEULPHIEUPH
-0xA463	0xCA07	# HANGUL SYLLABLE SSANGCIEUC-AE-RIEULHIEUH
-0xA464	0xCA0A	# HANGUL SYLLABLE SSANGCIEUC-AE-PIEUPSIOS
-0xA465	0xCA0E	# HANGUL SYLLABLE SSANGCIEUC-AE-CIEUC
-0xA466	0xCA0F	# HANGUL SYLLABLE SSANGCIEUC-AE-CHIEUCH
-0xA467	0xCA10	# HANGUL SYLLABLE SSANGCIEUC-AE-KHIEUKH
-0xA468	0xCA11	# HANGUL SYLLABLE SSANGCIEUC-AE-THIEUTH
-0xA469	0xCA12	# HANGUL SYLLABLE SSANGCIEUC-AE-PHIEUPH
-0xA46A	0xCA13	# HANGUL SYLLABLE SSANGCIEUC-AE-HIEUH
-0xA46B	0xCA15	# HANGUL SYLLABLE SSANGCIEUC-YA-KIYEOK
-0xA46C	0xCA16	# HANGUL SYLLABLE SSANGCIEUC-YA-SSANGKIYEOK
-0xA46D	0xCA17	# HANGUL SYLLABLE SSANGCIEUC-YA-KIYEOKSIOS
-0xA46E	0xCA19	# HANGUL SYLLABLE SSANGCIEUC-YA-NIEUNCIEUC
-0xA46F	0xCA1A	# HANGUL SYLLABLE SSANGCIEUC-YA-NIEUNHIEUH
-0xA470	0xCA1B	# HANGUL SYLLABLE SSANGCIEUC-YA-TIKEUT
-0xA471	0xCA1C	# HANGUL SYLLABLE SSANGCIEUC-YA-RIEUL
-0xA472	0xCA1D	# HANGUL SYLLABLE SSANGCIEUC-YA-RIEULKIYEOK
-0xA473	0xCA1E	# HANGUL SYLLABLE SSANGCIEUC-YA-RIEULMIEUM
-0xA474	0xCA1F	# HANGUL SYLLABLE SSANGCIEUC-YA-RIEULPIEUP
-0xA475	0xCA20	# HANGUL SYLLABLE SSANGCIEUC-YA-RIEULSIOS
-0xA476	0xCA21	# HANGUL SYLLABLE SSANGCIEUC-YA-RIEULTHIEUTH
-0xA477	0xCA22	# HANGUL SYLLABLE SSANGCIEUC-YA-RIEULPHIEUPH
-0xA478	0xCA23	# HANGUL SYLLABLE SSANGCIEUC-YA-RIEULHIEUH
-0xA479	0xCA24	# HANGUL SYLLABLE SSANGCIEUC-YA-MIEUM
-0xA47A	0xCA25	# HANGUL SYLLABLE SSANGCIEUC-YA-PIEUP
-0xA481	0xCA26	# HANGUL SYLLABLE SSANGCIEUC-YA-PIEUPSIOS
-0xA482	0xCA27	# HANGUL SYLLABLE SSANGCIEUC-YA-SIOS
-0xA483	0xCA28	# HANGUL SYLLABLE SSANGCIEUC-YA-SSANGSIOS
-0xA484	0xCA2A	# HANGUL SYLLABLE SSANGCIEUC-YA-CIEUC
-0xA485	0xCA2B	# HANGUL SYLLABLE SSANGCIEUC-YA-CHIEUCH
-0xA486	0xCA2C	# HANGUL SYLLABLE SSANGCIEUC-YA-KHIEUKH
-0xA487	0xCA2D	# HANGUL SYLLABLE SSANGCIEUC-YA-THIEUTH
-0xA488	0xCA2E	# HANGUL SYLLABLE SSANGCIEUC-YA-PHIEUPH
-0xA489	0xCA2F	# HANGUL SYLLABLE SSANGCIEUC-YA-HIEUH
-0xA48A	0xCA30	# HANGUL SYLLABLE SSANGCIEUC-YAE
-0xA48B	0xCA31	# HANGUL SYLLABLE SSANGCIEUC-YAE-KIYEOK
-0xA48C	0xCA32	# HANGUL SYLLABLE SSANGCIEUC-YAE-SSANGKIYEOK
-0xA48D	0xCA33	# HANGUL SYLLABLE SSANGCIEUC-YAE-KIYEOKSIOS
-0xA48E	0xCA34	# HANGUL SYLLABLE SSANGCIEUC-YAE-NIEUN
-0xA48F	0xCA35	# HANGUL SYLLABLE SSANGCIEUC-YAE-NIEUNCIEUC
-0xA490	0xCA36	# HANGUL SYLLABLE SSANGCIEUC-YAE-NIEUNHIEUH
-0xA491	0xCA37	# HANGUL SYLLABLE SSANGCIEUC-YAE-TIKEUT
-0xA492	0xCA38	# HANGUL SYLLABLE SSANGCIEUC-YAE-RIEUL
-0xA493	0xCA39	# HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULKIYEOK
-0xA494	0xCA3A	# HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULMIEUM
-0xA495	0xCA3B	# HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULPIEUP
-0xA496	0xCA3C	# HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULSIOS
-0xA497	0xCA3D	# HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULTHIEUTH
-0xA498	0xCA3E	# HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULPHIEUPH
-0xA499	0xCA3F	# HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULHIEUH
-0xA49A	0xCA40	# HANGUL SYLLABLE SSANGCIEUC-YAE-MIEUM
-0xA49B	0xCA41	# HANGUL SYLLABLE SSANGCIEUC-YAE-PIEUP
-0xA49C	0xCA42	# HANGUL SYLLABLE SSANGCIEUC-YAE-PIEUPSIOS
-0xA49D	0xCA43	# HANGUL SYLLABLE SSANGCIEUC-YAE-SIOS
-0xA49E	0xCA44	# HANGUL SYLLABLE SSANGCIEUC-YAE-SSANGSIOS
-0xA49F	0xCA45	# HANGUL SYLLABLE SSANGCIEUC-YAE-IEUNG
-0xA4A0	0xCA46	# HANGUL SYLLABLE SSANGCIEUC-YAE-CIEUC
-0xA4A1	0x3131	# HANGUL LETTER KIYEOK
-0xA4A2	0x3132	# HANGUL LETTER SSANGKIYEOK
-0xA4A3	0x3133	# HANGUL LETTER KIYEOK-SIOS
-0xA4A4	0x3134	# HANGUL LETTER NIEUN
-0xA4A5	0x3135	# HANGUL LETTER NIEUN-CIEUC
-0xA4A6	0x3136	# HANGUL LETTER NIEUN-HIEUH
-0xA4A7	0x3137	# HANGUL LETTER TIKEUT
-0xA4A8	0x3138	# HANGUL LETTER SSANGTIKEUT
-0xA4A9	0x3139	# HANGUL LETTER RIEUL
-0xA4AA	0x313A	# HANGUL LETTER RIEUL-KIYEOK
-0xA4AB	0x313B	# HANGUL LETTER RIEUL-MIEUM
-0xA4AC	0x313C	# HANGUL LETTER RIEUL-PIEUP
-0xA4AD	0x313D	# HANGUL LETTER RIEUL-SIOS
-0xA4AE	0x313E	# HANGUL LETTER RIEUL-THIEUTH
-0xA4AF	0x313F	# HANGUL LETTER RIEUL-PHIEUPH
-0xA4B0	0x3140	# HANGUL LETTER RIEUL-HIEUH
-0xA4B1	0x3141	# HANGUL LETTER MIEUM
-0xA4B2	0x3142	# HANGUL LETTER PIEUP
-0xA4B3	0x3143	# HANGUL LETTER SSANGPIEUP
-0xA4B4	0x3144	# HANGUL LETTER PIEUP-SIOS
-0xA4B5	0x3145	# HANGUL LETTER SIOS
-0xA4B6	0x3146	# HANGUL LETTER SSANGSIOS
-0xA4B7	0x3147	# HANGUL LETTER IEUNG
-0xA4B8	0x3148	# HANGUL LETTER CIEUC
-0xA4B9	0x3149	# HANGUL LETTER SSANGCIEUC
-0xA4BA	0x314A	# HANGUL LETTER CHIEUCH
-0xA4BB	0x314B	# HANGUL LETTER KHIEUKH
-0xA4BC	0x314C	# HANGUL LETTER THIEUTH
-0xA4BD	0x314D	# HANGUL LETTER PHIEUPH
-0xA4BE	0x314E	# HANGUL LETTER HIEUH
-0xA4BF	0x314F	# HANGUL LETTER A
-0xA4C0	0x3150	# HANGUL LETTER AE
-0xA4C1	0x3151	# HANGUL LETTER YA
-0xA4C2	0x3152	# HANGUL LETTER YAE
-0xA4C3	0x3153	# HANGUL LETTER EO
-0xA4C4	0x3154	# HANGUL LETTER E
-0xA4C5	0x3155	# HANGUL LETTER YEO
-0xA4C6	0x3156	# HANGUL LETTER YE
-0xA4C7	0x3157	# HANGUL LETTER O
-0xA4C8	0x3158	# HANGUL LETTER WA
-0xA4C9	0x3159	# HANGUL LETTER WAE
-0xA4CA	0x315A	# HANGUL LETTER OE
-0xA4CB	0x315B	# HANGUL LETTER YO
-0xA4CC	0x315C	# HANGUL LETTER U
-0xA4CD	0x315D	# HANGUL LETTER WEO
-0xA4CE	0x315E	# HANGUL LETTER WE
-0xA4CF	0x315F	# HANGUL LETTER WI
-0xA4D0	0x3160	# HANGUL LETTER YU
-0xA4D1	0x3161	# HANGUL LETTER EU
-0xA4D2	0x3162	# HANGUL LETTER YI
-0xA4D3	0x3163	# HANGUL LETTER I
-0xA4D4	0x3164	# HANGUL FILLER
-0xA4D5	0x3165	# HANGUL LETTER SSANGNIEUN
-0xA4D6	0x3166	# HANGUL LETTER NIEUN-TIKEUT
-0xA4D7	0x3167	# HANGUL LETTER NIEUN-SIOS
-0xA4D8	0x3168	# HANGUL LETTER NIEUN-PANSIOS
-0xA4D9	0x3169	# HANGUL LETTER RIEUL-KIYEOK-SIOS
-0xA4DA	0x316A	# HANGUL LETTER RIEUL-TIKEUT
-0xA4DB	0x316B	# HANGUL LETTER RIEUL-PIEUP-SIOS
-0xA4DC	0x316C	# HANGUL LETTER RIEUL-PANSIOS
-0xA4DD	0x316D	# HANGUL LETTER RIEUL-YEORINHIEUH
-0xA4DE	0x316E	# HANGUL LETTER MIEUM-PIEUP
-0xA4DF	0x316F	# HANGUL LETTER MIEUM-SIOS
-0xA4E0	0x3170	# HANGUL LETTER MIEUM-PANSIOS
-0xA4E1	0x3171	# HANGUL LETTER KAPYEOUNMIEUM
-0xA4E2	0x3172	# HANGUL LETTER PIEUP-KIYEOK
-0xA4E3	0x3173	# HANGUL LETTER PIEUP-TIKEUT
-0xA4E4	0x3174	# HANGUL LETTER PIEUP-SIOS-KIYEOK
-0xA4E5	0x3175	# HANGUL LETTER PIEUP-SIOS-TIKEUT
-0xA4E6	0x3176	# HANGUL LETTER PIEUP-CIEUC
-0xA4E7	0x3177	# HANGUL LETTER PIEUP-THIEUTH
-0xA4E8	0x3178	# HANGUL LETTER KAPYEOUNPIEUP
-0xA4E9	0x3179	# HANGUL LETTER KAPYEOUNSSANGPIEUP
-0xA4EA	0x317A	# HANGUL LETTER SIOS-KIYEOK
-0xA4EB	0x317B	# HANGUL LETTER SIOS-NIEUN
-0xA4EC	0x317C	# HANGUL LETTER SIOS-TIKEUT
-0xA4ED	0x317D	# HANGUL LETTER SIOS-PIEUP
-0xA4EE	0x317E	# HANGUL LETTER SIOS-CIEUC
-0xA4EF	0x317F	# HANGUL LETTER PANSIOS
-0xA4F0	0x3180	# HANGUL LETTER SSANGIEUNG
-0xA4F1	0x3181	# HANGUL LETTER YESIEUNG
-0xA4F2	0x3182	# HANGUL LETTER YESIEUNG-SIOS
-0xA4F3	0x3183	# HANGUL LETTER YESIEUNG-PANSIOS
-0xA4F4	0x3184	# HANGUL LETTER KAPYEOUNPHIEUPH
-0xA4F5	0x3185	# HANGUL LETTER SSANGHIEUH
-0xA4F6	0x3186	# HANGUL LETTER YEORINHIEUH
-0xA4F7	0x3187	# HANGUL LETTER YO-YA
-0xA4F8	0x3188	# HANGUL LETTER YO-YAE
-0xA4F9	0x3189	# HANGUL LETTER YO-I
-0xA4FA	0x318A	# HANGUL LETTER YU-YEO
-0xA4FB	0x318B	# HANGUL LETTER YU-YE
-0xA4FC	0x318C	# HANGUL LETTER YU-I
-0xA4FD	0x318D	# HANGUL LETTER ARAEA
-0xA4FE	0x318E	# HANGUL LETTER ARAEAE
-0xA541	0xCA47	# HANGUL SYLLABLE SSANGCIEUC-YAE-CHIEUCH
-0xA542	0xCA48	# HANGUL SYLLABLE SSANGCIEUC-YAE-KHIEUKH
-0xA543	0xCA49	# HANGUL SYLLABLE SSANGCIEUC-YAE-THIEUTH
-0xA544	0xCA4A	# HANGUL SYLLABLE SSANGCIEUC-YAE-PHIEUPH
-0xA545	0xCA4B	# HANGUL SYLLABLE SSANGCIEUC-YAE-HIEUH
-0xA546	0xCA4E	# HANGUL SYLLABLE SSANGCIEUC-EO-SSANGKIYEOK
-0xA547	0xCA4F	# HANGUL SYLLABLE SSANGCIEUC-EO-KIYEOKSIOS
-0xA548	0xCA51	# HANGUL SYLLABLE SSANGCIEUC-EO-NIEUNCIEUC
-0xA549	0xCA52	# HANGUL SYLLABLE SSANGCIEUC-EO-NIEUNHIEUH
-0xA54A	0xCA53	# HANGUL SYLLABLE SSANGCIEUC-EO-TIKEUT
-0xA54B	0xCA55	# HANGUL SYLLABLE SSANGCIEUC-EO-RIEULKIYEOK
-0xA54C	0xCA56	# HANGUL SYLLABLE SSANGCIEUC-EO-RIEULMIEUM
-0xA54D	0xCA57	# HANGUL SYLLABLE SSANGCIEUC-EO-RIEULPIEUP
-0xA54E	0xCA58	# HANGUL SYLLABLE SSANGCIEUC-EO-RIEULSIOS
-0xA54F	0xCA59	# HANGUL SYLLABLE SSANGCIEUC-EO-RIEULTHIEUTH
-0xA550	0xCA5A	# HANGUL SYLLABLE SSANGCIEUC-EO-RIEULPHIEUPH
-0xA551	0xCA5B	# HANGUL SYLLABLE SSANGCIEUC-EO-RIEULHIEUH
-0xA552	0xCA5E	# HANGUL SYLLABLE SSANGCIEUC-EO-PIEUPSIOS
-0xA553	0xCA62	# HANGUL SYLLABLE SSANGCIEUC-EO-CIEUC
-0xA554	0xCA63	# HANGUL SYLLABLE SSANGCIEUC-EO-CHIEUCH
-0xA555	0xCA64	# HANGUL SYLLABLE SSANGCIEUC-EO-KHIEUKH
-0xA556	0xCA65	# HANGUL SYLLABLE SSANGCIEUC-EO-THIEUTH
-0xA557	0xCA66	# HANGUL SYLLABLE SSANGCIEUC-EO-PHIEUPH
-0xA558	0xCA67	# HANGUL SYLLABLE SSANGCIEUC-EO-HIEUH
-0xA559	0xCA69	# HANGUL SYLLABLE SSANGCIEUC-E-KIYEOK
-0xA55A	0xCA6A	# HANGUL SYLLABLE SSANGCIEUC-E-SSANGKIYEOK
-0xA561	0xCA6B	# HANGUL SYLLABLE SSANGCIEUC-E-KIYEOKSIOS
-0xA562	0xCA6C	# HANGUL SYLLABLE SSANGCIEUC-E-NIEUN
-0xA563	0xCA6D	# HANGUL SYLLABLE SSANGCIEUC-E-NIEUNCIEUC
-0xA564	0xCA6E	# HANGUL SYLLABLE SSANGCIEUC-E-NIEUNHIEUH
-0xA565	0xCA6F	# HANGUL SYLLABLE SSANGCIEUC-E-TIKEUT
-0xA566	0xCA70	# HANGUL SYLLABLE SSANGCIEUC-E-RIEUL
-0xA567	0xCA71	# HANGUL SYLLABLE SSANGCIEUC-E-RIEULKIYEOK
-0xA568	0xCA72	# HANGUL SYLLABLE SSANGCIEUC-E-RIEULMIEUM
-0xA569	0xCA73	# HANGUL SYLLABLE SSANGCIEUC-E-RIEULPIEUP
-0xA56A	0xCA74	# HANGUL SYLLABLE SSANGCIEUC-E-RIEULSIOS
-0xA56B	0xCA75	# HANGUL SYLLABLE SSANGCIEUC-E-RIEULTHIEUTH
-0xA56C	0xCA76	# HANGUL SYLLABLE SSANGCIEUC-E-RIEULPHIEUPH
-0xA56D	0xCA77	# HANGUL SYLLABLE SSANGCIEUC-E-RIEULHIEUH
-0xA56E	0xCA78	# HANGUL SYLLABLE SSANGCIEUC-E-MIEUM
-0xA56F	0xCA79	# HANGUL SYLLABLE SSANGCIEUC-E-PIEUP
-0xA570	0xCA7A	# HANGUL SYLLABLE SSANGCIEUC-E-PIEUPSIOS
-0xA571	0xCA7B	# HANGUL SYLLABLE SSANGCIEUC-E-SIOS
-0xA572	0xCA7C	# HANGUL SYLLABLE SSANGCIEUC-E-SSANGSIOS
-0xA573	0xCA7E	# HANGUL SYLLABLE SSANGCIEUC-E-CIEUC
-0xA574	0xCA7F	# HANGUL SYLLABLE SSANGCIEUC-E-CHIEUCH
-0xA575	0xCA80	# HANGUL SYLLABLE SSANGCIEUC-E-KHIEUKH
-0xA576	0xCA81	# HANGUL SYLLABLE SSANGCIEUC-E-THIEUTH
-0xA577	0xCA82	# HANGUL SYLLABLE SSANGCIEUC-E-PHIEUPH
-0xA578	0xCA83	# HANGUL SYLLABLE SSANGCIEUC-E-HIEUH
-0xA579	0xCA85	# HANGUL SYLLABLE SSANGCIEUC-YEO-KIYEOK
-0xA57A	0xCA86	# HANGUL SYLLABLE SSANGCIEUC-YEO-SSANGKIYEOK
-0xA581	0xCA87	# HANGUL SYLLABLE SSANGCIEUC-YEO-KIYEOKSIOS
-0xA582	0xCA88	# HANGUL SYLLABLE SSANGCIEUC-YEO-NIEUN
-0xA583	0xCA89	# HANGUL SYLLABLE SSANGCIEUC-YEO-NIEUNCIEUC
-0xA584	0xCA8A	# HANGUL SYLLABLE SSANGCIEUC-YEO-NIEUNHIEUH
-0xA585	0xCA8B	# HANGUL SYLLABLE SSANGCIEUC-YEO-TIKEUT
-0xA586	0xCA8C	# HANGUL SYLLABLE SSANGCIEUC-YEO-RIEUL
-0xA587	0xCA8D	# HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULKIYEOK
-0xA588	0xCA8E	# HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULMIEUM
-0xA589	0xCA8F	# HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULPIEUP
-0xA58A	0xCA90	# HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULSIOS
-0xA58B	0xCA91	# HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULTHIEUTH
-0xA58C	0xCA92	# HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULPHIEUPH
-0xA58D	0xCA93	# HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULHIEUH
-0xA58E	0xCA94	# HANGUL SYLLABLE SSANGCIEUC-YEO-MIEUM
-0xA58F	0xCA95	# HANGUL SYLLABLE SSANGCIEUC-YEO-PIEUP
-0xA590	0xCA96	# HANGUL SYLLABLE SSANGCIEUC-YEO-PIEUPSIOS
-0xA591	0xCA97	# HANGUL SYLLABLE SSANGCIEUC-YEO-SIOS
-0xA592	0xCA99	# HANGUL SYLLABLE SSANGCIEUC-YEO-IEUNG
-0xA593	0xCA9A	# HANGUL SYLLABLE SSANGCIEUC-YEO-CIEUC
-0xA594	0xCA9B	# HANGUL SYLLABLE SSANGCIEUC-YEO-CHIEUCH
-0xA595	0xCA9C	# HANGUL SYLLABLE SSANGCIEUC-YEO-KHIEUKH
-0xA596	0xCA9D	# HANGUL SYLLABLE SSANGCIEUC-YEO-THIEUTH
-0xA597	0xCA9E	# HANGUL SYLLABLE SSANGCIEUC-YEO-PHIEUPH
-0xA598	0xCA9F	# HANGUL SYLLABLE SSANGCIEUC-YEO-HIEUH
-0xA599	0xCAA0	# HANGUL SYLLABLE SSANGCIEUC-YE
-0xA59A	0xCAA1	# HANGUL SYLLABLE SSANGCIEUC-YE-KIYEOK
-0xA59B	0xCAA2	# HANGUL SYLLABLE SSANGCIEUC-YE-SSANGKIYEOK
-0xA59C	0xCAA3	# HANGUL SYLLABLE SSANGCIEUC-YE-KIYEOKSIOS
-0xA59D	0xCAA4	# HANGUL SYLLABLE SSANGCIEUC-YE-NIEUN
-0xA59E	0xCAA5	# HANGUL SYLLABLE SSANGCIEUC-YE-NIEUNCIEUC
-0xA59F	0xCAA6	# HANGUL SYLLABLE SSANGCIEUC-YE-NIEUNHIEUH
-0xA5A0	0xCAA7	# HANGUL SYLLABLE SSANGCIEUC-YE-TIKEUT
-0xA5A1	0x2170	# SMALL ROMAN NUMERAL ONE
-0xA5A2	0x2171	# SMALL ROMAN NUMERAL TWO
-0xA5A3	0x2172	# SMALL ROMAN NUMERAL THREE
-0xA5A4	0x2173	# SMALL ROMAN NUMERAL FOUR
-0xA5A5	0x2174	# SMALL ROMAN NUMERAL FIVE
-0xA5A6	0x2175	# SMALL ROMAN NUMERAL SIX
-0xA5A7	0x2176	# SMALL ROMAN NUMERAL SEVEN
-0xA5A8	0x2177	# SMALL ROMAN NUMERAL EIGHT
-0xA5A9	0x2178	# SMALL ROMAN NUMERAL NINE
-0xA5AA	0x2179	# SMALL ROMAN NUMERAL TEN
-0xA5B0	0x2160	# ROMAN NUMERAL ONE
-0xA5B1	0x2161	# ROMAN NUMERAL TWO
-0xA5B2	0x2162	# ROMAN NUMERAL THREE
-0xA5B3	0x2163	# ROMAN NUMERAL FOUR
-0xA5B4	0x2164	# ROMAN NUMERAL FIVE
-0xA5B5	0x2165	# ROMAN NUMERAL SIX
-0xA5B6	0x2166	# ROMAN NUMERAL SEVEN
-0xA5B7	0x2167	# ROMAN NUMERAL EIGHT
-0xA5B8	0x2168	# ROMAN NUMERAL NINE
-0xA5B9	0x2169	# ROMAN NUMERAL TEN
-0xA5C1	0x0391	# GREEK CAPITAL LETTER ALPHA
-0xA5C2	0x0392	# GREEK CAPITAL LETTER BETA
-0xA5C3	0x0393	# GREEK CAPITAL LETTER GAMMA
-0xA5C4	0x0394	# GREEK CAPITAL LETTER DELTA
-0xA5C5	0x0395	# GREEK CAPITAL LETTER EPSILON
-0xA5C6	0x0396	# GREEK CAPITAL LETTER ZETA
-0xA5C7	0x0397	# GREEK CAPITAL LETTER ETA
-0xA5C8	0x0398	# GREEK CAPITAL LETTER THETA
-0xA5C9	0x0399	# GREEK CAPITAL LETTER IOTA
-0xA5CA	0x039A	# GREEK CAPITAL LETTER KAPPA
-0xA5CB	0x039B	# GREEK CAPITAL LETTER LAMDA
-0xA5CC	0x039C	# GREEK CAPITAL LETTER MU
-0xA5CD	0x039D	# GREEK CAPITAL LETTER NU
-0xA5CE	0x039E	# GREEK CAPITAL LETTER XI
-0xA5CF	0x039F	# GREEK CAPITAL LETTER OMICRON
-0xA5D0	0x03A0	# GREEK CAPITAL LETTER PI
-0xA5D1	0x03A1	# GREEK CAPITAL LETTER RHO
-0xA5D2	0x03A3	# GREEK CAPITAL LETTER SIGMA
-0xA5D3	0x03A4	# GREEK CAPITAL LETTER TAU
-0xA5D4	0x03A5	# GREEK CAPITAL LETTER UPSILON
-0xA5D5	0x03A6	# GREEK CAPITAL LETTER PHI
-0xA5D6	0x03A7	# GREEK CAPITAL LETTER CHI
-0xA5D7	0x03A8	# GREEK CAPITAL LETTER PSI
-0xA5D8	0x03A9	# GREEK CAPITAL LETTER OMEGA
-0xA5E1	0x03B1	# GREEK SMALL LETTER ALPHA
-0xA5E2	0x03B2	# GREEK SMALL LETTER BETA
-0xA5E3	0x03B3	# GREEK SMALL LETTER GAMMA
-0xA5E4	0x03B4	# GREEK SMALL LETTER DELTA
-0xA5E5	0x03B5	# GREEK SMALL LETTER EPSILON
-0xA5E6	0x03B6	# GREEK SMALL LETTER ZETA
-0xA5E7	0x03B7	# GREEK SMALL LETTER ETA
-0xA5E8	0x03B8	# GREEK SMALL LETTER THETA
-0xA5E9	0x03B9	# GREEK SMALL LETTER IOTA
-0xA5EA	0x03BA	# GREEK SMALL LETTER KAPPA
-0xA5EB	0x03BB	# GREEK SMALL LETTER LAMDA
-0xA5EC	0x03BC	# GREEK SMALL LETTER MU
-0xA5ED	0x03BD	# GREEK SMALL LETTER NU
-0xA5EE	0x03BE	# GREEK SMALL LETTER XI
-0xA5EF	0x03BF	# GREEK SMALL LETTER OMICRON
-0xA5F0	0x03C0	# GREEK SMALL LETTER PI
-0xA5F1	0x03C1	# GREEK SMALL LETTER RHO
-0xA5F2	0x03C3	# GREEK SMALL LETTER SIGMA
-0xA5F3	0x03C4	# GREEK SMALL LETTER TAU
-0xA5F4	0x03C5	# GREEK SMALL LETTER UPSILON
-0xA5F5	0x03C6	# GREEK SMALL LETTER PHI
-0xA5F6	0x03C7	# GREEK SMALL LETTER CHI
-0xA5F7	0x03C8	# GREEK SMALL LETTER PSI
-0xA5F8	0x03C9	# GREEK SMALL LETTER OMEGA
-0xA641	0xCAA8	# HANGUL SYLLABLE SSANGCIEUC-YE-RIEUL
-0xA642	0xCAA9	# HANGUL SYLLABLE SSANGCIEUC-YE-RIEULKIYEOK
-0xA643	0xCAAA	# HANGUL SYLLABLE SSANGCIEUC-YE-RIEULMIEUM
-0xA644	0xCAAB	# HANGUL SYLLABLE SSANGCIEUC-YE-RIEULPIEUP
-0xA645	0xCAAC	# HANGUL SYLLABLE SSANGCIEUC-YE-RIEULSIOS
-0xA646	0xCAAD	# HANGUL SYLLABLE SSANGCIEUC-YE-RIEULTHIEUTH
-0xA647	0xCAAE	# HANGUL SYLLABLE SSANGCIEUC-YE-RIEULPHIEUPH
-0xA648	0xCAAF	# HANGUL SYLLABLE SSANGCIEUC-YE-RIEULHIEUH
-0xA649	0xCAB0	# HANGUL SYLLABLE SSANGCIEUC-YE-MIEUM
-0xA64A	0xCAB1	# HANGUL SYLLABLE SSANGCIEUC-YE-PIEUP
-0xA64B	0xCAB2	# HANGUL SYLLABLE SSANGCIEUC-YE-PIEUPSIOS
-0xA64C	0xCAB3	# HANGUL SYLLABLE SSANGCIEUC-YE-SIOS
-0xA64D	0xCAB4	# HANGUL SYLLABLE SSANGCIEUC-YE-SSANGSIOS
-0xA64E	0xCAB5	# HANGUL SYLLABLE SSANGCIEUC-YE-IEUNG
-0xA64F	0xCAB6	# HANGUL SYLLABLE SSANGCIEUC-YE-CIEUC
-0xA650	0xCAB7	# HANGUL SYLLABLE SSANGCIEUC-YE-CHIEUCH
-0xA651	0xCAB8	# HANGUL SYLLABLE SSANGCIEUC-YE-KHIEUKH
-0xA652	0xCAB9	# HANGUL SYLLABLE SSANGCIEUC-YE-THIEUTH
-0xA653	0xCABA	# HANGUL SYLLABLE SSANGCIEUC-YE-PHIEUPH
-0xA654	0xCABB	# HANGUL SYLLABLE SSANGCIEUC-YE-HIEUH
-0xA655	0xCABE	# HANGUL SYLLABLE SSANGCIEUC-O-SSANGKIYEOK
-0xA656	0xCABF	# HANGUL SYLLABLE SSANGCIEUC-O-KIYEOKSIOS
-0xA657	0xCAC1	# HANGUL SYLLABLE SSANGCIEUC-O-NIEUNCIEUC
-0xA658	0xCAC2	# HANGUL SYLLABLE SSANGCIEUC-O-NIEUNHIEUH
-0xA659	0xCAC3	# HANGUL SYLLABLE SSANGCIEUC-O-TIKEUT
-0xA65A	0xCAC5	# HANGUL SYLLABLE SSANGCIEUC-O-RIEULKIYEOK
-0xA661	0xCAC6	# HANGUL SYLLABLE SSANGCIEUC-O-RIEULMIEUM
-0xA662	0xCAC7	# HANGUL SYLLABLE SSANGCIEUC-O-RIEULPIEUP
-0xA663	0xCAC8	# HANGUL SYLLABLE SSANGCIEUC-O-RIEULSIOS
-0xA664	0xCAC9	# HANGUL SYLLABLE SSANGCIEUC-O-RIEULTHIEUTH
-0xA665	0xCACA	# HANGUL SYLLABLE SSANGCIEUC-O-RIEULPHIEUPH
-0xA666	0xCACB	# HANGUL SYLLABLE SSANGCIEUC-O-RIEULHIEUH
-0xA667	0xCACE	# HANGUL SYLLABLE SSANGCIEUC-O-PIEUPSIOS
-0xA668	0xCAD0	# HANGUL SYLLABLE SSANGCIEUC-O-SSANGSIOS
-0xA669	0xCAD2	# HANGUL SYLLABLE SSANGCIEUC-O-CIEUC
-0xA66A	0xCAD4	# HANGUL SYLLABLE SSANGCIEUC-O-KHIEUKH
-0xA66B	0xCAD5	# HANGUL SYLLABLE SSANGCIEUC-O-THIEUTH
-0xA66C	0xCAD6	# HANGUL SYLLABLE SSANGCIEUC-O-PHIEUPH
-0xA66D	0xCAD7	# HANGUL SYLLABLE SSANGCIEUC-O-HIEUH
-0xA66E	0xCADA	# HANGUL SYLLABLE SSANGCIEUC-WA-SSANGKIYEOK
-0xA66F	0xCADB	# HANGUL SYLLABLE SSANGCIEUC-WA-KIYEOKSIOS
-0xA670	0xCADC	# HANGUL SYLLABLE SSANGCIEUC-WA-NIEUN
-0xA671	0xCADD	# HANGUL SYLLABLE SSANGCIEUC-WA-NIEUNCIEUC
-0xA672	0xCADE	# HANGUL SYLLABLE SSANGCIEUC-WA-NIEUNHIEUH
-0xA673	0xCADF	# HANGUL SYLLABLE SSANGCIEUC-WA-TIKEUT
-0xA674	0xCAE1	# HANGUL SYLLABLE SSANGCIEUC-WA-RIEULKIYEOK
-0xA675	0xCAE2	# HANGUL SYLLABLE SSANGCIEUC-WA-RIEULMIEUM
-0xA676	0xCAE3	# HANGUL SYLLABLE SSANGCIEUC-WA-RIEULPIEUP
-0xA677	0xCAE4	# HANGUL SYLLABLE SSANGCIEUC-WA-RIEULSIOS
-0xA678	0xCAE5	# HANGUL SYLLABLE SSANGCIEUC-WA-RIEULTHIEUTH
-0xA679	0xCAE6	# HANGUL SYLLABLE SSANGCIEUC-WA-RIEULPHIEUPH
-0xA67A	0xCAE7	# HANGUL SYLLABLE SSANGCIEUC-WA-RIEULHIEUH
-0xA681	0xCAE8	# HANGUL SYLLABLE SSANGCIEUC-WA-MIEUM
-0xA682	0xCAE9	# HANGUL SYLLABLE SSANGCIEUC-WA-PIEUP
-0xA683	0xCAEA	# HANGUL SYLLABLE SSANGCIEUC-WA-PIEUPSIOS
-0xA684	0xCAEB	# HANGUL SYLLABLE SSANGCIEUC-WA-SIOS
-0xA685	0xCAED	# HANGUL SYLLABLE SSANGCIEUC-WA-IEUNG
-0xA686	0xCAEE	# HANGUL SYLLABLE SSANGCIEUC-WA-CIEUC
-0xA687	0xCAEF	# HANGUL SYLLABLE SSANGCIEUC-WA-CHIEUCH
-0xA688	0xCAF0	# HANGUL SYLLABLE SSANGCIEUC-WA-KHIEUKH
-0xA689	0xCAF1	# HANGUL SYLLABLE SSANGCIEUC-WA-THIEUTH
-0xA68A	0xCAF2	# HANGUL SYLLABLE SSANGCIEUC-WA-PHIEUPH
-0xA68B	0xCAF3	# HANGUL SYLLABLE SSANGCIEUC-WA-HIEUH
-0xA68C	0xCAF5	# HANGUL SYLLABLE SSANGCIEUC-WAE-KIYEOK
-0xA68D	0xCAF6	# HANGUL SYLLABLE SSANGCIEUC-WAE-SSANGKIYEOK
-0xA68E	0xCAF7	# HANGUL SYLLABLE SSANGCIEUC-WAE-KIYEOKSIOS
-0xA68F	0xCAF8	# HANGUL SYLLABLE SSANGCIEUC-WAE-NIEUN
-0xA690	0xCAF9	# HANGUL SYLLABLE SSANGCIEUC-WAE-NIEUNCIEUC
-0xA691	0xCAFA	# HANGUL SYLLABLE SSANGCIEUC-WAE-NIEUNHIEUH
-0xA692	0xCAFB	# HANGUL SYLLABLE SSANGCIEUC-WAE-TIKEUT
-0xA693	0xCAFC	# HANGUL SYLLABLE SSANGCIEUC-WAE-RIEUL
-0xA694	0xCAFD	# HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULKIYEOK
-0xA695	0xCAFE	# HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULMIEUM
-0xA696	0xCAFF	# HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULPIEUP
-0xA697	0xCB00	# HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULSIOS
-0xA698	0xCB01	# HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULTHIEUTH
-0xA699	0xCB02	# HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULPHIEUPH
-0xA69A	0xCB03	# HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULHIEUH
-0xA69B	0xCB04	# HANGUL SYLLABLE SSANGCIEUC-WAE-MIEUM
-0xA69C	0xCB05	# HANGUL SYLLABLE SSANGCIEUC-WAE-PIEUP
-0xA69D	0xCB06	# HANGUL SYLLABLE SSANGCIEUC-WAE-PIEUPSIOS
-0xA69E	0xCB07	# HANGUL SYLLABLE SSANGCIEUC-WAE-SIOS
-0xA69F	0xCB09	# HANGUL SYLLABLE SSANGCIEUC-WAE-IEUNG
-0xA6A0	0xCB0A	# HANGUL SYLLABLE SSANGCIEUC-WAE-CIEUC
-0xA6A1	0x2500	# BOX DRAWINGS LIGHT HORIZONTAL
-0xA6A2	0x2502	# BOX DRAWINGS LIGHT VERTICAL
-0xA6A3	0x250C	# BOX DRAWINGS LIGHT DOWN AND RIGHT
-0xA6A4	0x2510	# BOX DRAWINGS LIGHT DOWN AND LEFT
-0xA6A5	0x2518	# BOX DRAWINGS LIGHT UP AND LEFT
-0xA6A6	0x2514	# BOX DRAWINGS LIGHT UP AND RIGHT
-0xA6A7	0x251C	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-0xA6A8	0x252C	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-0xA6A9	0x2524	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
-0xA6AA	0x2534	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
-0xA6AB	0x253C	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-0xA6AC	0x2501	# BOX DRAWINGS HEAVY HORIZONTAL
-0xA6AD	0x2503	# BOX DRAWINGS HEAVY VERTICAL
-0xA6AE	0x250F	# BOX DRAWINGS HEAVY DOWN AND RIGHT
-0xA6AF	0x2513	# BOX DRAWINGS HEAVY DOWN AND LEFT
-0xA6B0	0x251B	# BOX DRAWINGS HEAVY UP AND LEFT
-0xA6B1	0x2517	# BOX DRAWINGS HEAVY UP AND RIGHT
-0xA6B2	0x2523	# BOX DRAWINGS HEAVY VERTICAL AND RIGHT
-0xA6B3	0x2533	# BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
-0xA6B4	0x252B	# BOX DRAWINGS HEAVY VERTICAL AND LEFT
-0xA6B5	0x253B	# BOX DRAWINGS HEAVY UP AND HORIZONTAL
-0xA6B6	0x254B	# BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
-0xA6B7	0x2520	# BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
-0xA6B8	0x252F	# BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
-0xA6B9	0x2528	# BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
-0xA6BA	0x2537	# BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
-0xA6BB	0x253F	# BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
-0xA6BC	0x251D	# BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
-0xA6BD	0x2530	# BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
-0xA6BE	0x2525	# BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
-0xA6BF	0x2538	# BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
-0xA6C0	0x2542	# BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
-0xA6C1	0x2512	# BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
-0xA6C2	0x2511	# BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
-0xA6C3	0x251A	# BOX DRAWINGS UP HEAVY AND LEFT LIGHT
-0xA6C4	0x2519	# BOX DRAWINGS UP LIGHT AND LEFT HEAVY
-0xA6C5	0x2516	# BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
-0xA6C6	0x2515	# BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
-0xA6C7	0x250E	# BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
-0xA6C8	0x250D	# BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
-0xA6C9	0x251E	# BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
-0xA6CA	0x251F	# BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
-0xA6CB	0x2521	# BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
-0xA6CC	0x2522	# BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
-0xA6CD	0x2526	# BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
-0xA6CE	0x2527	# BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
-0xA6CF	0x2529	# BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
-0xA6D0	0x252A	# BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
-0xA6D1	0x252D	# BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
-0xA6D2	0x252E	# BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
-0xA6D3	0x2531	# BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
-0xA6D4	0x2532	# BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
-0xA6D5	0x2535	# BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
-0xA6D6	0x2536	# BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
-0xA6D7	0x2539	# BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
-0xA6D8	0x253A	# BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
-0xA6D9	0x253D	# BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
-0xA6DA	0x253E	# BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
-0xA6DB	0x2540	# BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
-0xA6DC	0x2541	# BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
-0xA6DD	0x2543	# BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
-0xA6DE	0x2544	# BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
-0xA6DF	0x2545	# BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
-0xA6E0	0x2546	# BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
-0xA6E1	0x2547	# BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
-0xA6E2	0x2548	# BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
-0xA6E3	0x2549	# BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
-0xA6E4	0x254A	# BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
-0xA741	0xCB0B	# HANGUL SYLLABLE SSANGCIEUC-WAE-CHIEUCH
-0xA742	0xCB0C	# HANGUL SYLLABLE SSANGCIEUC-WAE-KHIEUKH
-0xA743	0xCB0D	# HANGUL SYLLABLE SSANGCIEUC-WAE-THIEUTH
-0xA744	0xCB0E	# HANGUL SYLLABLE SSANGCIEUC-WAE-PHIEUPH
-0xA745	0xCB0F	# HANGUL SYLLABLE SSANGCIEUC-WAE-HIEUH
-0xA746	0xCB11	# HANGUL SYLLABLE SSANGCIEUC-OE-KIYEOK
-0xA747	0xCB12	# HANGUL SYLLABLE SSANGCIEUC-OE-SSANGKIYEOK
-0xA748	0xCB13	# HANGUL SYLLABLE SSANGCIEUC-OE-KIYEOKSIOS
-0xA749	0xCB15	# HANGUL SYLLABLE SSANGCIEUC-OE-NIEUNCIEUC
-0xA74A	0xCB16	# HANGUL SYLLABLE SSANGCIEUC-OE-NIEUNHIEUH
-0xA74B	0xCB17	# HANGUL SYLLABLE SSANGCIEUC-OE-TIKEUT
-0xA74C	0xCB19	# HANGUL SYLLABLE SSANGCIEUC-OE-RIEULKIYEOK
-0xA74D	0xCB1A	# HANGUL SYLLABLE SSANGCIEUC-OE-RIEULMIEUM
-0xA74E	0xCB1B	# HANGUL SYLLABLE SSANGCIEUC-OE-RIEULPIEUP
-0xA74F	0xCB1C	# HANGUL SYLLABLE SSANGCIEUC-OE-RIEULSIOS
-0xA750	0xCB1D	# HANGUL SYLLABLE SSANGCIEUC-OE-RIEULTHIEUTH
-0xA751	0xCB1E	# HANGUL SYLLABLE SSANGCIEUC-OE-RIEULPHIEUPH
-0xA752	0xCB1F	# HANGUL SYLLABLE SSANGCIEUC-OE-RIEULHIEUH
-0xA753	0xCB22	# HANGUL SYLLABLE SSANGCIEUC-OE-PIEUPSIOS
-0xA754	0xCB23	# HANGUL SYLLABLE SSANGCIEUC-OE-SIOS
-0xA755	0xCB24	# HANGUL SYLLABLE SSANGCIEUC-OE-SSANGSIOS
-0xA756	0xCB25	# HANGUL SYLLABLE SSANGCIEUC-OE-IEUNG
-0xA757	0xCB26	# HANGUL SYLLABLE SSANGCIEUC-OE-CIEUC
-0xA758	0xCB27	# HANGUL SYLLABLE SSANGCIEUC-OE-CHIEUCH
-0xA759	0xCB28	# HANGUL SYLLABLE SSANGCIEUC-OE-KHIEUKH
-0xA75A	0xCB29	# HANGUL SYLLABLE SSANGCIEUC-OE-THIEUTH
-0xA761	0xCB2A	# HANGUL SYLLABLE SSANGCIEUC-OE-PHIEUPH
-0xA762	0xCB2B	# HANGUL SYLLABLE SSANGCIEUC-OE-HIEUH
-0xA763	0xCB2C	# HANGUL SYLLABLE SSANGCIEUC-YO
-0xA764	0xCB2D	# HANGUL SYLLABLE SSANGCIEUC-YO-KIYEOK
-0xA765	0xCB2E	# HANGUL SYLLABLE SSANGCIEUC-YO-SSANGKIYEOK
-0xA766	0xCB2F	# HANGUL SYLLABLE SSANGCIEUC-YO-KIYEOKSIOS
-0xA767	0xCB30	# HANGUL SYLLABLE SSANGCIEUC-YO-NIEUN
-0xA768	0xCB31	# HANGUL SYLLABLE SSANGCIEUC-YO-NIEUNCIEUC
-0xA769	0xCB32	# HANGUL SYLLABLE SSANGCIEUC-YO-NIEUNHIEUH
-0xA76A	0xCB33	# HANGUL SYLLABLE SSANGCIEUC-YO-TIKEUT
-0xA76B	0xCB34	# HANGUL SYLLABLE SSANGCIEUC-YO-RIEUL
-0xA76C	0xCB35	# HANGUL SYLLABLE SSANGCIEUC-YO-RIEULKIYEOK
-0xA76D	0xCB36	# HANGUL SYLLABLE SSANGCIEUC-YO-RIEULMIEUM
-0xA76E	0xCB37	# HANGUL SYLLABLE SSANGCIEUC-YO-RIEULPIEUP
-0xA76F	0xCB38	# HANGUL SYLLABLE SSANGCIEUC-YO-RIEULSIOS
-0xA770	0xCB39	# HANGUL SYLLABLE SSANGCIEUC-YO-RIEULTHIEUTH
-0xA771	0xCB3A	# HANGUL SYLLABLE SSANGCIEUC-YO-RIEULPHIEUPH
-0xA772	0xCB3B	# HANGUL SYLLABLE SSANGCIEUC-YO-RIEULHIEUH
-0xA773	0xCB3C	# HANGUL SYLLABLE SSANGCIEUC-YO-MIEUM
-0xA774	0xCB3D	# HANGUL SYLLABLE SSANGCIEUC-YO-PIEUP
-0xA775	0xCB3E	# HANGUL SYLLABLE SSANGCIEUC-YO-PIEUPSIOS
-0xA776	0xCB3F	# HANGUL SYLLABLE SSANGCIEUC-YO-SIOS
-0xA777	0xCB40	# HANGUL SYLLABLE SSANGCIEUC-YO-SSANGSIOS
-0xA778	0xCB42	# HANGUL SYLLABLE SSANGCIEUC-YO-CIEUC
-0xA779	0xCB43	# HANGUL SYLLABLE SSANGCIEUC-YO-CHIEUCH
-0xA77A	0xCB44	# HANGUL SYLLABLE SSANGCIEUC-YO-KHIEUKH
-0xA781	0xCB45	# HANGUL SYLLABLE SSANGCIEUC-YO-THIEUTH
-0xA782	0xCB46	# HANGUL SYLLABLE SSANGCIEUC-YO-PHIEUPH
-0xA783	0xCB47	# HANGUL SYLLABLE SSANGCIEUC-YO-HIEUH
-0xA784	0xCB4A	# HANGUL SYLLABLE SSANGCIEUC-U-SSANGKIYEOK
-0xA785	0xCB4B	# HANGUL SYLLABLE SSANGCIEUC-U-KIYEOKSIOS
-0xA786	0xCB4D	# HANGUL SYLLABLE SSANGCIEUC-U-NIEUNCIEUC
-0xA787	0xCB4E	# HANGUL SYLLABLE SSANGCIEUC-U-NIEUNHIEUH
-0xA788	0xCB4F	# HANGUL SYLLABLE SSANGCIEUC-U-TIKEUT
-0xA789	0xCB51	# HANGUL SYLLABLE SSANGCIEUC-U-RIEULKIYEOK
-0xA78A	0xCB52	# HANGUL SYLLABLE SSANGCIEUC-U-RIEULMIEUM
-0xA78B	0xCB53	# HANGUL SYLLABLE SSANGCIEUC-U-RIEULPIEUP
-0xA78C	0xCB54	# HANGUL SYLLABLE SSANGCIEUC-U-RIEULSIOS
-0xA78D	0xCB55	# HANGUL SYLLABLE SSANGCIEUC-U-RIEULTHIEUTH
-0xA78E	0xCB56	# HANGUL SYLLABLE SSANGCIEUC-U-RIEULPHIEUPH
-0xA78F	0xCB57	# HANGUL SYLLABLE SSANGCIEUC-U-RIEULHIEUH
-0xA790	0xCB5A	# HANGUL SYLLABLE SSANGCIEUC-U-PIEUPSIOS
-0xA791	0xCB5B	# HANGUL SYLLABLE SSANGCIEUC-U-SIOS
-0xA792	0xCB5C	# HANGUL SYLLABLE SSANGCIEUC-U-SSANGSIOS
-0xA793	0xCB5E	# HANGUL SYLLABLE SSANGCIEUC-U-CIEUC
-0xA794	0xCB5F	# HANGUL SYLLABLE SSANGCIEUC-U-CHIEUCH
-0xA795	0xCB60	# HANGUL SYLLABLE SSANGCIEUC-U-KHIEUKH
-0xA796	0xCB61	# HANGUL SYLLABLE SSANGCIEUC-U-THIEUTH
-0xA797	0xCB62	# HANGUL SYLLABLE SSANGCIEUC-U-PHIEUPH
-0xA798	0xCB63	# HANGUL SYLLABLE SSANGCIEUC-U-HIEUH
-0xA799	0xCB65	# HANGUL SYLLABLE SSANGCIEUC-WEO-KIYEOK
-0xA79A	0xCB66	# HANGUL SYLLABLE SSANGCIEUC-WEO-SSANGKIYEOK
-0xA79B	0xCB67	# HANGUL SYLLABLE SSANGCIEUC-WEO-KIYEOKSIOS
-0xA79C	0xCB68	# HANGUL SYLLABLE SSANGCIEUC-WEO-NIEUN
-0xA79D	0xCB69	# HANGUL SYLLABLE SSANGCIEUC-WEO-NIEUNCIEUC
-0xA79E	0xCB6A	# HANGUL SYLLABLE SSANGCIEUC-WEO-NIEUNHIEUH
-0xA79F	0xCB6B	# HANGUL SYLLABLE SSANGCIEUC-WEO-TIKEUT
-0xA7A0	0xCB6C	# HANGUL SYLLABLE SSANGCIEUC-WEO-RIEUL
-0xA7A1	0x3395	# SQUARE MU L
-0xA7A2	0x3396	# SQUARE ML
-0xA7A3	0x3397	# SQUARE DL
-0xA7A4	0x2113	# SCRIPT SMALL L
-0xA7A5	0x3398	# SQUARE KL
-0xA7A6	0x33C4	# SQUARE CC
-0xA7A7	0x33A3	# SQUARE MM CUBED
-0xA7A8	0x33A4	# SQUARE CM CUBED
-0xA7A9	0x33A5	# SQUARE M CUBED
-0xA7AA	0x33A6	# SQUARE KM CUBED
-0xA7AB	0x3399	# SQUARE FM
-0xA7AC	0x339A	# SQUARE NM
-0xA7AD	0x339B	# SQUARE MU M
-0xA7AE	0x339C	# SQUARE MM
-0xA7AF	0x339D	# SQUARE CM
-0xA7B0	0x339E	# SQUARE KM
-0xA7B1	0x339F	# SQUARE MM SQUARED
-0xA7B2	0x33A0	# SQUARE CM SQUARED
-0xA7B3	0x33A1	# SQUARE M SQUARED
-0xA7B4	0x33A2	# SQUARE KM SQUARED
-0xA7B5	0x33CA	# SQUARE HA
-0xA7B6	0x338D	# SQUARE MU G
-0xA7B7	0x338E	# SQUARE MG
-0xA7B8	0x338F	# SQUARE KG
-0xA7B9	0x33CF	# SQUARE KT
-0xA7BA	0x3388	# SQUARE CAL
-0xA7BB	0x3389	# SQUARE KCAL
-0xA7BC	0x33C8	# SQUARE DB
-0xA7BD	0x33A7	# SQUARE M OVER S
-0xA7BE	0x33A8	# SQUARE M OVER S SQUARED
-0xA7BF	0x33B0	# SQUARE PS
-0xA7C0	0x33B1	# SQUARE NS
-0xA7C1	0x33B2	# SQUARE MU S
-0xA7C2	0x33B3	# SQUARE MS
-0xA7C3	0x33B4	# SQUARE PV
-0xA7C4	0x33B5	# SQUARE NV
-0xA7C5	0x33B6	# SQUARE MU V
-0xA7C6	0x33B7	# SQUARE MV
-0xA7C7	0x33B8	# SQUARE KV
-0xA7C8	0x33B9	# SQUARE MV MEGA
-0xA7C9	0x3380	# SQUARE PA AMPS
-0xA7CA	0x3381	# SQUARE NA
-0xA7CB	0x3382	# SQUARE MU A
-0xA7CC	0x3383	# SQUARE MA
-0xA7CD	0x3384	# SQUARE KA
-0xA7CE	0x33BA	# SQUARE PW
-0xA7CF	0x33BB	# SQUARE NW
-0xA7D0	0x33BC	# SQUARE MU W
-0xA7D1	0x33BD	# SQUARE MW
-0xA7D2	0x33BE	# SQUARE KW
-0xA7D3	0x33BF	# SQUARE MW MEGA
-0xA7D4	0x3390	# SQUARE HZ
-0xA7D5	0x3391	# SQUARE KHZ
-0xA7D6	0x3392	# SQUARE MHZ
-0xA7D7	0x3393	# SQUARE GHZ
-0xA7D8	0x3394	# SQUARE THZ
-0xA7D9	0x2126	# OHM SIGN
-0xA7DA	0x33C0	# SQUARE K OHM
-0xA7DB	0x33C1	# SQUARE M OHM
-0xA7DC	0x338A	# SQUARE PF
-0xA7DD	0x338B	# SQUARE NF
-0xA7DE	0x338C	# SQUARE MU F
-0xA7DF	0x33D6	# SQUARE MOL
-0xA7E0	0x33C5	# SQUARE CD
-0xA7E1	0x33AD	# SQUARE RAD
-0xA7E2	0x33AE	# SQUARE RAD OVER S
-0xA7E3	0x33AF	# SQUARE RAD OVER S SQUARED
-0xA7E4	0x33DB	# SQUARE SR
-0xA7E5	0x33A9	# SQUARE PA
-0xA7E6	0x33AA	# SQUARE KPA
-0xA7E7	0x33AB	# SQUARE MPA
-0xA7E8	0x33AC	# SQUARE GPA
-0xA7E9	0x33DD	# SQUARE WB
-0xA7EA	0x33D0	# SQUARE LM
-0xA7EB	0x33D3	# SQUARE LX
-0xA7EC	0x33C3	# SQUARE BQ
-0xA7ED	0x33C9	# SQUARE GY
-0xA7EE	0x33DC	# SQUARE SV
-0xA7EF	0x33C6	# SQUARE C OVER KG
-0xA841	0xCB6D	# HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULKIYEOK
-0xA842	0xCB6E	# HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULMIEUM
-0xA843	0xCB6F	# HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULPIEUP
-0xA844	0xCB70	# HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULSIOS
-0xA845	0xCB71	# HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULTHIEUTH
-0xA846	0xCB72	# HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULPHIEUPH
-0xA847	0xCB73	# HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULHIEUH
-0xA848	0xCB74	# HANGUL SYLLABLE SSANGCIEUC-WEO-MIEUM
-0xA849	0xCB75	# HANGUL SYLLABLE SSANGCIEUC-WEO-PIEUP
-0xA84A	0xCB76	# HANGUL SYLLABLE SSANGCIEUC-WEO-PIEUPSIOS
-0xA84B	0xCB77	# HANGUL SYLLABLE SSANGCIEUC-WEO-SIOS
-0xA84C	0xCB7A	# HANGUL SYLLABLE SSANGCIEUC-WEO-CIEUC
-0xA84D	0xCB7B	# HANGUL SYLLABLE SSANGCIEUC-WEO-CHIEUCH
-0xA84E	0xCB7C	# HANGUL SYLLABLE SSANGCIEUC-WEO-KHIEUKH
-0xA84F	0xCB7D	# HANGUL SYLLABLE SSANGCIEUC-WEO-THIEUTH
-0xA850	0xCB7E	# HANGUL SYLLABLE SSANGCIEUC-WEO-PHIEUPH
-0xA851	0xCB7F	# HANGUL SYLLABLE SSANGCIEUC-WEO-HIEUH
-0xA852	0xCB80	# HANGUL SYLLABLE SSANGCIEUC-WE
-0xA853	0xCB81	# HANGUL SYLLABLE SSANGCIEUC-WE-KIYEOK
-0xA854	0xCB82	# HANGUL SYLLABLE SSANGCIEUC-WE-SSANGKIYEOK
-0xA855	0xCB83	# HANGUL SYLLABLE SSANGCIEUC-WE-KIYEOKSIOS
-0xA856	0xCB84	# HANGUL SYLLABLE SSANGCIEUC-WE-NIEUN
-0xA857	0xCB85	# HANGUL SYLLABLE SSANGCIEUC-WE-NIEUNCIEUC
-0xA858	0xCB86	# HANGUL SYLLABLE SSANGCIEUC-WE-NIEUNHIEUH
-0xA859	0xCB87	# HANGUL SYLLABLE SSANGCIEUC-WE-TIKEUT
-0xA85A	0xCB88	# HANGUL SYLLABLE SSANGCIEUC-WE-RIEUL
-0xA861	0xCB89	# HANGUL SYLLABLE SSANGCIEUC-WE-RIEULKIYEOK
-0xA862	0xCB8A	# HANGUL SYLLABLE SSANGCIEUC-WE-RIEULMIEUM
-0xA863	0xCB8B	# HANGUL SYLLABLE SSANGCIEUC-WE-RIEULPIEUP
-0xA864	0xCB8C	# HANGUL SYLLABLE SSANGCIEUC-WE-RIEULSIOS
-0xA865	0xCB8D	# HANGUL SYLLABLE SSANGCIEUC-WE-RIEULTHIEUTH
-0xA866	0xCB8E	# HANGUL SYLLABLE SSANGCIEUC-WE-RIEULPHIEUPH
-0xA867	0xCB8F	# HANGUL SYLLABLE SSANGCIEUC-WE-RIEULHIEUH
-0xA868	0xCB90	# HANGUL SYLLABLE SSANGCIEUC-WE-MIEUM
-0xA869	0xCB91	# HANGUL SYLLABLE SSANGCIEUC-WE-PIEUP
-0xA86A	0xCB92	# HANGUL SYLLABLE SSANGCIEUC-WE-PIEUPSIOS
-0xA86B	0xCB93	# HANGUL SYLLABLE SSANGCIEUC-WE-SIOS
-0xA86C	0xCB94	# HANGUL SYLLABLE SSANGCIEUC-WE-SSANGSIOS
-0xA86D	0xCB95	# HANGUL SYLLABLE SSANGCIEUC-WE-IEUNG
-0xA86E	0xCB96	# HANGUL SYLLABLE SSANGCIEUC-WE-CIEUC
-0xA86F	0xCB97	# HANGUL SYLLABLE SSANGCIEUC-WE-CHIEUCH
-0xA870	0xCB98	# HANGUL SYLLABLE SSANGCIEUC-WE-KHIEUKH
-0xA871	0xCB99	# HANGUL SYLLABLE SSANGCIEUC-WE-THIEUTH
-0xA872	0xCB9A	# HANGUL SYLLABLE SSANGCIEUC-WE-PHIEUPH
-0xA873	0xCB9B	# HANGUL SYLLABLE SSANGCIEUC-WE-HIEUH
-0xA874	0xCB9D	# HANGUL SYLLABLE SSANGCIEUC-WI-KIYEOK
-0xA875	0xCB9E	# HANGUL SYLLABLE SSANGCIEUC-WI-SSANGKIYEOK
-0xA876	0xCB9F	# HANGUL SYLLABLE SSANGCIEUC-WI-KIYEOKSIOS
-0xA877	0xCBA0	# HANGUL SYLLABLE SSANGCIEUC-WI-NIEUN
-0xA878	0xCBA1	# HANGUL SYLLABLE SSANGCIEUC-WI-NIEUNCIEUC
-0xA879	0xCBA2	# HANGUL SYLLABLE SSANGCIEUC-WI-NIEUNHIEUH
-0xA87A	0xCBA3	# HANGUL SYLLABLE SSANGCIEUC-WI-TIKEUT
-0xA881	0xCBA4	# HANGUL SYLLABLE SSANGCIEUC-WI-RIEUL
-0xA882	0xCBA5	# HANGUL SYLLABLE SSANGCIEUC-WI-RIEULKIYEOK
-0xA883	0xCBA6	# HANGUL SYLLABLE SSANGCIEUC-WI-RIEULMIEUM
-0xA884	0xCBA7	# HANGUL SYLLABLE SSANGCIEUC-WI-RIEULPIEUP
-0xA885	0xCBA8	# HANGUL SYLLABLE SSANGCIEUC-WI-RIEULSIOS
-0xA886	0xCBA9	# HANGUL SYLLABLE SSANGCIEUC-WI-RIEULTHIEUTH
-0xA887	0xCBAA	# HANGUL SYLLABLE SSANGCIEUC-WI-RIEULPHIEUPH
-0xA888	0xCBAB	# HANGUL SYLLABLE SSANGCIEUC-WI-RIEULHIEUH
-0xA889	0xCBAC	# HANGUL SYLLABLE SSANGCIEUC-WI-MIEUM
-0xA88A	0xCBAD	# HANGUL SYLLABLE SSANGCIEUC-WI-PIEUP
-0xA88B	0xCBAE	# HANGUL SYLLABLE SSANGCIEUC-WI-PIEUPSIOS
-0xA88C	0xCBAF	# HANGUL SYLLABLE SSANGCIEUC-WI-SIOS
-0xA88D	0xCBB0	# HANGUL SYLLABLE SSANGCIEUC-WI-SSANGSIOS
-0xA88E	0xCBB1	# HANGUL SYLLABLE SSANGCIEUC-WI-IEUNG
-0xA88F	0xCBB2	# HANGUL SYLLABLE SSANGCIEUC-WI-CIEUC
-0xA890	0xCBB3	# HANGUL SYLLABLE SSANGCIEUC-WI-CHIEUCH
-0xA891	0xCBB4	# HANGUL SYLLABLE SSANGCIEUC-WI-KHIEUKH
-0xA892	0xCBB5	# HANGUL SYLLABLE SSANGCIEUC-WI-THIEUTH
-0xA893	0xCBB6	# HANGUL SYLLABLE SSANGCIEUC-WI-PHIEUPH
-0xA894	0xCBB7	# HANGUL SYLLABLE SSANGCIEUC-WI-HIEUH
-0xA895	0xCBB9	# HANGUL SYLLABLE SSANGCIEUC-YU-KIYEOK
-0xA896	0xCBBA	# HANGUL SYLLABLE SSANGCIEUC-YU-SSANGKIYEOK
-0xA897	0xCBBB	# HANGUL SYLLABLE SSANGCIEUC-YU-KIYEOKSIOS
-0xA898	0xCBBC	# HANGUL SYLLABLE SSANGCIEUC-YU-NIEUN
-0xA899	0xCBBD	# HANGUL SYLLABLE SSANGCIEUC-YU-NIEUNCIEUC
-0xA89A	0xCBBE	# HANGUL SYLLABLE SSANGCIEUC-YU-NIEUNHIEUH
-0xA89B	0xCBBF	# HANGUL SYLLABLE SSANGCIEUC-YU-TIKEUT
-0xA89C	0xCBC0	# HANGUL SYLLABLE SSANGCIEUC-YU-RIEUL
-0xA89D	0xCBC1	# HANGUL SYLLABLE SSANGCIEUC-YU-RIEULKIYEOK
-0xA89E	0xCBC2	# HANGUL SYLLABLE SSANGCIEUC-YU-RIEULMIEUM
-0xA89F	0xCBC3	# HANGUL SYLLABLE SSANGCIEUC-YU-RIEULPIEUP
-0xA8A0	0xCBC4	# HANGUL SYLLABLE SSANGCIEUC-YU-RIEULSIOS
-0xA8A1	0x00C6	# LATIN CAPITAL LIGATURE AE
-0xA8A2	0x00D0	# LATIN CAPITAL LETTER ETH
-0xA8A3	0x00AA	# FEMININE ORDINAL INDICATOR
-0xA8A4	0x0126	# LATIN CAPITAL LETTER H WITH STROKE
-0xA8A6	0x0132	# LATIN CAPITAL LIGATURE IJ
-0xA8A8	0x013F	# LATIN CAPITAL LETTER L WITH MIDDLE DOT
-0xA8A9	0x0141	# LATIN CAPITAL LETTER L WITH STROKE
-0xA8AA	0x00D8	# LATIN CAPITAL LETTER O WITH STROKE
-0xA8AB	0x0152	# LATIN CAPITAL LIGATURE OE
-0xA8AC	0x00BA	# MASCULINE ORDINAL INDICATOR
-0xA8AD	0x00DE	# LATIN CAPITAL LETTER THORN
-0xA8AE	0x0166	# LATIN CAPITAL LETTER T WITH STROKE
-0xA8AF	0x014A	# LATIN CAPITAL LETTER ENG
-0xA8B1	0x3260	# CIRCLED HANGUL KIYEOK
-0xA8B2	0x3261	# CIRCLED HANGUL NIEUN
-0xA8B3	0x3262	# CIRCLED HANGUL TIKEUT
-0xA8B4	0x3263	# CIRCLED HANGUL RIEUL
-0xA8B5	0x3264	# CIRCLED HANGUL MIEUM
-0xA8B6	0x3265	# CIRCLED HANGUL PIEUP
-0xA8B7	0x3266	# CIRCLED HANGUL SIOS
-0xA8B8	0x3267	# CIRCLED HANGUL IEUNG
-0xA8B9	0x3268	# CIRCLED HANGUL CIEUC
-0xA8BA	0x3269	# CIRCLED HANGUL CHIEUCH
-0xA8BB	0x326A	# CIRCLED HANGUL KHIEUKH
-0xA8BC	0x326B	# CIRCLED HANGUL THIEUTH
-0xA8BD	0x326C	# CIRCLED HANGUL PHIEUPH
-0xA8BE	0x326D	# CIRCLED HANGUL HIEUH
-0xA8BF	0x326E	# CIRCLED HANGUL KIYEOK A
-0xA8C0	0x326F	# CIRCLED HANGUL NIEUN A
-0xA8C1	0x3270	# CIRCLED HANGUL TIKEUT A
-0xA8C2	0x3271	# CIRCLED HANGUL RIEUL A
-0xA8C3	0x3272	# CIRCLED HANGUL MIEUM A
-0xA8C4	0x3273	# CIRCLED HANGUL PIEUP A
-0xA8C5	0x3274	# CIRCLED HANGUL SIOS A
-0xA8C6	0x3275	# CIRCLED HANGUL IEUNG A
-0xA8C7	0x3276	# CIRCLED HANGUL CIEUC A
-0xA8C8	0x3277	# CIRCLED HANGUL CHIEUCH A
-0xA8C9	0x3278	# CIRCLED HANGUL KHIEUKH A
-0xA8CA	0x3279	# CIRCLED HANGUL THIEUTH A
-0xA8CB	0x327A	# CIRCLED HANGUL PHIEUPH A
-0xA8CC	0x327B	# CIRCLED HANGUL HIEUH A
-0xA8CD	0x24D0	# CIRCLED LATIN SMALL LETTER A
-0xA8CE	0x24D1	# CIRCLED LATIN SMALL LETTER B
-0xA8CF	0x24D2	# CIRCLED LATIN SMALL LETTER C
-0xA8D0	0x24D3	# CIRCLED LATIN SMALL LETTER D
-0xA8D1	0x24D4	# CIRCLED LATIN SMALL LETTER E
-0xA8D2	0x24D5	# CIRCLED LATIN SMALL LETTER F
-0xA8D3	0x24D6	# CIRCLED LATIN SMALL LETTER G
-0xA8D4	0x24D7	# CIRCLED LATIN SMALL LETTER H
-0xA8D5	0x24D8	# CIRCLED LATIN SMALL LETTER I
-0xA8D6	0x24D9	# CIRCLED LATIN SMALL LETTER J
-0xA8D7	0x24DA	# CIRCLED LATIN SMALL LETTER K
-0xA8D8	0x24DB	# CIRCLED LATIN SMALL LETTER L
-0xA8D9	0x24DC	# CIRCLED LATIN SMALL LETTER M
-0xA8DA	0x24DD	# CIRCLED LATIN SMALL LETTER N
-0xA8DB	0x24DE	# CIRCLED LATIN SMALL LETTER O
-0xA8DC	0x24DF	# CIRCLED LATIN SMALL LETTER P
-0xA8DD	0x24E0	# CIRCLED LATIN SMALL LETTER Q
-0xA8DE	0x24E1	# CIRCLED LATIN SMALL LETTER R
-0xA8DF	0x24E2	# CIRCLED LATIN SMALL LETTER S
-0xA8E0	0x24E3	# CIRCLED LATIN SMALL LETTER T
-0xA8E1	0x24E4	# CIRCLED LATIN SMALL LETTER U
-0xA8E2	0x24E5	# CIRCLED LATIN SMALL LETTER V
-0xA8E3	0x24E6	# CIRCLED LATIN SMALL LETTER W
-0xA8E4	0x24E7	# CIRCLED LATIN SMALL LETTER X
-0xA8E5	0x24E8	# CIRCLED LATIN SMALL LETTER Y
-0xA8E6	0x24E9	# CIRCLED LATIN SMALL LETTER Z
-0xA8E7	0x2460	# CIRCLED DIGIT ONE
-0xA8E8	0x2461	# CIRCLED DIGIT TWO
-0xA8E9	0x2462	# CIRCLED DIGIT THREE
-0xA8EA	0x2463	# CIRCLED DIGIT FOUR
-0xA8EB	0x2464	# CIRCLED DIGIT FIVE
-0xA8EC	0x2465	# CIRCLED DIGIT SIX
-0xA8ED	0x2466	# CIRCLED DIGIT SEVEN
-0xA8EE	0x2467	# CIRCLED DIGIT EIGHT
-0xA8EF	0x2468	# CIRCLED DIGIT NINE
-0xA8F0	0x2469	# CIRCLED NUMBER TEN
-0xA8F1	0x246A	# CIRCLED NUMBER ELEVEN
-0xA8F2	0x246B	# CIRCLED NUMBER TWELVE
-0xA8F3	0x246C	# CIRCLED NUMBER THIRTEEN
-0xA8F4	0x246D	# CIRCLED NUMBER FOURTEEN
-0xA8F5	0x246E	# CIRCLED NUMBER FIFTEEN
-0xA8F6	0x00BD	# VULGAR FRACTION ONE HALF
-0xA8F7	0x2153	# VULGAR FRACTION ONE THIRD
-0xA8F8	0x2154	# VULGAR FRACTION TWO THIRDS
-0xA8F9	0x00BC	# VULGAR FRACTION ONE QUARTER
-0xA8FA	0x00BE	# VULGAR FRACTION THREE QUARTERS
-0xA8FB	0x215B	# VULGAR FRACTION ONE EIGHTH
-0xA8FC	0x215C	# VULGAR FRACTION THREE EIGHTHS
-0xA8FD	0x215D	# VULGAR FRACTION FIVE EIGHTHS
-0xA8FE	0x215E	# VULGAR FRACTION SEVEN EIGHTHS
-0xA941	0xCBC5	# HANGUL SYLLABLE SSANGCIEUC-YU-RIEULTHIEUTH
-0xA942	0xCBC6	# HANGUL SYLLABLE SSANGCIEUC-YU-RIEULPHIEUPH
-0xA943	0xCBC7	# HANGUL SYLLABLE SSANGCIEUC-YU-RIEULHIEUH
-0xA944	0xCBC8	# HANGUL SYLLABLE SSANGCIEUC-YU-MIEUM
-0xA945	0xCBC9	# HANGUL SYLLABLE SSANGCIEUC-YU-PIEUP
-0xA946	0xCBCA	# HANGUL SYLLABLE SSANGCIEUC-YU-PIEUPSIOS
-0xA947	0xCBCB	# HANGUL SYLLABLE SSANGCIEUC-YU-SIOS
-0xA948	0xCBCC	# HANGUL SYLLABLE SSANGCIEUC-YU-SSANGSIOS
-0xA949	0xCBCD	# HANGUL SYLLABLE SSANGCIEUC-YU-IEUNG
-0xA94A	0xCBCE	# HANGUL SYLLABLE SSANGCIEUC-YU-CIEUC
-0xA94B	0xCBCF	# HANGUL SYLLABLE SSANGCIEUC-YU-CHIEUCH
-0xA94C	0xCBD0	# HANGUL SYLLABLE SSANGCIEUC-YU-KHIEUKH
-0xA94D	0xCBD1	# HANGUL SYLLABLE SSANGCIEUC-YU-THIEUTH
-0xA94E	0xCBD2	# HANGUL SYLLABLE SSANGCIEUC-YU-PHIEUPH
-0xA94F	0xCBD3	# HANGUL SYLLABLE SSANGCIEUC-YU-HIEUH
-0xA950	0xCBD5	# HANGUL SYLLABLE SSANGCIEUC-EU-KIYEOK
-0xA951	0xCBD6	# HANGUL SYLLABLE SSANGCIEUC-EU-SSANGKIYEOK
-0xA952	0xCBD7	# HANGUL SYLLABLE SSANGCIEUC-EU-KIYEOKSIOS
-0xA953	0xCBD8	# HANGUL SYLLABLE SSANGCIEUC-EU-NIEUN
-0xA954	0xCBD9	# HANGUL SYLLABLE SSANGCIEUC-EU-NIEUNCIEUC
-0xA955	0xCBDA	# HANGUL SYLLABLE SSANGCIEUC-EU-NIEUNHIEUH
-0xA956	0xCBDB	# HANGUL SYLLABLE SSANGCIEUC-EU-TIKEUT
-0xA957	0xCBDC	# HANGUL SYLLABLE SSANGCIEUC-EU-RIEUL
-0xA958	0xCBDD	# HANGUL SYLLABLE SSANGCIEUC-EU-RIEULKIYEOK
-0xA959	0xCBDE	# HANGUL SYLLABLE SSANGCIEUC-EU-RIEULMIEUM
-0xA95A	0xCBDF	# HANGUL SYLLABLE SSANGCIEUC-EU-RIEULPIEUP
-0xA961	0xCBE0	# HANGUL SYLLABLE SSANGCIEUC-EU-RIEULSIOS
-0xA962	0xCBE1	# HANGUL SYLLABLE SSANGCIEUC-EU-RIEULTHIEUTH
-0xA963	0xCBE2	# HANGUL SYLLABLE SSANGCIEUC-EU-RIEULPHIEUPH
-0xA964	0xCBE3	# HANGUL SYLLABLE SSANGCIEUC-EU-RIEULHIEUH
-0xA965	0xCBE5	# HANGUL SYLLABLE SSANGCIEUC-EU-PIEUP
-0xA966	0xCBE6	# HANGUL SYLLABLE SSANGCIEUC-EU-PIEUPSIOS
-0xA967	0xCBE8	# HANGUL SYLLABLE SSANGCIEUC-EU-SSANGSIOS
-0xA968	0xCBEA	# HANGUL SYLLABLE SSANGCIEUC-EU-CIEUC
-0xA969	0xCBEB	# HANGUL SYLLABLE SSANGCIEUC-EU-CHIEUCH
-0xA96A	0xCBEC	# HANGUL SYLLABLE SSANGCIEUC-EU-KHIEUKH
-0xA96B	0xCBED	# HANGUL SYLLABLE SSANGCIEUC-EU-THIEUTH
-0xA96C	0xCBEE	# HANGUL SYLLABLE SSANGCIEUC-EU-PHIEUPH
-0xA96D	0xCBEF	# HANGUL SYLLABLE SSANGCIEUC-EU-HIEUH
-0xA96E	0xCBF0	# HANGUL SYLLABLE SSANGCIEUC-YI
-0xA96F	0xCBF1	# HANGUL SYLLABLE SSANGCIEUC-YI-KIYEOK
-0xA970	0xCBF2	# HANGUL SYLLABLE SSANGCIEUC-YI-SSANGKIYEOK
-0xA971	0xCBF3	# HANGUL SYLLABLE SSANGCIEUC-YI-KIYEOKSIOS
-0xA972	0xCBF4	# HANGUL SYLLABLE SSANGCIEUC-YI-NIEUN
-0xA973	0xCBF5	# HANGUL SYLLABLE SSANGCIEUC-YI-NIEUNCIEUC
-0xA974	0xCBF6	# HANGUL SYLLABLE SSANGCIEUC-YI-NIEUNHIEUH
-0xA975	0xCBF7	# HANGUL SYLLABLE SSANGCIEUC-YI-TIKEUT
-0xA976	0xCBF8	# HANGUL SYLLABLE SSANGCIEUC-YI-RIEUL
-0xA977	0xCBF9	# HANGUL SYLLABLE SSANGCIEUC-YI-RIEULKIYEOK
-0xA978	0xCBFA	# HANGUL SYLLABLE SSANGCIEUC-YI-RIEULMIEUM
-0xA979	0xCBFB	# HANGUL SYLLABLE SSANGCIEUC-YI-RIEULPIEUP
-0xA97A	0xCBFC	# HANGUL SYLLABLE SSANGCIEUC-YI-RIEULSIOS
-0xA981	0xCBFD	# HANGUL SYLLABLE SSANGCIEUC-YI-RIEULTHIEUTH
-0xA982	0xCBFE	# HANGUL SYLLABLE SSANGCIEUC-YI-RIEULPHIEUPH
-0xA983	0xCBFF	# HANGUL SYLLABLE SSANGCIEUC-YI-RIEULHIEUH
-0xA984	0xCC00	# HANGUL SYLLABLE SSANGCIEUC-YI-MIEUM
-0xA985	0xCC01	# HANGUL SYLLABLE SSANGCIEUC-YI-PIEUP
-0xA986	0xCC02	# HANGUL SYLLABLE SSANGCIEUC-YI-PIEUPSIOS
-0xA987	0xCC03	# HANGUL SYLLABLE SSANGCIEUC-YI-SIOS
-0xA988	0xCC04	# HANGUL SYLLABLE SSANGCIEUC-YI-SSANGSIOS
-0xA989	0xCC05	# HANGUL SYLLABLE SSANGCIEUC-YI-IEUNG
-0xA98A	0xCC06	# HANGUL SYLLABLE SSANGCIEUC-YI-CIEUC
-0xA98B	0xCC07	# HANGUL SYLLABLE SSANGCIEUC-YI-CHIEUCH
-0xA98C	0xCC08	# HANGUL SYLLABLE SSANGCIEUC-YI-KHIEUKH
-0xA98D	0xCC09	# HANGUL SYLLABLE SSANGCIEUC-YI-THIEUTH
-0xA98E	0xCC0A	# HANGUL SYLLABLE SSANGCIEUC-YI-PHIEUPH
-0xA98F	0xCC0B	# HANGUL SYLLABLE SSANGCIEUC-YI-HIEUH
-0xA990	0xCC0E	# HANGUL SYLLABLE SSANGCIEUC-I-SSANGKIYEOK
-0xA991	0xCC0F	# HANGUL SYLLABLE SSANGCIEUC-I-KIYEOKSIOS
-0xA992	0xCC11	# HANGUL SYLLABLE SSANGCIEUC-I-NIEUNCIEUC
-0xA993	0xCC12	# HANGUL SYLLABLE SSANGCIEUC-I-NIEUNHIEUH
-0xA994	0xCC13	# HANGUL SYLLABLE SSANGCIEUC-I-TIKEUT
-0xA995	0xCC15	# HANGUL SYLLABLE SSANGCIEUC-I-RIEULKIYEOK
-0xA996	0xCC16	# HANGUL SYLLABLE SSANGCIEUC-I-RIEULMIEUM
-0xA997	0xCC17	# HANGUL SYLLABLE SSANGCIEUC-I-RIEULPIEUP
-0xA998	0xCC18	# HANGUL SYLLABLE SSANGCIEUC-I-RIEULSIOS
-0xA999	0xCC19	# HANGUL SYLLABLE SSANGCIEUC-I-RIEULTHIEUTH
-0xA99A	0xCC1A	# HANGUL SYLLABLE SSANGCIEUC-I-RIEULPHIEUPH
-0xA99B	0xCC1B	# HANGUL SYLLABLE SSANGCIEUC-I-RIEULHIEUH
-0xA99C	0xCC1E	# HANGUL SYLLABLE SSANGCIEUC-I-PIEUPSIOS
-0xA99D	0xCC1F	# HANGUL SYLLABLE SSANGCIEUC-I-SIOS
-0xA99E	0xCC20	# HANGUL SYLLABLE SSANGCIEUC-I-SSANGSIOS
-0xA99F	0xCC23	# HANGUL SYLLABLE SSANGCIEUC-I-CHIEUCH
-0xA9A0	0xCC24	# HANGUL SYLLABLE SSANGCIEUC-I-KHIEUKH
-0xA9A1	0x00E6	# LATIN SMALL LIGATURE AE
-0xA9A2	0x0111	# LATIN SMALL LETTER D WITH STROKE
-0xA9A3	0x00F0	# LATIN SMALL LETTER ETH
-0xA9A4	0x0127	# LATIN SMALL LETTER H WITH STROKE
-0xA9A5	0x0131	# LATIN SMALL LETTER DOTLESS I
-0xA9A6	0x0133	# LATIN SMALL LIGATURE IJ
-0xA9A7	0x0138	# LATIN SMALL LETTER KRA
-0xA9A8	0x0140	# LATIN SMALL LETTER L WITH MIDDLE DOT
-0xA9A9	0x0142	# LATIN SMALL LETTER L WITH STROKE
-0xA9AA	0x00F8	# LATIN SMALL LETTER O WITH STROKE
-0xA9AB	0x0153	# LATIN SMALL LIGATURE OE
-0xA9AC	0x00DF	# LATIN SMALL LETTER SHARP S
-0xA9AD	0x00FE	# LATIN SMALL LETTER THORN
-0xA9AE	0x0167	# LATIN SMALL LETTER T WITH STROKE
-0xA9AF	0x014B	# LATIN SMALL LETTER ENG
-0xA9B0	0x0149	# LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-0xA9B1	0x3200	# PARENTHESIZED HANGUL KIYEOK
-0xA9B2	0x3201	# PARENTHESIZED HANGUL NIEUN
-0xA9B3	0x3202	# PARENTHESIZED HANGUL TIKEUT
-0xA9B4	0x3203	# PARENTHESIZED HANGUL RIEUL
-0xA9B5	0x3204	# PARENTHESIZED HANGUL MIEUM
-0xA9B6	0x3205	# PARENTHESIZED HANGUL PIEUP
-0xA9B7	0x3206	# PARENTHESIZED HANGUL SIOS
-0xA9B8	0x3207	# PARENTHESIZED HANGUL IEUNG
-0xA9B9	0x3208	# PARENTHESIZED HANGUL CIEUC
-0xA9BA	0x3209	# PARENTHESIZED HANGUL CHIEUCH
-0xA9BB	0x320A	# PARENTHESIZED HANGUL KHIEUKH
-0xA9BC	0x320B	# PARENTHESIZED HANGUL THIEUTH
-0xA9BD	0x320C	# PARENTHESIZED HANGUL PHIEUPH
-0xA9BE	0x320D	# PARENTHESIZED HANGUL HIEUH
-0xA9BF	0x320E	# PARENTHESIZED HANGUL KIYEOK A
-0xA9C0	0x320F	# PARENTHESIZED HANGUL NIEUN A
-0xA9C1	0x3210	# PARENTHESIZED HANGUL TIKEUT A
-0xA9C2	0x3211	# PARENTHESIZED HANGUL RIEUL A
-0xA9C3	0x3212	# PARENTHESIZED HANGUL MIEUM A
-0xA9C4	0x3213	# PARENTHESIZED HANGUL PIEUP A
-0xA9C5	0x3214	# PARENTHESIZED HANGUL SIOS A
-0xA9C6	0x3215	# PARENTHESIZED HANGUL IEUNG A
-0xA9C7	0x3216	# PARENTHESIZED HANGUL CIEUC A
-0xA9C8	0x3217	# PARENTHESIZED HANGUL CHIEUCH A
-0xA9C9	0x3218	# PARENTHESIZED HANGUL KHIEUKH A
-0xA9CA	0x3219	# PARENTHESIZED HANGUL THIEUTH A
-0xA9CB	0x321A	# PARENTHESIZED HANGUL PHIEUPH A
-0xA9CC	0x321B	# PARENTHESIZED HANGUL HIEUH A
-0xA9CD	0x249C	# PARENTHESIZED LATIN SMALL LETTER A
-0xA9CE	0x249D	# PARENTHESIZED LATIN SMALL LETTER B
-0xA9CF	0x249E	# PARENTHESIZED LATIN SMALL LETTER C
-0xA9D0	0x249F	# PARENTHESIZED LATIN SMALL LETTER D
-0xA9D1	0x24A0	# PARENTHESIZED LATIN SMALL LETTER E
-0xA9D2	0x24A1	# PARENTHESIZED LATIN SMALL LETTER F
-0xA9D3	0x24A2	# PARENTHESIZED LATIN SMALL LETTER G
-0xA9D4	0x24A3	# PARENTHESIZED LATIN SMALL LETTER H
-0xA9D5	0x24A4	# PARENTHESIZED LATIN SMALL LETTER I
-0xA9D6	0x24A5	# PARENTHESIZED LATIN SMALL LETTER J
-0xA9D7	0x24A6	# PARENTHESIZED LATIN SMALL LETTER K
-0xA9D8	0x24A7	# PARENTHESIZED LATIN SMALL LETTER L
-0xA9D9	0x24A8	# PARENTHESIZED LATIN SMALL LETTER M
-0xA9DA	0x24A9	# PARENTHESIZED LATIN SMALL LETTER N
-0xA9DB	0x24AA	# PARENTHESIZED LATIN SMALL LETTER O
-0xA9DC	0x24AB	# PARENTHESIZED LATIN SMALL LETTER P
-0xA9DD	0x24AC	# PARENTHESIZED LATIN SMALL LETTER Q
-0xA9DE	0x24AD	# PARENTHESIZED LATIN SMALL LETTER R
-0xA9DF	0x24AE	# PARENTHESIZED LATIN SMALL LETTER S
-0xA9E0	0x24AF	# PARENTHESIZED LATIN SMALL LETTER T
-0xA9E1	0x24B0	# PARENTHESIZED LATIN SMALL LETTER U
-0xA9E2	0x24B1	# PARENTHESIZED LATIN SMALL LETTER V
-0xA9E3	0x24B2	# PARENTHESIZED LATIN SMALL LETTER W
-0xA9E4	0x24B3	# PARENTHESIZED LATIN SMALL LETTER X
-0xA9E5	0x24B4	# PARENTHESIZED LATIN SMALL LETTER Y
-0xA9E6	0x24B5	# PARENTHESIZED LATIN SMALL LETTER Z
-0xA9E7	0x2474	# PARENTHESIZED DIGIT ONE
-0xA9E8	0x2475	# PARENTHESIZED DIGIT TWO
-0xA9E9	0x2476	# PARENTHESIZED DIGIT THREE
-0xA9EA	0x2477	# PARENTHESIZED DIGIT FOUR
-0xA9EB	0x2478	# PARENTHESIZED DIGIT FIVE
-0xA9EC	0x2479	# PARENTHESIZED DIGIT SIX
-0xA9ED	0x247A	# PARENTHESIZED DIGIT SEVEN
-0xA9EE	0x247B	# PARENTHESIZED DIGIT EIGHT
-0xA9EF	0x247C	# PARENTHESIZED DIGIT NINE
-0xA9F0	0x247D	# PARENTHESIZED NUMBER TEN
-0xA9F1	0x247E	# PARENTHESIZED NUMBER ELEVEN
-0xA9F2	0x247F	# PARENTHESIZED NUMBER TWELVE
-0xA9F3	0x2480	# PARENTHESIZED NUMBER THIRTEEN
-0xA9F4	0x2481	# PARENTHESIZED NUMBER FOURTEEN
-0xA9F5	0x2482	# PARENTHESIZED NUMBER FIFTEEN
-0xA9F6	0x00B9	# SUPERSCRIPT ONE
-0xA9F7	0x00B2	# SUPERSCRIPT TWO
-0xA9F8	0x00B3	# SUPERSCRIPT THREE
-0xA9F9	0x2074	# SUPERSCRIPT FOUR
-0xA9FA	0x207F	# SUPERSCRIPT LATIN SMALL LETTER N
-0xA9FB	0x2081	# SUBSCRIPT ONE
-0xA9FC	0x2082	# SUBSCRIPT TWO
-0xA9FD	0x2083	# SUBSCRIPT THREE
-0xA9FE	0x2084	# SUBSCRIPT FOUR
-0xAA41	0xCC25	# HANGUL SYLLABLE SSANGCIEUC-I-THIEUTH
-0xAA42	0xCC26	# HANGUL SYLLABLE SSANGCIEUC-I-PHIEUPH
-0xAA43	0xCC2A	# HANGUL SYLLABLE CHIEUCH-A-SSANGKIYEOK
-0xAA44	0xCC2B	# HANGUL SYLLABLE CHIEUCH-A-KIYEOKSIOS
-0xAA45	0xCC2D	# HANGUL SYLLABLE CHIEUCH-A-NIEUNCIEUC
-0xAA46	0xCC2F	# HANGUL SYLLABLE CHIEUCH-A-TIKEUT
-0xAA47	0xCC31	# HANGUL SYLLABLE CHIEUCH-A-RIEULKIYEOK
-0xAA48	0xCC32	# HANGUL SYLLABLE CHIEUCH-A-RIEULMIEUM
-0xAA49	0xCC33	# HANGUL SYLLABLE CHIEUCH-A-RIEULPIEUP
-0xAA4A	0xCC34	# HANGUL SYLLABLE CHIEUCH-A-RIEULSIOS
-0xAA4B	0xCC35	# HANGUL SYLLABLE CHIEUCH-A-RIEULTHIEUTH
-0xAA4C	0xCC36	# HANGUL SYLLABLE CHIEUCH-A-RIEULPHIEUPH
-0xAA4D	0xCC37	# HANGUL SYLLABLE CHIEUCH-A-RIEULHIEUH
-0xAA4E	0xCC3A	# HANGUL SYLLABLE CHIEUCH-A-PIEUPSIOS
-0xAA4F	0xCC3F	# HANGUL SYLLABLE CHIEUCH-A-CHIEUCH
-0xAA50	0xCC40	# HANGUL SYLLABLE CHIEUCH-A-KHIEUKH
-0xAA51	0xCC41	# HANGUL SYLLABLE CHIEUCH-A-THIEUTH
-0xAA52	0xCC42	# HANGUL SYLLABLE CHIEUCH-A-PHIEUPH
-0xAA53	0xCC43	# HANGUL SYLLABLE CHIEUCH-A-HIEUH
-0xAA54	0xCC46	# HANGUL SYLLABLE CHIEUCH-AE-SSANGKIYEOK
-0xAA55	0xCC47	# HANGUL SYLLABLE CHIEUCH-AE-KIYEOKSIOS
-0xAA56	0xCC49	# HANGUL SYLLABLE CHIEUCH-AE-NIEUNCIEUC
-0xAA57	0xCC4A	# HANGUL SYLLABLE CHIEUCH-AE-NIEUNHIEUH
-0xAA58	0xCC4B	# HANGUL SYLLABLE CHIEUCH-AE-TIKEUT
-0xAA59	0xCC4D	# HANGUL SYLLABLE CHIEUCH-AE-RIEULKIYEOK
-0xAA5A	0xCC4E	# HANGUL SYLLABLE CHIEUCH-AE-RIEULMIEUM
-0xAA61	0xCC4F	# HANGUL SYLLABLE CHIEUCH-AE-RIEULPIEUP
-0xAA62	0xCC50	# HANGUL SYLLABLE CHIEUCH-AE-RIEULSIOS
-0xAA63	0xCC51	# HANGUL SYLLABLE CHIEUCH-AE-RIEULTHIEUTH
-0xAA64	0xCC52	# HANGUL SYLLABLE CHIEUCH-AE-RIEULPHIEUPH
-0xAA65	0xCC53	# HANGUL SYLLABLE CHIEUCH-AE-RIEULHIEUH
-0xAA66	0xCC56	# HANGUL SYLLABLE CHIEUCH-AE-PIEUPSIOS
-0xAA67	0xCC5A	# HANGUL SYLLABLE CHIEUCH-AE-CIEUC
-0xAA68	0xCC5B	# HANGUL SYLLABLE CHIEUCH-AE-CHIEUCH
-0xAA69	0xCC5C	# HANGUL SYLLABLE CHIEUCH-AE-KHIEUKH
-0xAA6A	0xCC5D	# HANGUL SYLLABLE CHIEUCH-AE-THIEUTH
-0xAA6B	0xCC5E	# HANGUL SYLLABLE CHIEUCH-AE-PHIEUPH
-0xAA6C	0xCC5F	# HANGUL SYLLABLE CHIEUCH-AE-HIEUH
-0xAA6D	0xCC61	# HANGUL SYLLABLE CHIEUCH-YA-KIYEOK
-0xAA6E	0xCC62	# HANGUL SYLLABLE CHIEUCH-YA-SSANGKIYEOK
-0xAA6F	0xCC63	# HANGUL SYLLABLE CHIEUCH-YA-KIYEOKSIOS
-0xAA70	0xCC65	# HANGUL SYLLABLE CHIEUCH-YA-NIEUNCIEUC
-0xAA71	0xCC67	# HANGUL SYLLABLE CHIEUCH-YA-TIKEUT
-0xAA72	0xCC69	# HANGUL SYLLABLE CHIEUCH-YA-RIEULKIYEOK
-0xAA73	0xCC6A	# HANGUL SYLLABLE CHIEUCH-YA-RIEULMIEUM
-0xAA74	0xCC6B	# HANGUL SYLLABLE CHIEUCH-YA-RIEULPIEUP
-0xAA75	0xCC6C	# HANGUL SYLLABLE CHIEUCH-YA-RIEULSIOS
-0xAA76	0xCC6D	# HANGUL SYLLABLE CHIEUCH-YA-RIEULTHIEUTH
-0xAA77	0xCC6E	# HANGUL SYLLABLE CHIEUCH-YA-RIEULPHIEUPH
-0xAA78	0xCC6F	# HANGUL SYLLABLE CHIEUCH-YA-RIEULHIEUH
-0xAA79	0xCC71	# HANGUL SYLLABLE CHIEUCH-YA-PIEUP
-0xAA7A	0xCC72	# HANGUL SYLLABLE CHIEUCH-YA-PIEUPSIOS
-0xAA81	0xCC73	# HANGUL SYLLABLE CHIEUCH-YA-SIOS
-0xAA82	0xCC74	# HANGUL SYLLABLE CHIEUCH-YA-SSANGSIOS
-0xAA83	0xCC76	# HANGUL SYLLABLE CHIEUCH-YA-CIEUC
-0xAA84	0xCC77	# HANGUL SYLLABLE CHIEUCH-YA-CHIEUCH
-0xAA85	0xCC78	# HANGUL SYLLABLE CHIEUCH-YA-KHIEUKH
-0xAA86	0xCC79	# HANGUL SYLLABLE CHIEUCH-YA-THIEUTH
-0xAA87	0xCC7A	# HANGUL SYLLABLE CHIEUCH-YA-PHIEUPH
-0xAA88	0xCC7B	# HANGUL SYLLABLE CHIEUCH-YA-HIEUH
-0xAA89	0xCC7C	# HANGUL SYLLABLE CHIEUCH-YAE
-0xAA8A	0xCC7D	# HANGUL SYLLABLE CHIEUCH-YAE-KIYEOK
-0xAA8B	0xCC7E	# HANGUL SYLLABLE CHIEUCH-YAE-SSANGKIYEOK
-0xAA8C	0xCC7F	# HANGUL SYLLABLE CHIEUCH-YAE-KIYEOKSIOS
-0xAA8D	0xCC80	# HANGUL SYLLABLE CHIEUCH-YAE-NIEUN
-0xAA8E	0xCC81	# HANGUL SYLLABLE CHIEUCH-YAE-NIEUNCIEUC
-0xAA8F	0xCC82	# HANGUL SYLLABLE CHIEUCH-YAE-NIEUNHIEUH
-0xAA90	0xCC83	# HANGUL SYLLABLE CHIEUCH-YAE-TIKEUT
-0xAA91	0xCC84	# HANGUL SYLLABLE CHIEUCH-YAE-RIEUL
-0xAA92	0xCC85	# HANGUL SYLLABLE CHIEUCH-YAE-RIEULKIYEOK
-0xAA93	0xCC86	# HANGUL SYLLABLE CHIEUCH-YAE-RIEULMIEUM
-0xAA94	0xCC87	# HANGUL SYLLABLE CHIEUCH-YAE-RIEULPIEUP
-0xAA95	0xCC88	# HANGUL SYLLABLE CHIEUCH-YAE-RIEULSIOS
-0xAA96	0xCC89	# HANGUL SYLLABLE CHIEUCH-YAE-RIEULTHIEUTH
-0xAA97	0xCC8A	# HANGUL SYLLABLE CHIEUCH-YAE-RIEULPHIEUPH
-0xAA98	0xCC8B	# HANGUL SYLLABLE CHIEUCH-YAE-RIEULHIEUH
-0xAA99	0xCC8C	# HANGUL SYLLABLE CHIEUCH-YAE-MIEUM
-0xAA9A	0xCC8D	# HANGUL SYLLABLE CHIEUCH-YAE-PIEUP
-0xAA9B	0xCC8E	# HANGUL SYLLABLE CHIEUCH-YAE-PIEUPSIOS
-0xAA9C	0xCC8F	# HANGUL SYLLABLE CHIEUCH-YAE-SIOS
-0xAA9D	0xCC90	# HANGUL SYLLABLE CHIEUCH-YAE-SSANGSIOS
-0xAA9E	0xCC91	# HANGUL SYLLABLE CHIEUCH-YAE-IEUNG
-0xAA9F	0xCC92	# HANGUL SYLLABLE CHIEUCH-YAE-CIEUC
-0xAAA0	0xCC93	# HANGUL SYLLABLE CHIEUCH-YAE-CHIEUCH
-0xAAA1	0x3041	# HIRAGANA LETTER SMALL A
-0xAAA2	0x3042	# HIRAGANA LETTER A
-0xAAA3	0x3043	# HIRAGANA LETTER SMALL I
-0xAAA4	0x3044	# HIRAGANA LETTER I
-0xAAA5	0x3045	# HIRAGANA LETTER SMALL U
-0xAAA6	0x3046	# HIRAGANA LETTER U
-0xAAA7	0x3047	# HIRAGANA LETTER SMALL E
-0xAAA8	0x3048	# HIRAGANA LETTER E
-0xAAA9	0x3049	# HIRAGANA LETTER SMALL O
-0xAAAA	0x304A	# HIRAGANA LETTER O
-0xAAAB	0x304B	# HIRAGANA LETTER KA
-0xAAAC	0x304C	# HIRAGANA LETTER GA
-0xAAAD	0x304D	# HIRAGANA LETTER KI
-0xAAAE	0x304E	# HIRAGANA LETTER GI
-0xAAAF	0x304F	# HIRAGANA LETTER KU
-0xAAB0	0x3050	# HIRAGANA LETTER GU
-0xAAB1	0x3051	# HIRAGANA LETTER KE
-0xAAB2	0x3052	# HIRAGANA LETTER GE
-0xAAB3	0x3053	# HIRAGANA LETTER KO
-0xAAB4	0x3054	# HIRAGANA LETTER GO
-0xAAB5	0x3055	# HIRAGANA LETTER SA
-0xAAB6	0x3056	# HIRAGANA LETTER ZA
-0xAAB7	0x3057	# HIRAGANA LETTER SI
-0xAAB8	0x3058	# HIRAGANA LETTER ZI
-0xAAB9	0x3059	# HIRAGANA LETTER SU
-0xAABA	0x305A	# HIRAGANA LETTER ZU
-0xAABB	0x305B	# HIRAGANA LETTER SE
-0xAABC	0x305C	# HIRAGANA LETTER ZE
-0xAABD	0x305D	# HIRAGANA LETTER SO
-0xAABE	0x305E	# HIRAGANA LETTER ZO
-0xAABF	0x305F	# HIRAGANA LETTER TA
-0xAAC0	0x3060	# HIRAGANA LETTER DA
-0xAAC1	0x3061	# HIRAGANA LETTER TI
-0xAAC2	0x3062	# HIRAGANA LETTER DI
-0xAAC3	0x3063	# HIRAGANA LETTER SMALL TU
-0xAAC4	0x3064	# HIRAGANA LETTER TU
-0xAAC5	0x3065	# HIRAGANA LETTER DU
-0xAAC6	0x3066	# HIRAGANA LETTER TE
-0xAAC7	0x3067	# HIRAGANA LETTER DE
-0xAAC8	0x3068	# HIRAGANA LETTER TO
-0xAAC9	0x3069	# HIRAGANA LETTER DO
-0xAACA	0x306A	# HIRAGANA LETTER NA
-0xAACB	0x306B	# HIRAGANA LETTER NI
-0xAACC	0x306C	# HIRAGANA LETTER NU
-0xAACD	0x306D	# HIRAGANA LETTER NE
-0xAACE	0x306E	# HIRAGANA LETTER NO
-0xAACF	0x306F	# HIRAGANA LETTER HA
-0xAAD0	0x3070	# HIRAGANA LETTER BA
-0xAAD1	0x3071	# HIRAGANA LETTER PA
-0xAAD2	0x3072	# HIRAGANA LETTER HI
-0xAAD3	0x3073	# HIRAGANA LETTER BI
-0xAAD4	0x3074	# HIRAGANA LETTER PI
-0xAAD5	0x3075	# HIRAGANA LETTER HU
-0xAAD6	0x3076	# HIRAGANA LETTER BU
-0xAAD7	0x3077	# HIRAGANA LETTER PU
-0xAAD8	0x3078	# HIRAGANA LETTER HE
-0xAAD9	0x3079	# HIRAGANA LETTER BE
-0xAADA	0x307A	# HIRAGANA LETTER PE
-0xAADB	0x307B	# HIRAGANA LETTER HO
-0xAADC	0x307C	# HIRAGANA LETTER BO
-0xAADD	0x307D	# HIRAGANA LETTER PO
-0xAADE	0x307E	# HIRAGANA LETTER MA
-0xAADF	0x307F	# HIRAGANA LETTER MI
-0xAAE0	0x3080	# HIRAGANA LETTER MU
-0xAAE1	0x3081	# HIRAGANA LETTER ME
-0xAAE2	0x3082	# HIRAGANA LETTER MO
-0xAAE3	0x3083	# HIRAGANA LETTER SMALL YA
-0xAAE4	0x3084	# HIRAGANA LETTER YA
-0xAAE5	0x3085	# HIRAGANA LETTER SMALL YU
-0xAAE6	0x3086	# HIRAGANA LETTER YU
-0xAAE7	0x3087	# HIRAGANA LETTER SMALL YO
-0xAAE8	0x3088	# HIRAGANA LETTER YO
-0xAAE9	0x3089	# HIRAGANA LETTER RA
-0xAAEA	0x308A	# HIRAGANA LETTER RI
-0xAAEB	0x308B	# HIRAGANA LETTER RU
-0xAAEC	0x308C	# HIRAGANA LETTER RE
-0xAAED	0x308D	# HIRAGANA LETTER RO
-0xAAEE	0x308E	# HIRAGANA LETTER SMALL WA
-0xAAEF	0x308F	# HIRAGANA LETTER WA
-0xAAF0	0x3090	# HIRAGANA LETTER WI
-0xAAF1	0x3091	# HIRAGANA LETTER WE
-0xAAF2	0x3092	# HIRAGANA LETTER WO
-0xAAF3	0x3093	# HIRAGANA LETTER N
-0xAB41	0xCC94	# HANGUL SYLLABLE CHIEUCH-YAE-KHIEUKH
-0xAB42	0xCC95	# HANGUL SYLLABLE CHIEUCH-YAE-THIEUTH
-0xAB43	0xCC96	# HANGUL SYLLABLE CHIEUCH-YAE-PHIEUPH
-0xAB44	0xCC97	# HANGUL SYLLABLE CHIEUCH-YAE-HIEUH
-0xAB45	0xCC9A	# HANGUL SYLLABLE CHIEUCH-EO-SSANGKIYEOK
-0xAB46	0xCC9B	# HANGUL SYLLABLE CHIEUCH-EO-KIYEOKSIOS
-0xAB47	0xCC9D	# HANGUL SYLLABLE CHIEUCH-EO-NIEUNCIEUC
-0xAB48	0xCC9E	# HANGUL SYLLABLE CHIEUCH-EO-NIEUNHIEUH
-0xAB49	0xCC9F	# HANGUL SYLLABLE CHIEUCH-EO-TIKEUT
-0xAB4A	0xCCA1	# HANGUL SYLLABLE CHIEUCH-EO-RIEULKIYEOK
-0xAB4B	0xCCA2	# HANGUL SYLLABLE CHIEUCH-EO-RIEULMIEUM
-0xAB4C	0xCCA3	# HANGUL SYLLABLE CHIEUCH-EO-RIEULPIEUP
-0xAB4D	0xCCA4	# HANGUL SYLLABLE CHIEUCH-EO-RIEULSIOS
-0xAB4E	0xCCA5	# HANGUL SYLLABLE CHIEUCH-EO-RIEULTHIEUTH
-0xAB4F	0xCCA6	# HANGUL SYLLABLE CHIEUCH-EO-RIEULPHIEUPH
-0xAB50	0xCCA7	# HANGUL SYLLABLE CHIEUCH-EO-RIEULHIEUH
-0xAB51	0xCCAA	# HANGUL SYLLABLE CHIEUCH-EO-PIEUPSIOS
-0xAB52	0xCCAE	# HANGUL SYLLABLE CHIEUCH-EO-CIEUC
-0xAB53	0xCCAF	# HANGUL SYLLABLE CHIEUCH-EO-CHIEUCH
-0xAB54	0xCCB0	# HANGUL SYLLABLE CHIEUCH-EO-KHIEUKH
-0xAB55	0xCCB1	# HANGUL SYLLABLE CHIEUCH-EO-THIEUTH
-0xAB56	0xCCB2	# HANGUL SYLLABLE CHIEUCH-EO-PHIEUPH
-0xAB57	0xCCB3	# HANGUL SYLLABLE CHIEUCH-EO-HIEUH
-0xAB58	0xCCB6	# HANGUL SYLLABLE CHIEUCH-E-SSANGKIYEOK
-0xAB59	0xCCB7	# HANGUL SYLLABLE CHIEUCH-E-KIYEOKSIOS
-0xAB5A	0xCCB9	# HANGUL SYLLABLE CHIEUCH-E-NIEUNCIEUC
-0xAB61	0xCCBA	# HANGUL SYLLABLE CHIEUCH-E-NIEUNHIEUH
-0xAB62	0xCCBB	# HANGUL SYLLABLE CHIEUCH-E-TIKEUT
-0xAB63	0xCCBD	# HANGUL SYLLABLE CHIEUCH-E-RIEULKIYEOK
-0xAB64	0xCCBE	# HANGUL SYLLABLE CHIEUCH-E-RIEULMIEUM
-0xAB65	0xCCBF	# HANGUL SYLLABLE CHIEUCH-E-RIEULPIEUP
-0xAB66	0xCCC0	# HANGUL SYLLABLE CHIEUCH-E-RIEULSIOS
-0xAB67	0xCCC1	# HANGUL SYLLABLE CHIEUCH-E-RIEULTHIEUTH
-0xAB68	0xCCC2	# HANGUL SYLLABLE CHIEUCH-E-RIEULPHIEUPH
-0xAB69	0xCCC3	# HANGUL SYLLABLE CHIEUCH-E-RIEULHIEUH
-0xAB6A	0xCCC6	# HANGUL SYLLABLE CHIEUCH-E-PIEUPSIOS
-0xAB6B	0xCCC8	# HANGUL SYLLABLE CHIEUCH-E-SSANGSIOS
-0xAB6C	0xCCCA	# HANGUL SYLLABLE CHIEUCH-E-CIEUC
-0xAB6D	0xCCCB	# HANGUL SYLLABLE CHIEUCH-E-CHIEUCH
-0xAB6E	0xCCCC	# HANGUL SYLLABLE CHIEUCH-E-KHIEUKH
-0xAB6F	0xCCCD	# HANGUL SYLLABLE CHIEUCH-E-THIEUTH
-0xAB70	0xCCCE	# HANGUL SYLLABLE CHIEUCH-E-PHIEUPH
-0xAB71	0xCCCF	# HANGUL SYLLABLE CHIEUCH-E-HIEUH
-0xAB72	0xCCD1	# HANGUL SYLLABLE CHIEUCH-YEO-KIYEOK
-0xAB73	0xCCD2	# HANGUL SYLLABLE CHIEUCH-YEO-SSANGKIYEOK
-0xAB74	0xCCD3	# HANGUL SYLLABLE CHIEUCH-YEO-KIYEOKSIOS
-0xAB75	0xCCD5	# HANGUL SYLLABLE CHIEUCH-YEO-NIEUNCIEUC
-0xAB76	0xCCD6	# HANGUL SYLLABLE CHIEUCH-YEO-NIEUNHIEUH
-0xAB77	0xCCD7	# HANGUL SYLLABLE CHIEUCH-YEO-TIKEUT
-0xAB78	0xCCD8	# HANGUL SYLLABLE CHIEUCH-YEO-RIEUL
-0xAB79	0xCCD9	# HANGUL SYLLABLE CHIEUCH-YEO-RIEULKIYEOK
-0xAB7A	0xCCDA	# HANGUL SYLLABLE CHIEUCH-YEO-RIEULMIEUM
-0xAB81	0xCCDB	# HANGUL SYLLABLE CHIEUCH-YEO-RIEULPIEUP
-0xAB82	0xCCDC	# HANGUL SYLLABLE CHIEUCH-YEO-RIEULSIOS
-0xAB83	0xCCDD	# HANGUL SYLLABLE CHIEUCH-YEO-RIEULTHIEUTH
-0xAB84	0xCCDE	# HANGUL SYLLABLE CHIEUCH-YEO-RIEULPHIEUPH
-0xAB85	0xCCDF	# HANGUL SYLLABLE CHIEUCH-YEO-RIEULHIEUH
-0xAB86	0xCCE0	# HANGUL SYLLABLE CHIEUCH-YEO-MIEUM
-0xAB87	0xCCE1	# HANGUL SYLLABLE CHIEUCH-YEO-PIEUP
-0xAB88	0xCCE2	# HANGUL SYLLABLE CHIEUCH-YEO-PIEUPSIOS
-0xAB89	0xCCE3	# HANGUL SYLLABLE CHIEUCH-YEO-SIOS
-0xAB8A	0xCCE5	# HANGUL SYLLABLE CHIEUCH-YEO-IEUNG
-0xAB8B	0xCCE6	# HANGUL SYLLABLE CHIEUCH-YEO-CIEUC
-0xAB8C	0xCCE7	# HANGUL SYLLABLE CHIEUCH-YEO-CHIEUCH
-0xAB8D	0xCCE8	# HANGUL SYLLABLE CHIEUCH-YEO-KHIEUKH
-0xAB8E	0xCCE9	# HANGUL SYLLABLE CHIEUCH-YEO-THIEUTH
-0xAB8F	0xCCEA	# HANGUL SYLLABLE CHIEUCH-YEO-PHIEUPH
-0xAB90	0xCCEB	# HANGUL SYLLABLE CHIEUCH-YEO-HIEUH
-0xAB91	0xCCED	# HANGUL SYLLABLE CHIEUCH-YE-KIYEOK
-0xAB92	0xCCEE	# HANGUL SYLLABLE CHIEUCH-YE-SSANGKIYEOK
-0xAB93	0xCCEF	# HANGUL SYLLABLE CHIEUCH-YE-KIYEOKSIOS
-0xAB94	0xCCF1	# HANGUL SYLLABLE CHIEUCH-YE-NIEUNCIEUC
-0xAB95	0xCCF2	# HANGUL SYLLABLE CHIEUCH-YE-NIEUNHIEUH
-0xAB96	0xCCF3	# HANGUL SYLLABLE CHIEUCH-YE-TIKEUT
-0xAB97	0xCCF4	# HANGUL SYLLABLE CHIEUCH-YE-RIEUL
-0xAB98	0xCCF5	# HANGUL SYLLABLE CHIEUCH-YE-RIEULKIYEOK
-0xAB99	0xCCF6	# HANGUL SYLLABLE CHIEUCH-YE-RIEULMIEUM
-0xAB9A	0xCCF7	# HANGUL SYLLABLE CHIEUCH-YE-RIEULPIEUP
-0xAB9B	0xCCF8	# HANGUL SYLLABLE CHIEUCH-YE-RIEULSIOS
-0xAB9C	0xCCF9	# HANGUL SYLLABLE CHIEUCH-YE-RIEULTHIEUTH
-0xAB9D	0xCCFA	# HANGUL SYLLABLE CHIEUCH-YE-RIEULPHIEUPH
-0xAB9E	0xCCFB	# HANGUL SYLLABLE CHIEUCH-YE-RIEULHIEUH
-0xAB9F	0xCCFC	# HANGUL SYLLABLE CHIEUCH-YE-MIEUM
-0xABA0	0xCCFD	# HANGUL SYLLABLE CHIEUCH-YE-PIEUP
-0xABA1	0x30A1	# KATAKANA LETTER SMALL A
-0xABA2	0x30A2	# KATAKANA LETTER A
-0xABA3	0x30A3	# KATAKANA LETTER SMALL I
-0xABA4	0x30A4	# KATAKANA LETTER I
-0xABA5	0x30A5	# KATAKANA LETTER SMALL U
-0xABA6	0x30A6	# KATAKANA LETTER U
-0xABA7	0x30A7	# KATAKANA LETTER SMALL E
-0xABA8	0x30A8	# KATAKANA LETTER E
-0xABA9	0x30A9	# KATAKANA LETTER SMALL O
-0xABAA	0x30AA	# KATAKANA LETTER O
-0xABAB	0x30AB	# KATAKANA LETTER KA
-0xABAC	0x30AC	# KATAKANA LETTER GA
-0xABAD	0x30AD	# KATAKANA LETTER KI
-0xABAE	0x30AE	# KATAKANA LETTER GI
-0xABAF	0x30AF	# KATAKANA LETTER KU
-0xABB0	0x30B0	# KATAKANA LETTER GU
-0xABB1	0x30B1	# KATAKANA LETTER KE
-0xABB2	0x30B2	# KATAKANA LETTER GE
-0xABB3	0x30B3	# KATAKANA LETTER KO
-0xABB4	0x30B4	# KATAKANA LETTER GO
-0xABB5	0x30B5	# KATAKANA LETTER SA
-0xABB6	0x30B6	# KATAKANA LETTER ZA
-0xABB7	0x30B7	# KATAKANA LETTER SI
-0xABB8	0x30B8	# KATAKANA LETTER ZI
-0xABB9	0x30B9	# KATAKANA LETTER SU
-0xABBA	0x30BA	# KATAKANA LETTER ZU
-0xABBB	0x30BB	# KATAKANA LETTER SE
-0xABBC	0x30BC	# KATAKANA LETTER ZE
-0xABBD	0x30BD	# KATAKANA LETTER SO
-0xABBE	0x30BE	# KATAKANA LETTER ZO
-0xABBF	0x30BF	# KATAKANA LETTER TA
-0xABC0	0x30C0	# KATAKANA LETTER DA
-0xABC1	0x30C1	# KATAKANA LETTER TI
-0xABC2	0x30C2	# KATAKANA LETTER DI
-0xABC3	0x30C3	# KATAKANA LETTER SMALL TU
-0xABC4	0x30C4	# KATAKANA LETTER TU
-0xABC5	0x30C5	# KATAKANA LETTER DU
-0xABC6	0x30C6	# KATAKANA LETTER TE
-0xABC7	0x30C7	# KATAKANA LETTER DE
-0xABC8	0x30C8	# KATAKANA LETTER TO
-0xABC9	0x30C9	# KATAKANA LETTER DO
-0xABCA	0x30CA	# KATAKANA LETTER NA
-0xABCB	0x30CB	# KATAKANA LETTER NI
-0xABCC	0x30CC	# KATAKANA LETTER NU
-0xABCD	0x30CD	# KATAKANA LETTER NE
-0xABCE	0x30CE	# KATAKANA LETTER NO
-0xABCF	0x30CF	# KATAKANA LETTER HA
-0xABD0	0x30D0	# KATAKANA LETTER BA
-0xABD1	0x30D1	# KATAKANA LETTER PA
-0xABD2	0x30D2	# KATAKANA LETTER HI
-0xABD3	0x30D3	# KATAKANA LETTER BI
-0xABD4	0x30D4	# KATAKANA LETTER PI
-0xABD5	0x30D5	# KATAKANA LETTER HU
-0xABD6	0x30D6	# KATAKANA LETTER BU
-0xABD7	0x30D7	# KATAKANA LETTER PU
-0xABD8	0x30D8	# KATAKANA LETTER HE
-0xABD9	0x30D9	# KATAKANA LETTER BE
-0xABDA	0x30DA	# KATAKANA LETTER PE
-0xABDB	0x30DB	# KATAKANA LETTER HO
-0xABDC	0x30DC	# KATAKANA LETTER BO
-0xABDD	0x30DD	# KATAKANA LETTER PO
-0xABDE	0x30DE	# KATAKANA LETTER MA
-0xABDF	0x30DF	# KATAKANA LETTER MI
-0xABE0	0x30E0	# KATAKANA LETTER MU
-0xABE1	0x30E1	# KATAKANA LETTER ME
-0xABE2	0x30E2	# KATAKANA LETTER MO
-0xABE3	0x30E3	# KATAKANA LETTER SMALL YA
-0xABE4	0x30E4	# KATAKANA LETTER YA
-0xABE5	0x30E5	# KATAKANA LETTER SMALL YU
-0xABE6	0x30E6	# KATAKANA LETTER YU
-0xABE7	0x30E7	# KATAKANA LETTER SMALL YO
-0xABE8	0x30E8	# KATAKANA LETTER YO
-0xABE9	0x30E9	# KATAKANA LETTER RA
-0xABEA	0x30EA	# KATAKANA LETTER RI
-0xABEB	0x30EB	# KATAKANA LETTER RU
-0xABEC	0x30EC	# KATAKANA LETTER RE
-0xABED	0x30ED	# KATAKANA LETTER RO
-0xABEE	0x30EE	# KATAKANA LETTER SMALL WA
-0xABEF	0x30EF	# KATAKANA LETTER WA
-0xABF0	0x30F0	# KATAKANA LETTER WI
-0xABF1	0x30F1	# KATAKANA LETTER WE
-0xABF2	0x30F2	# KATAKANA LETTER WO
-0xABF3	0x30F3	# KATAKANA LETTER N
-0xABF4	0x30F4	# KATAKANA LETTER VU
-0xABF5	0x30F5	# KATAKANA LETTER SMALL KA
-0xABF6	0x30F6	# KATAKANA LETTER SMALL KE
-0xAC41	0xCCFE	# HANGUL SYLLABLE CHIEUCH-YE-PIEUPSIOS
-0xAC42	0xCCFF	# HANGUL SYLLABLE CHIEUCH-YE-SIOS
-0xAC43	0xCD00	# HANGUL SYLLABLE CHIEUCH-YE-SSANGSIOS
-0xAC44	0xCD02	# HANGUL SYLLABLE CHIEUCH-YE-CIEUC
-0xAC45	0xCD03	# HANGUL SYLLABLE CHIEUCH-YE-CHIEUCH
-0xAC46	0xCD04	# HANGUL SYLLABLE CHIEUCH-YE-KHIEUKH
-0xAC47	0xCD05	# HANGUL SYLLABLE CHIEUCH-YE-THIEUTH
-0xAC48	0xCD06	# HANGUL SYLLABLE CHIEUCH-YE-PHIEUPH
-0xAC49	0xCD07	# HANGUL SYLLABLE CHIEUCH-YE-HIEUH
-0xAC4A	0xCD0A	# HANGUL SYLLABLE CHIEUCH-O-SSANGKIYEOK
-0xAC4B	0xCD0B	# HANGUL SYLLABLE CHIEUCH-O-KIYEOKSIOS
-0xAC4C	0xCD0D	# HANGUL SYLLABLE CHIEUCH-O-NIEUNCIEUC
-0xAC4D	0xCD0E	# HANGUL SYLLABLE CHIEUCH-O-NIEUNHIEUH
-0xAC4E	0xCD0F	# HANGUL SYLLABLE CHIEUCH-O-TIKEUT
-0xAC4F	0xCD11	# HANGUL SYLLABLE CHIEUCH-O-RIEULKIYEOK
-0xAC50	0xCD12	# HANGUL SYLLABLE CHIEUCH-O-RIEULMIEUM
-0xAC51	0xCD13	# HANGUL SYLLABLE CHIEUCH-O-RIEULPIEUP
-0xAC52	0xCD14	# HANGUL SYLLABLE CHIEUCH-O-RIEULSIOS
-0xAC53	0xCD15	# HANGUL SYLLABLE CHIEUCH-O-RIEULTHIEUTH
-0xAC54	0xCD16	# HANGUL SYLLABLE CHIEUCH-O-RIEULPHIEUPH
-0xAC55	0xCD17	# HANGUL SYLLABLE CHIEUCH-O-RIEULHIEUH
-0xAC56	0xCD1A	# HANGUL SYLLABLE CHIEUCH-O-PIEUPSIOS
-0xAC57	0xCD1C	# HANGUL SYLLABLE CHIEUCH-O-SSANGSIOS
-0xAC58	0xCD1E	# HANGUL SYLLABLE CHIEUCH-O-CIEUC
-0xAC59	0xCD1F	# HANGUL SYLLABLE CHIEUCH-O-CHIEUCH
-0xAC5A	0xCD20	# HANGUL SYLLABLE CHIEUCH-O-KHIEUKH
-0xAC61	0xCD21	# HANGUL SYLLABLE CHIEUCH-O-THIEUTH
-0xAC62	0xCD22	# HANGUL SYLLABLE CHIEUCH-O-PHIEUPH
-0xAC63	0xCD23	# HANGUL SYLLABLE CHIEUCH-O-HIEUH
-0xAC64	0xCD25	# HANGUL SYLLABLE CHIEUCH-WA-KIYEOK
-0xAC65	0xCD26	# HANGUL SYLLABLE CHIEUCH-WA-SSANGKIYEOK
-0xAC66	0xCD27	# HANGUL SYLLABLE CHIEUCH-WA-KIYEOKSIOS
-0xAC67	0xCD29	# HANGUL SYLLABLE CHIEUCH-WA-NIEUNCIEUC
-0xAC68	0xCD2A	# HANGUL SYLLABLE CHIEUCH-WA-NIEUNHIEUH
-0xAC69	0xCD2B	# HANGUL SYLLABLE CHIEUCH-WA-TIKEUT
-0xAC6A	0xCD2D	# HANGUL SYLLABLE CHIEUCH-WA-RIEULKIYEOK
-0xAC6B	0xCD2E	# HANGUL SYLLABLE CHIEUCH-WA-RIEULMIEUM
-0xAC6C	0xCD2F	# HANGUL SYLLABLE CHIEUCH-WA-RIEULPIEUP
-0xAC6D	0xCD30	# HANGUL SYLLABLE CHIEUCH-WA-RIEULSIOS
-0xAC6E	0xCD31	# HANGUL SYLLABLE CHIEUCH-WA-RIEULTHIEUTH
-0xAC6F	0xCD32	# HANGUL SYLLABLE CHIEUCH-WA-RIEULPHIEUPH
-0xAC70	0xCD33	# HANGUL SYLLABLE CHIEUCH-WA-RIEULHIEUH
-0xAC71	0xCD34	# HANGUL SYLLABLE CHIEUCH-WA-MIEUM
-0xAC72	0xCD35	# HANGUL SYLLABLE CHIEUCH-WA-PIEUP
-0xAC73	0xCD36	# HANGUL SYLLABLE CHIEUCH-WA-PIEUPSIOS
-0xAC74	0xCD37	# HANGUL SYLLABLE CHIEUCH-WA-SIOS
-0xAC75	0xCD38	# HANGUL SYLLABLE CHIEUCH-WA-SSANGSIOS
-0xAC76	0xCD3A	# HANGUL SYLLABLE CHIEUCH-WA-CIEUC
-0xAC77	0xCD3B	# HANGUL SYLLABLE CHIEUCH-WA-CHIEUCH
-0xAC78	0xCD3C	# HANGUL SYLLABLE CHIEUCH-WA-KHIEUKH
-0xAC79	0xCD3D	# HANGUL SYLLABLE CHIEUCH-WA-THIEUTH
-0xAC7A	0xCD3E	# HANGUL SYLLABLE CHIEUCH-WA-PHIEUPH
-0xAC81	0xCD3F	# HANGUL SYLLABLE CHIEUCH-WA-HIEUH
-0xAC82	0xCD40	# HANGUL SYLLABLE CHIEUCH-WAE
-0xAC83	0xCD41	# HANGUL SYLLABLE CHIEUCH-WAE-KIYEOK
-0xAC84	0xCD42	# HANGUL SYLLABLE CHIEUCH-WAE-SSANGKIYEOK
-0xAC85	0xCD43	# HANGUL SYLLABLE CHIEUCH-WAE-KIYEOKSIOS
-0xAC86	0xCD44	# HANGUL SYLLABLE CHIEUCH-WAE-NIEUN
-0xAC87	0xCD45	# HANGUL SYLLABLE CHIEUCH-WAE-NIEUNCIEUC
-0xAC88	0xCD46	# HANGUL SYLLABLE CHIEUCH-WAE-NIEUNHIEUH
-0xAC89	0xCD47	# HANGUL SYLLABLE CHIEUCH-WAE-TIKEUT
-0xAC8A	0xCD48	# HANGUL SYLLABLE CHIEUCH-WAE-RIEUL
-0xAC8B	0xCD49	# HANGUL SYLLABLE CHIEUCH-WAE-RIEULKIYEOK
-0xAC8C	0xCD4A	# HANGUL SYLLABLE CHIEUCH-WAE-RIEULMIEUM
-0xAC8D	0xCD4B	# HANGUL SYLLABLE CHIEUCH-WAE-RIEULPIEUP
-0xAC8E	0xCD4C	# HANGUL SYLLABLE CHIEUCH-WAE-RIEULSIOS
-0xAC8F	0xCD4D	# HANGUL SYLLABLE CHIEUCH-WAE-RIEULTHIEUTH
-0xAC90	0xCD4E	# HANGUL SYLLABLE CHIEUCH-WAE-RIEULPHIEUPH
-0xAC91	0xCD4F	# HANGUL SYLLABLE CHIEUCH-WAE-RIEULHIEUH
-0xAC92	0xCD50	# HANGUL SYLLABLE CHIEUCH-WAE-MIEUM
-0xAC93	0xCD51	# HANGUL SYLLABLE CHIEUCH-WAE-PIEUP
-0xAC94	0xCD52	# HANGUL SYLLABLE CHIEUCH-WAE-PIEUPSIOS
-0xAC95	0xCD53	# HANGUL SYLLABLE CHIEUCH-WAE-SIOS
-0xAC96	0xCD54	# HANGUL SYLLABLE CHIEUCH-WAE-SSANGSIOS
-0xAC97	0xCD55	# HANGUL SYLLABLE CHIEUCH-WAE-IEUNG
-0xAC98	0xCD56	# HANGUL SYLLABLE CHIEUCH-WAE-CIEUC
-0xAC99	0xCD57	# HANGUL SYLLABLE CHIEUCH-WAE-CHIEUCH
-0xAC9A	0xCD58	# HANGUL SYLLABLE CHIEUCH-WAE-KHIEUKH
-0xAC9B	0xCD59	# HANGUL SYLLABLE CHIEUCH-WAE-THIEUTH
-0xAC9C	0xCD5A	# HANGUL SYLLABLE CHIEUCH-WAE-PHIEUPH
-0xAC9D	0xCD5B	# HANGUL SYLLABLE CHIEUCH-WAE-HIEUH
-0xAC9E	0xCD5D	# HANGUL SYLLABLE CHIEUCH-OE-KIYEOK
-0xAC9F	0xCD5E	# HANGUL SYLLABLE CHIEUCH-OE-SSANGKIYEOK
-0xACA0	0xCD5F	# HANGUL SYLLABLE CHIEUCH-OE-KIYEOKSIOS
-0xACA1	0x0410	# CYRILLIC CAPITAL LETTER A
-0xACA2	0x0411	# CYRILLIC CAPITAL LETTER BE
-0xACA3	0x0412	# CYRILLIC CAPITAL LETTER VE
-0xACA4	0x0413	# CYRILLIC CAPITAL LETTER GHE
-0xACA5	0x0414	# CYRILLIC CAPITAL LETTER DE
-0xACA6	0x0415	# CYRILLIC CAPITAL LETTER IE
-0xACA7	0x0401	# CYRILLIC CAPITAL LETTER IO
-0xACA8	0x0416	# CYRILLIC CAPITAL LETTER ZHE
-0xACA9	0x0417	# CYRILLIC CAPITAL LETTER ZE
-0xACAA	0x0418	# CYRILLIC CAPITAL LETTER I
-0xACAB	0x0419	# CYRILLIC CAPITAL LETTER SHORT I
-0xACAC	0x041A	# CYRILLIC CAPITAL LETTER KA
-0xACAD	0x041B	# CYRILLIC CAPITAL LETTER EL
-0xACAE	0x041C	# CYRILLIC CAPITAL LETTER EM
-0xACAF	0x041D	# CYRILLIC CAPITAL LETTER EN
-0xACB0	0x041E	# CYRILLIC CAPITAL LETTER O
-0xACB1	0x041F	# CYRILLIC CAPITAL LETTER PE
-0xACB2	0x0420	# CYRILLIC CAPITAL LETTER ER
-0xACB3	0x0421	# CYRILLIC CAPITAL LETTER ES
-0xACB4	0x0422	# CYRILLIC CAPITAL LETTER TE
-0xACB5	0x0423	# CYRILLIC CAPITAL LETTER U
-0xACB6	0x0424	# CYRILLIC CAPITAL LETTER EF
-0xACB7	0x0425	# CYRILLIC CAPITAL LETTER HA
-0xACB8	0x0426	# CYRILLIC CAPITAL LETTER TSE
-0xACB9	0x0427	# CYRILLIC CAPITAL LETTER CHE
-0xACBA	0x0428	# CYRILLIC CAPITAL LETTER SHA
-0xACBB	0x0429	# CYRILLIC CAPITAL LETTER SHCHA
-0xACBC	0x042A	# CYRILLIC CAPITAL LETTER HARD SIGN
-0xACBD	0x042B	# CYRILLIC CAPITAL LETTER YERU
-0xACBE	0x042C	# CYRILLIC CAPITAL LETTER SOFT SIGN
-0xACBF	0x042D	# CYRILLIC CAPITAL LETTER E
-0xACC0	0x042E	# CYRILLIC CAPITAL LETTER YU
-0xACC1	0x042F	# CYRILLIC CAPITAL LETTER YA
-0xACD1	0x0430	# CYRILLIC SMALL LETTER A
-0xACD2	0x0431	# CYRILLIC SMALL LETTER BE
-0xACD3	0x0432	# CYRILLIC SMALL LETTER VE
-0xACD4	0x0433	# CYRILLIC SMALL LETTER GHE
-0xACD5	0x0434	# CYRILLIC SMALL LETTER DE
-0xACD6	0x0435	# CYRILLIC SMALL LETTER IE
-0xACD7	0x0451	# CYRILLIC SMALL LETTER IO
-0xACD8	0x0436	# CYRILLIC SMALL LETTER ZHE
-0xACD9	0x0437	# CYRILLIC SMALL LETTER ZE
-0xACDA	0x0438	# CYRILLIC SMALL LETTER I
-0xACDB	0x0439	# CYRILLIC SMALL LETTER SHORT I
-0xACDC	0x043A	# CYRILLIC SMALL LETTER KA
-0xACDD	0x043B	# CYRILLIC SMALL LETTER EL
-0xACDE	0x043C	# CYRILLIC SMALL LETTER EM
-0xACDF	0x043D	# CYRILLIC SMALL LETTER EN
-0xACE0	0x043E	# CYRILLIC SMALL LETTER O
-0xACE1	0x043F	# CYRILLIC SMALL LETTER PE
-0xACE2	0x0440	# CYRILLIC SMALL LETTER ER
-0xACE3	0x0441	# CYRILLIC SMALL LETTER ES
-0xACE4	0x0442	# CYRILLIC SMALL LETTER TE
-0xACE5	0x0443	# CYRILLIC SMALL LETTER U
-0xACE6	0x0444	# CYRILLIC SMALL LETTER EF
-0xACE7	0x0445	# CYRILLIC SMALL LETTER HA
-0xACE8	0x0446	# CYRILLIC SMALL LETTER TSE
-0xACE9	0x0447	# CYRILLIC SMALL LETTER CHE
-0xACEA	0x0448	# CYRILLIC SMALL LETTER SHA
-0xACEB	0x0449	# CYRILLIC SMALL LETTER SHCHA
-0xACEC	0x044A	# CYRILLIC SMALL LETTER HARD SIGN
-0xACED	0x044B	# CYRILLIC SMALL LETTER YERU
-0xACEE	0x044C	# CYRILLIC SMALL LETTER SOFT SIGN
-0xACEF	0x044D	# CYRILLIC SMALL LETTER E
-0xACF0	0x044E	# CYRILLIC SMALL LETTER YU
-0xACF1	0x044F	# CYRILLIC SMALL LETTER YA
-0xAD41	0xCD61	# HANGUL SYLLABLE CHIEUCH-OE-NIEUNCIEUC
-0xAD42	0xCD62	# HANGUL SYLLABLE CHIEUCH-OE-NIEUNHIEUH
-0xAD43	0xCD63	# HANGUL SYLLABLE CHIEUCH-OE-TIKEUT
-0xAD44	0xCD65	# HANGUL SYLLABLE CHIEUCH-OE-RIEULKIYEOK
-0xAD45	0xCD66	# HANGUL SYLLABLE CHIEUCH-OE-RIEULMIEUM
-0xAD46	0xCD67	# HANGUL SYLLABLE CHIEUCH-OE-RIEULPIEUP
-0xAD47	0xCD68	# HANGUL SYLLABLE CHIEUCH-OE-RIEULSIOS
-0xAD48	0xCD69	# HANGUL SYLLABLE CHIEUCH-OE-RIEULTHIEUTH
-0xAD49	0xCD6A	# HANGUL SYLLABLE CHIEUCH-OE-RIEULPHIEUPH
-0xAD4A	0xCD6B	# HANGUL SYLLABLE CHIEUCH-OE-RIEULHIEUH
-0xAD4B	0xCD6E	# HANGUL SYLLABLE CHIEUCH-OE-PIEUPSIOS
-0xAD4C	0xCD70	# HANGUL SYLLABLE CHIEUCH-OE-SSANGSIOS
-0xAD4D	0xCD72	# HANGUL SYLLABLE CHIEUCH-OE-CIEUC
-0xAD4E	0xCD73	# HANGUL SYLLABLE CHIEUCH-OE-CHIEUCH
-0xAD4F	0xCD74	# HANGUL SYLLABLE CHIEUCH-OE-KHIEUKH
-0xAD50	0xCD75	# HANGUL SYLLABLE CHIEUCH-OE-THIEUTH
-0xAD51	0xCD76	# HANGUL SYLLABLE CHIEUCH-OE-PHIEUPH
-0xAD52	0xCD77	# HANGUL SYLLABLE CHIEUCH-OE-HIEUH
-0xAD53	0xCD79	# HANGUL SYLLABLE CHIEUCH-YO-KIYEOK
-0xAD54	0xCD7A	# HANGUL SYLLABLE CHIEUCH-YO-SSANGKIYEOK
-0xAD55	0xCD7B	# HANGUL SYLLABLE CHIEUCH-YO-KIYEOKSIOS
-0xAD56	0xCD7C	# HANGUL SYLLABLE CHIEUCH-YO-NIEUN
-0xAD57	0xCD7D	# HANGUL SYLLABLE CHIEUCH-YO-NIEUNCIEUC
-0xAD58	0xCD7E	# HANGUL SYLLABLE CHIEUCH-YO-NIEUNHIEUH
-0xAD59	0xCD7F	# HANGUL SYLLABLE CHIEUCH-YO-TIKEUT
-0xAD5A	0xCD80	# HANGUL SYLLABLE CHIEUCH-YO-RIEUL
-0xAD61	0xCD81	# HANGUL SYLLABLE CHIEUCH-YO-RIEULKIYEOK
-0xAD62	0xCD82	# HANGUL SYLLABLE CHIEUCH-YO-RIEULMIEUM
-0xAD63	0xCD83	# HANGUL SYLLABLE CHIEUCH-YO-RIEULPIEUP
-0xAD64	0xCD84	# HANGUL SYLLABLE CHIEUCH-YO-RIEULSIOS
-0xAD65	0xCD85	# HANGUL SYLLABLE CHIEUCH-YO-RIEULTHIEUTH
-0xAD66	0xCD86	# HANGUL SYLLABLE CHIEUCH-YO-RIEULPHIEUPH
-0xAD67	0xCD87	# HANGUL SYLLABLE CHIEUCH-YO-RIEULHIEUH
-0xAD68	0xCD89	# HANGUL SYLLABLE CHIEUCH-YO-PIEUP
-0xAD69	0xCD8A	# HANGUL SYLLABLE CHIEUCH-YO-PIEUPSIOS
-0xAD6A	0xCD8B	# HANGUL SYLLABLE CHIEUCH-YO-SIOS
-0xAD6B	0xCD8C	# HANGUL SYLLABLE CHIEUCH-YO-SSANGSIOS
-0xAD6C	0xCD8D	# HANGUL SYLLABLE CHIEUCH-YO-IEUNG
-0xAD6D	0xCD8E	# HANGUL SYLLABLE CHIEUCH-YO-CIEUC
-0xAD6E	0xCD8F	# HANGUL SYLLABLE CHIEUCH-YO-CHIEUCH
-0xAD6F	0xCD90	# HANGUL SYLLABLE CHIEUCH-YO-KHIEUKH
-0xAD70	0xCD91	# HANGUL SYLLABLE CHIEUCH-YO-THIEUTH
-0xAD71	0xCD92	# HANGUL SYLLABLE CHIEUCH-YO-PHIEUPH
-0xAD72	0xCD93	# HANGUL SYLLABLE CHIEUCH-YO-HIEUH
-0xAD73	0xCD96	# HANGUL SYLLABLE CHIEUCH-U-SSANGKIYEOK
-0xAD74	0xCD97	# HANGUL SYLLABLE CHIEUCH-U-KIYEOKSIOS
-0xAD75	0xCD99	# HANGUL SYLLABLE CHIEUCH-U-NIEUNCIEUC
-0xAD76	0xCD9A	# HANGUL SYLLABLE CHIEUCH-U-NIEUNHIEUH
-0xAD77	0xCD9B	# HANGUL SYLLABLE CHIEUCH-U-TIKEUT
-0xAD78	0xCD9D	# HANGUL SYLLABLE CHIEUCH-U-RIEULKIYEOK
-0xAD79	0xCD9E	# HANGUL SYLLABLE CHIEUCH-U-RIEULMIEUM
-0xAD7A	0xCD9F	# HANGUL SYLLABLE CHIEUCH-U-RIEULPIEUP
-0xAD81	0xCDA0	# HANGUL SYLLABLE CHIEUCH-U-RIEULSIOS
-0xAD82	0xCDA1	# HANGUL SYLLABLE CHIEUCH-U-RIEULTHIEUTH
-0xAD83	0xCDA2	# HANGUL SYLLABLE CHIEUCH-U-RIEULPHIEUPH
-0xAD84	0xCDA3	# HANGUL SYLLABLE CHIEUCH-U-RIEULHIEUH
-0xAD85	0xCDA6	# HANGUL SYLLABLE CHIEUCH-U-PIEUPSIOS
-0xAD86	0xCDA8	# HANGUL SYLLABLE CHIEUCH-U-SSANGSIOS
-0xAD87	0xCDAA	# HANGUL SYLLABLE CHIEUCH-U-CIEUC
-0xAD88	0xCDAB	# HANGUL SYLLABLE CHIEUCH-U-CHIEUCH
-0xAD89	0xCDAC	# HANGUL SYLLABLE CHIEUCH-U-KHIEUKH
-0xAD8A	0xCDAD	# HANGUL SYLLABLE CHIEUCH-U-THIEUTH
-0xAD8B	0xCDAE	# HANGUL SYLLABLE CHIEUCH-U-PHIEUPH
-0xAD8C	0xCDAF	# HANGUL SYLLABLE CHIEUCH-U-HIEUH
-0xAD8D	0xCDB1	# HANGUL SYLLABLE CHIEUCH-WEO-KIYEOK
-0xAD8E	0xCDB2	# HANGUL SYLLABLE CHIEUCH-WEO-SSANGKIYEOK
-0xAD8F	0xCDB3	# HANGUL SYLLABLE CHIEUCH-WEO-KIYEOKSIOS
-0xAD90	0xCDB4	# HANGUL SYLLABLE CHIEUCH-WEO-NIEUN
-0xAD91	0xCDB5	# HANGUL SYLLABLE CHIEUCH-WEO-NIEUNCIEUC
-0xAD92	0xCDB6	# HANGUL SYLLABLE CHIEUCH-WEO-NIEUNHIEUH
-0xAD93	0xCDB7	# HANGUL SYLLABLE CHIEUCH-WEO-TIKEUT
-0xAD94	0xCDB8	# HANGUL SYLLABLE CHIEUCH-WEO-RIEUL
-0xAD95	0xCDB9	# HANGUL SYLLABLE CHIEUCH-WEO-RIEULKIYEOK
-0xAD96	0xCDBA	# HANGUL SYLLABLE CHIEUCH-WEO-RIEULMIEUM
-0xAD97	0xCDBB	# HANGUL SYLLABLE CHIEUCH-WEO-RIEULPIEUP
-0xAD98	0xCDBC	# HANGUL SYLLABLE CHIEUCH-WEO-RIEULSIOS
-0xAD99	0xCDBD	# HANGUL SYLLABLE CHIEUCH-WEO-RIEULTHIEUTH
-0xAD9A	0xCDBE	# HANGUL SYLLABLE CHIEUCH-WEO-RIEULPHIEUPH
-0xAD9B	0xCDBF	# HANGUL SYLLABLE CHIEUCH-WEO-RIEULHIEUH
-0xAD9C	0xCDC0	# HANGUL SYLLABLE CHIEUCH-WEO-MIEUM
-0xAD9D	0xCDC1	# HANGUL SYLLABLE CHIEUCH-WEO-PIEUP
-0xAD9E	0xCDC2	# HANGUL SYLLABLE CHIEUCH-WEO-PIEUPSIOS
-0xAD9F	0xCDC3	# HANGUL SYLLABLE CHIEUCH-WEO-SIOS
-0xADA0	0xCDC5	# HANGUL SYLLABLE CHIEUCH-WEO-IEUNG
-0xAE41	0xCDC6	# HANGUL SYLLABLE CHIEUCH-WEO-CIEUC
-0xAE42	0xCDC7	# HANGUL SYLLABLE CHIEUCH-WEO-CHIEUCH
-0xAE43	0xCDC8	# HANGUL SYLLABLE CHIEUCH-WEO-KHIEUKH
-0xAE44	0xCDC9	# HANGUL SYLLABLE CHIEUCH-WEO-THIEUTH
-0xAE45	0xCDCA	# HANGUL SYLLABLE CHIEUCH-WEO-PHIEUPH
-0xAE46	0xCDCB	# HANGUL SYLLABLE CHIEUCH-WEO-HIEUH
-0xAE47	0xCDCD	# HANGUL SYLLABLE CHIEUCH-WE-KIYEOK
-0xAE48	0xCDCE	# HANGUL SYLLABLE CHIEUCH-WE-SSANGKIYEOK
-0xAE49	0xCDCF	# HANGUL SYLLABLE CHIEUCH-WE-KIYEOKSIOS
-0xAE4A	0xCDD1	# HANGUL SYLLABLE CHIEUCH-WE-NIEUNCIEUC
-0xAE4B	0xCDD2	# HANGUL SYLLABLE CHIEUCH-WE-NIEUNHIEUH
-0xAE4C	0xCDD3	# HANGUL SYLLABLE CHIEUCH-WE-TIKEUT
-0xAE4D	0xCDD4	# HANGUL SYLLABLE CHIEUCH-WE-RIEUL
-0xAE4E	0xCDD5	# HANGUL SYLLABLE CHIEUCH-WE-RIEULKIYEOK
-0xAE4F	0xCDD6	# HANGUL SYLLABLE CHIEUCH-WE-RIEULMIEUM
-0xAE50	0xCDD7	# HANGUL SYLLABLE CHIEUCH-WE-RIEULPIEUP
-0xAE51	0xCDD8	# HANGUL SYLLABLE CHIEUCH-WE-RIEULSIOS
-0xAE52	0xCDD9	# HANGUL SYLLABLE CHIEUCH-WE-RIEULTHIEUTH
-0xAE53	0xCDDA	# HANGUL SYLLABLE CHIEUCH-WE-RIEULPHIEUPH
-0xAE54	0xCDDB	# HANGUL SYLLABLE CHIEUCH-WE-RIEULHIEUH
-0xAE55	0xCDDC	# HANGUL SYLLABLE CHIEUCH-WE-MIEUM
-0xAE56	0xCDDD	# HANGUL SYLLABLE CHIEUCH-WE-PIEUP
-0xAE57	0xCDDE	# HANGUL SYLLABLE CHIEUCH-WE-PIEUPSIOS
-0xAE58	0xCDDF	# HANGUL SYLLABLE CHIEUCH-WE-SIOS
-0xAE59	0xCDE0	# HANGUL SYLLABLE CHIEUCH-WE-SSANGSIOS
-0xAE5A	0xCDE1	# HANGUL SYLLABLE CHIEUCH-WE-IEUNG
-0xAE61	0xCDE2	# HANGUL SYLLABLE CHIEUCH-WE-CIEUC
-0xAE62	0xCDE3	# HANGUL SYLLABLE CHIEUCH-WE-CHIEUCH
-0xAE63	0xCDE4	# HANGUL SYLLABLE CHIEUCH-WE-KHIEUKH
-0xAE64	0xCDE5	# HANGUL SYLLABLE CHIEUCH-WE-THIEUTH
-0xAE65	0xCDE6	# HANGUL SYLLABLE CHIEUCH-WE-PHIEUPH
-0xAE66	0xCDE7	# HANGUL SYLLABLE CHIEUCH-WE-HIEUH
-0xAE67	0xCDE9	# HANGUL SYLLABLE CHIEUCH-WI-KIYEOK
-0xAE68	0xCDEA	# HANGUL SYLLABLE CHIEUCH-WI-SSANGKIYEOK
-0xAE69	0xCDEB	# HANGUL SYLLABLE CHIEUCH-WI-KIYEOKSIOS
-0xAE6A	0xCDED	# HANGUL SYLLABLE CHIEUCH-WI-NIEUNCIEUC
-0xAE6B	0xCDEE	# HANGUL SYLLABLE CHIEUCH-WI-NIEUNHIEUH
-0xAE6C	0xCDEF	# HANGUL SYLLABLE CHIEUCH-WI-TIKEUT
-0xAE6D	0xCDF1	# HANGUL SYLLABLE CHIEUCH-WI-RIEULKIYEOK
-0xAE6E	0xCDF2	# HANGUL SYLLABLE CHIEUCH-WI-RIEULMIEUM
-0xAE6F	0xCDF3	# HANGUL SYLLABLE CHIEUCH-WI-RIEULPIEUP
-0xAE70	0xCDF4	# HANGUL SYLLABLE CHIEUCH-WI-RIEULSIOS
-0xAE71	0xCDF5	# HANGUL SYLLABLE CHIEUCH-WI-RIEULTHIEUTH
-0xAE72	0xCDF6	# HANGUL SYLLABLE CHIEUCH-WI-RIEULPHIEUPH
-0xAE73	0xCDF7	# HANGUL SYLLABLE CHIEUCH-WI-RIEULHIEUH
-0xAE74	0xCDFA	# HANGUL SYLLABLE CHIEUCH-WI-PIEUPSIOS
-0xAE75	0xCDFC	# HANGUL SYLLABLE CHIEUCH-WI-SSANGSIOS
-0xAE76	0xCDFE	# HANGUL SYLLABLE CHIEUCH-WI-CIEUC
-0xAE77	0xCDFF	# HANGUL SYLLABLE CHIEUCH-WI-CHIEUCH
-0xAE78	0xCE00	# HANGUL SYLLABLE CHIEUCH-WI-KHIEUKH
-0xAE79	0xCE01	# HANGUL SYLLABLE CHIEUCH-WI-THIEUTH
-0xAE7A	0xCE02	# HANGUL SYLLABLE CHIEUCH-WI-PHIEUPH
-0xAE81	0xCE03	# HANGUL SYLLABLE CHIEUCH-WI-HIEUH
-0xAE82	0xCE05	# HANGUL SYLLABLE CHIEUCH-YU-KIYEOK
-0xAE83	0xCE06	# HANGUL SYLLABLE CHIEUCH-YU-SSANGKIYEOK
-0xAE84	0xCE07	# HANGUL SYLLABLE CHIEUCH-YU-KIYEOKSIOS
-0xAE85	0xCE09	# HANGUL SYLLABLE CHIEUCH-YU-NIEUNCIEUC
-0xAE86	0xCE0A	# HANGUL SYLLABLE CHIEUCH-YU-NIEUNHIEUH
-0xAE87	0xCE0B	# HANGUL SYLLABLE CHIEUCH-YU-TIKEUT
-0xAE88	0xCE0D	# HANGUL SYLLABLE CHIEUCH-YU-RIEULKIYEOK
-0xAE89	0xCE0E	# HANGUL SYLLABLE CHIEUCH-YU-RIEULMIEUM
-0xAE8A	0xCE0F	# HANGUL SYLLABLE CHIEUCH-YU-RIEULPIEUP
-0xAE8B	0xCE10	# HANGUL SYLLABLE CHIEUCH-YU-RIEULSIOS
-0xAE8C	0xCE11	# HANGUL SYLLABLE CHIEUCH-YU-RIEULTHIEUTH
-0xAE8D	0xCE12	# HANGUL SYLLABLE CHIEUCH-YU-RIEULPHIEUPH
-0xAE8E	0xCE13	# HANGUL SYLLABLE CHIEUCH-YU-RIEULHIEUH
-0xAE8F	0xCE15	# HANGUL SYLLABLE CHIEUCH-YU-PIEUP
-0xAE90	0xCE16	# HANGUL SYLLABLE CHIEUCH-YU-PIEUPSIOS
-0xAE91	0xCE17	# HANGUL SYLLABLE CHIEUCH-YU-SIOS
-0xAE92	0xCE18	# HANGUL SYLLABLE CHIEUCH-YU-SSANGSIOS
-0xAE93	0xCE1A	# HANGUL SYLLABLE CHIEUCH-YU-CIEUC
-0xAE94	0xCE1B	# HANGUL SYLLABLE CHIEUCH-YU-CHIEUCH
-0xAE95	0xCE1C	# HANGUL SYLLABLE CHIEUCH-YU-KHIEUKH
-0xAE96	0xCE1D	# HANGUL SYLLABLE CHIEUCH-YU-THIEUTH
-0xAE97	0xCE1E	# HANGUL SYLLABLE CHIEUCH-YU-PHIEUPH
-0xAE98	0xCE1F	# HANGUL SYLLABLE CHIEUCH-YU-HIEUH
-0xAE99	0xCE22	# HANGUL SYLLABLE CHIEUCH-EU-SSANGKIYEOK
-0xAE9A	0xCE23	# HANGUL SYLLABLE CHIEUCH-EU-KIYEOKSIOS
-0xAE9B	0xCE25	# HANGUL SYLLABLE CHIEUCH-EU-NIEUNCIEUC
-0xAE9C	0xCE26	# HANGUL SYLLABLE CHIEUCH-EU-NIEUNHIEUH
-0xAE9D	0xCE27	# HANGUL SYLLABLE CHIEUCH-EU-TIKEUT
-0xAE9E	0xCE29	# HANGUL SYLLABLE CHIEUCH-EU-RIEULKIYEOK
-0xAE9F	0xCE2A	# HANGUL SYLLABLE CHIEUCH-EU-RIEULMIEUM
-0xAEA0	0xCE2B	# HANGUL SYLLABLE CHIEUCH-EU-RIEULPIEUP
-0xAF41	0xCE2C	# HANGUL SYLLABLE CHIEUCH-EU-RIEULSIOS
-0xAF42	0xCE2D	# HANGUL SYLLABLE CHIEUCH-EU-RIEULTHIEUTH
-0xAF43	0xCE2E	# HANGUL SYLLABLE CHIEUCH-EU-RIEULPHIEUPH
-0xAF44	0xCE2F	# HANGUL SYLLABLE CHIEUCH-EU-RIEULHIEUH
-0xAF45	0xCE32	# HANGUL SYLLABLE CHIEUCH-EU-PIEUPSIOS
-0xAF46	0xCE34	# HANGUL SYLLABLE CHIEUCH-EU-SSANGSIOS
-0xAF47	0xCE36	# HANGUL SYLLABLE CHIEUCH-EU-CIEUC
-0xAF48	0xCE37	# HANGUL SYLLABLE CHIEUCH-EU-CHIEUCH
-0xAF49	0xCE38	# HANGUL SYLLABLE CHIEUCH-EU-KHIEUKH
-0xAF4A	0xCE39	# HANGUL SYLLABLE CHIEUCH-EU-THIEUTH
-0xAF4B	0xCE3A	# HANGUL SYLLABLE CHIEUCH-EU-PHIEUPH
-0xAF4C	0xCE3B	# HANGUL SYLLABLE CHIEUCH-EU-HIEUH
-0xAF4D	0xCE3C	# HANGUL SYLLABLE CHIEUCH-YI
-0xAF4E	0xCE3D	# HANGUL SYLLABLE CHIEUCH-YI-KIYEOK
-0xAF4F	0xCE3E	# HANGUL SYLLABLE CHIEUCH-YI-SSANGKIYEOK
-0xAF50	0xCE3F	# HANGUL SYLLABLE CHIEUCH-YI-KIYEOKSIOS
-0xAF51	0xCE40	# HANGUL SYLLABLE CHIEUCH-YI-NIEUN
-0xAF52	0xCE41	# HANGUL SYLLABLE CHIEUCH-YI-NIEUNCIEUC
-0xAF53	0xCE42	# HANGUL SYLLABLE CHIEUCH-YI-NIEUNHIEUH
-0xAF54	0xCE43	# HANGUL SYLLABLE CHIEUCH-YI-TIKEUT
-0xAF55	0xCE44	# HANGUL SYLLABLE CHIEUCH-YI-RIEUL
-0xAF56	0xCE45	# HANGUL SYLLABLE CHIEUCH-YI-RIEULKIYEOK
-0xAF57	0xCE46	# HANGUL SYLLABLE CHIEUCH-YI-RIEULMIEUM
-0xAF58	0xCE47	# HANGUL SYLLABLE CHIEUCH-YI-RIEULPIEUP
-0xAF59	0xCE48	# HANGUL SYLLABLE CHIEUCH-YI-RIEULSIOS
-0xAF5A	0xCE49	# HANGUL SYLLABLE CHIEUCH-YI-RIEULTHIEUTH
-0xAF61	0xCE4A	# HANGUL SYLLABLE CHIEUCH-YI-RIEULPHIEUPH
-0xAF62	0xCE4B	# HANGUL SYLLABLE CHIEUCH-YI-RIEULHIEUH
-0xAF63	0xCE4C	# HANGUL SYLLABLE CHIEUCH-YI-MIEUM
-0xAF64	0xCE4D	# HANGUL SYLLABLE CHIEUCH-YI-PIEUP
-0xAF65	0xCE4E	# HANGUL SYLLABLE CHIEUCH-YI-PIEUPSIOS
-0xAF66	0xCE4F	# HANGUL SYLLABLE CHIEUCH-YI-SIOS
-0xAF67	0xCE50	# HANGUL SYLLABLE CHIEUCH-YI-SSANGSIOS
-0xAF68	0xCE51	# HANGUL SYLLABLE CHIEUCH-YI-IEUNG
-0xAF69	0xCE52	# HANGUL SYLLABLE CHIEUCH-YI-CIEUC
-0xAF6A	0xCE53	# HANGUL SYLLABLE CHIEUCH-YI-CHIEUCH
-0xAF6B	0xCE54	# HANGUL SYLLABLE CHIEUCH-YI-KHIEUKH
-0xAF6C	0xCE55	# HANGUL SYLLABLE CHIEUCH-YI-THIEUTH
-0xAF6D	0xCE56	# HANGUL SYLLABLE CHIEUCH-YI-PHIEUPH
-0xAF6E	0xCE57	# HANGUL SYLLABLE CHIEUCH-YI-HIEUH
-0xAF6F	0xCE5A	# HANGUL SYLLABLE CHIEUCH-I-SSANGKIYEOK
-0xAF70	0xCE5B	# HANGUL SYLLABLE CHIEUCH-I-KIYEOKSIOS
-0xAF71	0xCE5D	# HANGUL SYLLABLE CHIEUCH-I-NIEUNCIEUC
-0xAF72	0xCE5E	# HANGUL SYLLABLE CHIEUCH-I-NIEUNHIEUH
-0xAF73	0xCE62	# HANGUL SYLLABLE CHIEUCH-I-RIEULMIEUM
-0xAF74	0xCE63	# HANGUL SYLLABLE CHIEUCH-I-RIEULPIEUP
-0xAF75	0xCE64	# HANGUL SYLLABLE CHIEUCH-I-RIEULSIOS
-0xAF76	0xCE65	# HANGUL SYLLABLE CHIEUCH-I-RIEULTHIEUTH
-0xAF77	0xCE66	# HANGUL SYLLABLE CHIEUCH-I-RIEULPHIEUPH
-0xAF78	0xCE67	# HANGUL SYLLABLE CHIEUCH-I-RIEULHIEUH
-0xAF79	0xCE6A	# HANGUL SYLLABLE CHIEUCH-I-PIEUPSIOS
-0xAF7A	0xCE6C	# HANGUL SYLLABLE CHIEUCH-I-SSANGSIOS
-0xAF81	0xCE6E	# HANGUL SYLLABLE CHIEUCH-I-CIEUC
-0xAF82	0xCE6F	# HANGUL SYLLABLE CHIEUCH-I-CHIEUCH
-0xAF83	0xCE70	# HANGUL SYLLABLE CHIEUCH-I-KHIEUKH
-0xAF84	0xCE71	# HANGUL SYLLABLE CHIEUCH-I-THIEUTH
-0xAF85	0xCE72	# HANGUL SYLLABLE CHIEUCH-I-PHIEUPH
-0xAF86	0xCE73	# HANGUL SYLLABLE CHIEUCH-I-HIEUH
-0xAF87	0xCE76	# HANGUL SYLLABLE KHIEUKH-A-SSANGKIYEOK
-0xAF88	0xCE77	# HANGUL SYLLABLE KHIEUKH-A-KIYEOKSIOS
-0xAF89	0xCE79	# HANGUL SYLLABLE KHIEUKH-A-NIEUNCIEUC
-0xAF8A	0xCE7A	# HANGUL SYLLABLE KHIEUKH-A-NIEUNHIEUH
-0xAF8B	0xCE7B	# HANGUL SYLLABLE KHIEUKH-A-TIKEUT
-0xAF8C	0xCE7D	# HANGUL SYLLABLE KHIEUKH-A-RIEULKIYEOK
-0xAF8D	0xCE7E	# HANGUL SYLLABLE KHIEUKH-A-RIEULMIEUM
-0xAF8E	0xCE7F	# HANGUL SYLLABLE KHIEUKH-A-RIEULPIEUP
-0xAF8F	0xCE80	# HANGUL SYLLABLE KHIEUKH-A-RIEULSIOS
-0xAF90	0xCE81	# HANGUL SYLLABLE KHIEUKH-A-RIEULTHIEUTH
-0xAF91	0xCE82	# HANGUL SYLLABLE KHIEUKH-A-RIEULPHIEUPH
-0xAF92	0xCE83	# HANGUL SYLLABLE KHIEUKH-A-RIEULHIEUH
-0xAF93	0xCE86	# HANGUL SYLLABLE KHIEUKH-A-PIEUPSIOS
-0xAF94	0xCE88	# HANGUL SYLLABLE KHIEUKH-A-SSANGSIOS
-0xAF95	0xCE8A	# HANGUL SYLLABLE KHIEUKH-A-CIEUC
-0xAF96	0xCE8B	# HANGUL SYLLABLE KHIEUKH-A-CHIEUCH
-0xAF97	0xCE8C	# HANGUL SYLLABLE KHIEUKH-A-KHIEUKH
-0xAF98	0xCE8D	# HANGUL SYLLABLE KHIEUKH-A-THIEUTH
-0xAF99	0xCE8E	# HANGUL SYLLABLE KHIEUKH-A-PHIEUPH
-0xAF9A	0xCE8F	# HANGUL SYLLABLE KHIEUKH-A-HIEUH
-0xAF9B	0xCE92	# HANGUL SYLLABLE KHIEUKH-AE-SSANGKIYEOK
-0xAF9C	0xCE93	# HANGUL SYLLABLE KHIEUKH-AE-KIYEOKSIOS
-0xAF9D	0xCE95	# HANGUL SYLLABLE KHIEUKH-AE-NIEUNCIEUC
-0xAF9E	0xCE96	# HANGUL SYLLABLE KHIEUKH-AE-NIEUNHIEUH
-0xAF9F	0xCE97	# HANGUL SYLLABLE KHIEUKH-AE-TIKEUT
-0xAFA0	0xCE99	# HANGUL SYLLABLE KHIEUKH-AE-RIEULKIYEOK
-0xB041	0xCE9A	# HANGUL SYLLABLE KHIEUKH-AE-RIEULMIEUM
-0xB042	0xCE9B	# HANGUL SYLLABLE KHIEUKH-AE-RIEULPIEUP
-0xB043	0xCE9C	# HANGUL SYLLABLE KHIEUKH-AE-RIEULSIOS
-0xB044	0xCE9D	# HANGUL SYLLABLE KHIEUKH-AE-RIEULTHIEUTH
-0xB045	0xCE9E	# HANGUL SYLLABLE KHIEUKH-AE-RIEULPHIEUPH
-0xB046	0xCE9F	# HANGUL SYLLABLE KHIEUKH-AE-RIEULHIEUH
-0xB047	0xCEA2	# HANGUL SYLLABLE KHIEUKH-AE-PIEUPSIOS
-0xB048	0xCEA6	# HANGUL SYLLABLE KHIEUKH-AE-CIEUC
-0xB049	0xCEA7	# HANGUL SYLLABLE KHIEUKH-AE-CHIEUCH
-0xB04A	0xCEA8	# HANGUL SYLLABLE KHIEUKH-AE-KHIEUKH
-0xB04B	0xCEA9	# HANGUL SYLLABLE KHIEUKH-AE-THIEUTH
-0xB04C	0xCEAA	# HANGUL SYLLABLE KHIEUKH-AE-PHIEUPH
-0xB04D	0xCEAB	# HANGUL SYLLABLE KHIEUKH-AE-HIEUH
-0xB04E	0xCEAE	# HANGUL SYLLABLE KHIEUKH-YA-SSANGKIYEOK
-0xB04F	0xCEAF	# HANGUL SYLLABLE KHIEUKH-YA-KIYEOKSIOS
-0xB050	0xCEB0	# HANGUL SYLLABLE KHIEUKH-YA-NIEUN
-0xB051	0xCEB1	# HANGUL SYLLABLE KHIEUKH-YA-NIEUNCIEUC
-0xB052	0xCEB2	# HANGUL SYLLABLE KHIEUKH-YA-NIEUNHIEUH
-0xB053	0xCEB3	# HANGUL SYLLABLE KHIEUKH-YA-TIKEUT
-0xB054	0xCEB4	# HANGUL SYLLABLE KHIEUKH-YA-RIEUL
-0xB055	0xCEB5	# HANGUL SYLLABLE KHIEUKH-YA-RIEULKIYEOK
-0xB056	0xCEB6	# HANGUL SYLLABLE KHIEUKH-YA-RIEULMIEUM
-0xB057	0xCEB7	# HANGUL SYLLABLE KHIEUKH-YA-RIEULPIEUP
-0xB058	0xCEB8	# HANGUL SYLLABLE KHIEUKH-YA-RIEULSIOS
-0xB059	0xCEB9	# HANGUL SYLLABLE KHIEUKH-YA-RIEULTHIEUTH
-0xB05A	0xCEBA	# HANGUL SYLLABLE KHIEUKH-YA-RIEULPHIEUPH
-0xB061	0xCEBB	# HANGUL SYLLABLE KHIEUKH-YA-RIEULHIEUH
-0xB062	0xCEBC	# HANGUL SYLLABLE KHIEUKH-YA-MIEUM
-0xB063	0xCEBD	# HANGUL SYLLABLE KHIEUKH-YA-PIEUP
-0xB064	0xCEBE	# HANGUL SYLLABLE KHIEUKH-YA-PIEUPSIOS
-0xB065	0xCEBF	# HANGUL SYLLABLE KHIEUKH-YA-SIOS
-0xB066	0xCEC0	# HANGUL SYLLABLE KHIEUKH-YA-SSANGSIOS
-0xB067	0xCEC2	# HANGUL SYLLABLE KHIEUKH-YA-CIEUC
-0xB068	0xCEC3	# HANGUL SYLLABLE KHIEUKH-YA-CHIEUCH
-0xB069	0xCEC4	# HANGUL SYLLABLE KHIEUKH-YA-KHIEUKH
-0xB06A	0xCEC5	# HANGUL SYLLABLE KHIEUKH-YA-THIEUTH
-0xB06B	0xCEC6	# HANGUL SYLLABLE KHIEUKH-YA-PHIEUPH
-0xB06C	0xCEC7	# HANGUL SYLLABLE KHIEUKH-YA-HIEUH
-0xB06D	0xCEC8	# HANGUL SYLLABLE KHIEUKH-YAE
-0xB06E	0xCEC9	# HANGUL SYLLABLE KHIEUKH-YAE-KIYEOK
-0xB06F	0xCECA	# HANGUL SYLLABLE KHIEUKH-YAE-SSANGKIYEOK
-0xB070	0xCECB	# HANGUL SYLLABLE KHIEUKH-YAE-KIYEOKSIOS
-0xB071	0xCECC	# HANGUL SYLLABLE KHIEUKH-YAE-NIEUN
-0xB072	0xCECD	# HANGUL SYLLABLE KHIEUKH-YAE-NIEUNCIEUC
-0xB073	0xCECE	# HANGUL SYLLABLE KHIEUKH-YAE-NIEUNHIEUH
-0xB074	0xCECF	# HANGUL SYLLABLE KHIEUKH-YAE-TIKEUT
-0xB075	0xCED0	# HANGUL SYLLABLE KHIEUKH-YAE-RIEUL
-0xB076	0xCED1	# HANGUL SYLLABLE KHIEUKH-YAE-RIEULKIYEOK
-0xB077	0xCED2	# HANGUL SYLLABLE KHIEUKH-YAE-RIEULMIEUM
-0xB078	0xCED3	# HANGUL SYLLABLE KHIEUKH-YAE-RIEULPIEUP
-0xB079	0xCED4	# HANGUL SYLLABLE KHIEUKH-YAE-RIEULSIOS
-0xB07A	0xCED5	# HANGUL SYLLABLE KHIEUKH-YAE-RIEULTHIEUTH
-0xB081	0xCED6	# HANGUL SYLLABLE KHIEUKH-YAE-RIEULPHIEUPH
-0xB082	0xCED7	# HANGUL SYLLABLE KHIEUKH-YAE-RIEULHIEUH
-0xB083	0xCED8	# HANGUL SYLLABLE KHIEUKH-YAE-MIEUM
-0xB084	0xCED9	# HANGUL SYLLABLE KHIEUKH-YAE-PIEUP
-0xB085	0xCEDA	# HANGUL SYLLABLE KHIEUKH-YAE-PIEUPSIOS
-0xB086	0xCEDB	# HANGUL SYLLABLE KHIEUKH-YAE-SIOS
-0xB087	0xCEDC	# HANGUL SYLLABLE KHIEUKH-YAE-SSANGSIOS
-0xB088	0xCEDD	# HANGUL SYLLABLE KHIEUKH-YAE-IEUNG
-0xB089	0xCEDE	# HANGUL SYLLABLE KHIEUKH-YAE-CIEUC
-0xB08A	0xCEDF	# HANGUL SYLLABLE KHIEUKH-YAE-CHIEUCH
-0xB08B	0xCEE0	# HANGUL SYLLABLE KHIEUKH-YAE-KHIEUKH
-0xB08C	0xCEE1	# HANGUL SYLLABLE KHIEUKH-YAE-THIEUTH
-0xB08D	0xCEE2	# HANGUL SYLLABLE KHIEUKH-YAE-PHIEUPH
-0xB08E	0xCEE3	# HANGUL SYLLABLE KHIEUKH-YAE-HIEUH
-0xB08F	0xCEE6	# HANGUL SYLLABLE KHIEUKH-EO-SSANGKIYEOK
-0xB090	0xCEE7	# HANGUL SYLLABLE KHIEUKH-EO-KIYEOKSIOS
-0xB091	0xCEE9	# HANGUL SYLLABLE KHIEUKH-EO-NIEUNCIEUC
-0xB092	0xCEEA	# HANGUL SYLLABLE KHIEUKH-EO-NIEUNHIEUH
-0xB093	0xCEED	# HANGUL SYLLABLE KHIEUKH-EO-RIEULKIYEOK
-0xB094	0xCEEE	# HANGUL SYLLABLE KHIEUKH-EO-RIEULMIEUM
-0xB095	0xCEEF	# HANGUL SYLLABLE KHIEUKH-EO-RIEULPIEUP
-0xB096	0xCEF0	# HANGUL SYLLABLE KHIEUKH-EO-RIEULSIOS
-0xB097	0xCEF1	# HANGUL SYLLABLE KHIEUKH-EO-RIEULTHIEUTH
-0xB098	0xCEF2	# HANGUL SYLLABLE KHIEUKH-EO-RIEULPHIEUPH
-0xB099	0xCEF3	# HANGUL SYLLABLE KHIEUKH-EO-RIEULHIEUH
-0xB09A	0xCEF6	# HANGUL SYLLABLE KHIEUKH-EO-PIEUPSIOS
-0xB09B	0xCEFA	# HANGUL SYLLABLE KHIEUKH-EO-CIEUC
-0xB09C	0xCEFB	# HANGUL SYLLABLE KHIEUKH-EO-CHIEUCH
-0xB09D	0xCEFC	# HANGUL SYLLABLE KHIEUKH-EO-KHIEUKH
-0xB09E	0xCEFD	# HANGUL SYLLABLE KHIEUKH-EO-THIEUTH
-0xB09F	0xCEFE	# HANGUL SYLLABLE KHIEUKH-EO-PHIEUPH
-0xB0A0	0xCEFF	# HANGUL SYLLABLE KHIEUKH-EO-HIEUH
-0xB0A1	0xAC00	# HANGUL SYLLABLE KIYEOK-A
-0xB0A2	0xAC01	# HANGUL SYLLABLE KIYEOK-A-KIYEOK
-0xB0A3	0xAC04	# HANGUL SYLLABLE KIYEOK-A-NIEUN
-0xB0A4	0xAC07	# HANGUL SYLLABLE KIYEOK-A-TIKEUT
-0xB0A5	0xAC08	# HANGUL SYLLABLE KIYEOK-A-RIEUL
-0xB0A6	0xAC09	# HANGUL SYLLABLE KIYEOK-A-RIEULKIYEOK
-0xB0A7	0xAC0A	# HANGUL SYLLABLE KIYEOK-A-RIEULMIEUM
-0xB0A8	0xAC10	# HANGUL SYLLABLE KIYEOK-A-MIEUM
-0xB0A9	0xAC11	# HANGUL SYLLABLE KIYEOK-A-PIEUP
-0xB0AA	0xAC12	# HANGUL SYLLABLE KIYEOK-A-PIEUPSIOS
-0xB0AB	0xAC13	# HANGUL SYLLABLE KIYEOK-A-SIOS
-0xB0AC	0xAC14	# HANGUL SYLLABLE KIYEOK-A-SSANGSIOS
-0xB0AD	0xAC15	# HANGUL SYLLABLE KIYEOK-A-IEUNG
-0xB0AE	0xAC16	# HANGUL SYLLABLE KIYEOK-A-CIEUC
-0xB0AF	0xAC17	# HANGUL SYLLABLE KIYEOK-A-CHIEUCH
-0xB0B0	0xAC19	# HANGUL SYLLABLE KIYEOK-A-THIEUTH
-0xB0B1	0xAC1A	# HANGUL SYLLABLE KIYEOK-A-PHIEUPH
-0xB0B2	0xAC1B	# HANGUL SYLLABLE KIYEOK-A-HIEUH
-0xB0B3	0xAC1C	# HANGUL SYLLABLE KIYEOK-AE
-0xB0B4	0xAC1D	# HANGUL SYLLABLE KIYEOK-AE-KIYEOK
-0xB0B5	0xAC20	# HANGUL SYLLABLE KIYEOK-AE-NIEUN
-0xB0B6	0xAC24	# HANGUL SYLLABLE KIYEOK-AE-RIEUL
-0xB0B7	0xAC2C	# HANGUL SYLLABLE KIYEOK-AE-MIEUM
-0xB0B8	0xAC2D	# HANGUL SYLLABLE KIYEOK-AE-PIEUP
-0xB0B9	0xAC2F	# HANGUL SYLLABLE KIYEOK-AE-SIOS
-0xB0BA	0xAC30	# HANGUL SYLLABLE KIYEOK-AE-SSANGSIOS
-0xB0BB	0xAC31	# HANGUL SYLLABLE KIYEOK-AE-IEUNG
-0xB0BC	0xAC38	# HANGUL SYLLABLE KIYEOK-YA
-0xB0BD	0xAC39	# HANGUL SYLLABLE KIYEOK-YA-KIYEOK
-0xB0BE	0xAC3C	# HANGUL SYLLABLE KIYEOK-YA-NIEUN
-0xB0BF	0xAC40	# HANGUL SYLLABLE KIYEOK-YA-RIEUL
-0xB0C0	0xAC4B	# HANGUL SYLLABLE KIYEOK-YA-SIOS
-0xB0C1	0xAC4D	# HANGUL SYLLABLE KIYEOK-YA-IEUNG
-0xB0C2	0xAC54	# HANGUL SYLLABLE KIYEOK-YAE
-0xB0C3	0xAC58	# HANGUL SYLLABLE KIYEOK-YAE-NIEUN
-0xB0C4	0xAC5C	# HANGUL SYLLABLE KIYEOK-YAE-RIEUL
-0xB0C5	0xAC70	# HANGUL SYLLABLE KIYEOK-EO
-0xB0C6	0xAC71	# HANGUL SYLLABLE KIYEOK-EO-KIYEOK
-0xB0C7	0xAC74	# HANGUL SYLLABLE KIYEOK-EO-NIEUN
-0xB0C8	0xAC77	# HANGUL SYLLABLE KIYEOK-EO-TIKEUT
-0xB0C9	0xAC78	# HANGUL SYLLABLE KIYEOK-EO-RIEUL
-0xB0CA	0xAC7A	# HANGUL SYLLABLE KIYEOK-EO-RIEULMIEUM
-0xB0CB	0xAC80	# HANGUL SYLLABLE KIYEOK-EO-MIEUM
-0xB0CC	0xAC81	# HANGUL SYLLABLE KIYEOK-EO-PIEUP
-0xB0CD	0xAC83	# HANGUL SYLLABLE KIYEOK-EO-SIOS
-0xB0CE	0xAC84	# HANGUL SYLLABLE KIYEOK-EO-SSANGSIOS
-0xB0CF	0xAC85	# HANGUL SYLLABLE KIYEOK-EO-IEUNG
-0xB0D0	0xAC86	# HANGUL SYLLABLE KIYEOK-EO-CIEUC
-0xB0D1	0xAC89	# HANGUL SYLLABLE KIYEOK-EO-THIEUTH
-0xB0D2	0xAC8A	# HANGUL SYLLABLE KIYEOK-EO-PHIEUPH
-0xB0D3	0xAC8B	# HANGUL SYLLABLE KIYEOK-EO-HIEUH
-0xB0D4	0xAC8C	# HANGUL SYLLABLE KIYEOK-E
-0xB0D5	0xAC90	# HANGUL SYLLABLE KIYEOK-E-NIEUN
-0xB0D6	0xAC94	# HANGUL SYLLABLE KIYEOK-E-RIEUL
-0xB0D7	0xAC9C	# HANGUL SYLLABLE KIYEOK-E-MIEUM
-0xB0D8	0xAC9D	# HANGUL SYLLABLE KIYEOK-E-PIEUP
-0xB0D9	0xAC9F	# HANGUL SYLLABLE KIYEOK-E-SIOS
-0xB0DA	0xACA0	# HANGUL SYLLABLE KIYEOK-E-SSANGSIOS
-0xB0DB	0xACA1	# HANGUL SYLLABLE KIYEOK-E-IEUNG
-0xB0DC	0xACA8	# HANGUL SYLLABLE KIYEOK-YEO
-0xB0DD	0xACA9	# HANGUL SYLLABLE KIYEOK-YEO-KIYEOK
-0xB0DE	0xACAA	# HANGUL SYLLABLE KIYEOK-YEO-SSANGKIYEOK
-0xB0DF	0xACAC	# HANGUL SYLLABLE KIYEOK-YEO-NIEUN
-0xB0E0	0xACAF	# HANGUL SYLLABLE KIYEOK-YEO-TIKEUT
-0xB0E1	0xACB0	# HANGUL SYLLABLE KIYEOK-YEO-RIEUL
-0xB0E2	0xACB8	# HANGUL SYLLABLE KIYEOK-YEO-MIEUM
-0xB0E3	0xACB9	# HANGUL SYLLABLE KIYEOK-YEO-PIEUP
-0xB0E4	0xACBB	# HANGUL SYLLABLE KIYEOK-YEO-SIOS
-0xB0E5	0xACBC	# HANGUL SYLLABLE KIYEOK-YEO-SSANGSIOS
-0xB0E6	0xACBD	# HANGUL SYLLABLE KIYEOK-YEO-IEUNG
-0xB0E7	0xACC1	# HANGUL SYLLABLE KIYEOK-YEO-THIEUTH
-0xB0E8	0xACC4	# HANGUL SYLLABLE KIYEOK-YE
-0xB0E9	0xACC8	# HANGUL SYLLABLE KIYEOK-YE-NIEUN
-0xB0EA	0xACCC	# HANGUL SYLLABLE KIYEOK-YE-RIEUL
-0xB0EB	0xACD5	# HANGUL SYLLABLE KIYEOK-YE-PIEUP
-0xB0EC	0xACD7	# HANGUL SYLLABLE KIYEOK-YE-SIOS
-0xB0ED	0xACE0	# HANGUL SYLLABLE KIYEOK-O
-0xB0EE	0xACE1	# HANGUL SYLLABLE KIYEOK-O-KIYEOK
-0xB0EF	0xACE4	# HANGUL SYLLABLE KIYEOK-O-NIEUN
-0xB0F0	0xACE7	# HANGUL SYLLABLE KIYEOK-O-TIKEUT
-0xB0F1	0xACE8	# HANGUL SYLLABLE KIYEOK-O-RIEUL
-0xB0F2	0xACEA	# HANGUL SYLLABLE KIYEOK-O-RIEULMIEUM
-0xB0F3	0xACEC	# HANGUL SYLLABLE KIYEOK-O-RIEULSIOS
-0xB0F4	0xACEF	# HANGUL SYLLABLE KIYEOK-O-RIEULHIEUH
-0xB0F5	0xACF0	# HANGUL SYLLABLE KIYEOK-O-MIEUM
-0xB0F6	0xACF1	# HANGUL SYLLABLE KIYEOK-O-PIEUP
-0xB0F7	0xACF3	# HANGUL SYLLABLE KIYEOK-O-SIOS
-0xB0F8	0xACF5	# HANGUL SYLLABLE KIYEOK-O-IEUNG
-0xB0F9	0xACF6	# HANGUL SYLLABLE KIYEOK-O-CIEUC
-0xB0FA	0xACFC	# HANGUL SYLLABLE KIYEOK-WA
-0xB0FB	0xACFD	# HANGUL SYLLABLE KIYEOK-WA-KIYEOK
-0xB0FC	0xAD00	# HANGUL SYLLABLE KIYEOK-WA-NIEUN
-0xB0FD	0xAD04	# HANGUL SYLLABLE KIYEOK-WA-RIEUL
-0xB0FE	0xAD06	# HANGUL SYLLABLE KIYEOK-WA-RIEULMIEUM
-0xB141	0xCF02	# HANGUL SYLLABLE KHIEUKH-E-SSANGKIYEOK
-0xB142	0xCF03	# HANGUL SYLLABLE KHIEUKH-E-KIYEOKSIOS
-0xB143	0xCF05	# HANGUL SYLLABLE KHIEUKH-E-NIEUNCIEUC
-0xB144	0xCF06	# HANGUL SYLLABLE KHIEUKH-E-NIEUNHIEUH
-0xB145	0xCF07	# HANGUL SYLLABLE KHIEUKH-E-TIKEUT
-0xB146	0xCF09	# HANGUL SYLLABLE KHIEUKH-E-RIEULKIYEOK
-0xB147	0xCF0A	# HANGUL SYLLABLE KHIEUKH-E-RIEULMIEUM
-0xB148	0xCF0B	# HANGUL SYLLABLE KHIEUKH-E-RIEULPIEUP
-0xB149	0xCF0C	# HANGUL SYLLABLE KHIEUKH-E-RIEULSIOS
-0xB14A	0xCF0D	# HANGUL SYLLABLE KHIEUKH-E-RIEULTHIEUTH
-0xB14B	0xCF0E	# HANGUL SYLLABLE KHIEUKH-E-RIEULPHIEUPH
-0xB14C	0xCF0F	# HANGUL SYLLABLE KHIEUKH-E-RIEULHIEUH
-0xB14D	0xCF12	# HANGUL SYLLABLE KHIEUKH-E-PIEUPSIOS
-0xB14E	0xCF14	# HANGUL SYLLABLE KHIEUKH-E-SSANGSIOS
-0xB14F	0xCF16	# HANGUL SYLLABLE KHIEUKH-E-CIEUC
-0xB150	0xCF17	# HANGUL SYLLABLE KHIEUKH-E-CHIEUCH
-0xB151	0xCF18	# HANGUL SYLLABLE KHIEUKH-E-KHIEUKH
-0xB152	0xCF19	# HANGUL SYLLABLE KHIEUKH-E-THIEUTH
-0xB153	0xCF1A	# HANGUL SYLLABLE KHIEUKH-E-PHIEUPH
-0xB154	0xCF1B	# HANGUL SYLLABLE KHIEUKH-E-HIEUH
-0xB155	0xCF1D	# HANGUL SYLLABLE KHIEUKH-YEO-KIYEOK
-0xB156	0xCF1E	# HANGUL SYLLABLE KHIEUKH-YEO-SSANGKIYEOK
-0xB157	0xCF1F	# HANGUL SYLLABLE KHIEUKH-YEO-KIYEOKSIOS
-0xB158	0xCF21	# HANGUL SYLLABLE KHIEUKH-YEO-NIEUNCIEUC
-0xB159	0xCF22	# HANGUL SYLLABLE KHIEUKH-YEO-NIEUNHIEUH
-0xB15A	0xCF23	# HANGUL SYLLABLE KHIEUKH-YEO-TIKEUT
-0xB161	0xCF25	# HANGUL SYLLABLE KHIEUKH-YEO-RIEULKIYEOK
-0xB162	0xCF26	# HANGUL SYLLABLE KHIEUKH-YEO-RIEULMIEUM
-0xB163	0xCF27	# HANGUL SYLLABLE KHIEUKH-YEO-RIEULPIEUP
-0xB164	0xCF28	# HANGUL SYLLABLE KHIEUKH-YEO-RIEULSIOS
-0xB165	0xCF29	# HANGUL SYLLABLE KHIEUKH-YEO-RIEULTHIEUTH
-0xB166	0xCF2A	# HANGUL SYLLABLE KHIEUKH-YEO-RIEULPHIEUPH
-0xB167	0xCF2B	# HANGUL SYLLABLE KHIEUKH-YEO-RIEULHIEUH
-0xB168	0xCF2E	# HANGUL SYLLABLE KHIEUKH-YEO-PIEUPSIOS
-0xB169	0xCF32	# HANGUL SYLLABLE KHIEUKH-YEO-CIEUC
-0xB16A	0xCF33	# HANGUL SYLLABLE KHIEUKH-YEO-CHIEUCH
-0xB16B	0xCF34	# HANGUL SYLLABLE KHIEUKH-YEO-KHIEUKH
-0xB16C	0xCF35	# HANGUL SYLLABLE KHIEUKH-YEO-THIEUTH
-0xB16D	0xCF36	# HANGUL SYLLABLE KHIEUKH-YEO-PHIEUPH
-0xB16E	0xCF37	# HANGUL SYLLABLE KHIEUKH-YEO-HIEUH
-0xB16F	0xCF39	# HANGUL SYLLABLE KHIEUKH-YE-KIYEOK
-0xB170	0xCF3A	# HANGUL SYLLABLE KHIEUKH-YE-SSANGKIYEOK
-0xB171	0xCF3B	# HANGUL SYLLABLE KHIEUKH-YE-KIYEOKSIOS
-0xB172	0xCF3C	# HANGUL SYLLABLE KHIEUKH-YE-NIEUN
-0xB173	0xCF3D	# HANGUL SYLLABLE KHIEUKH-YE-NIEUNCIEUC
-0xB174	0xCF3E	# HANGUL SYLLABLE KHIEUKH-YE-NIEUNHIEUH
-0xB175	0xCF3F	# HANGUL SYLLABLE KHIEUKH-YE-TIKEUT
-0xB176	0xCF40	# HANGUL SYLLABLE KHIEUKH-YE-RIEUL
-0xB177	0xCF41	# HANGUL SYLLABLE KHIEUKH-YE-RIEULKIYEOK
-0xB178	0xCF42	# HANGUL SYLLABLE KHIEUKH-YE-RIEULMIEUM
-0xB179	0xCF43	# HANGUL SYLLABLE KHIEUKH-YE-RIEULPIEUP
-0xB17A	0xCF44	# HANGUL SYLLABLE KHIEUKH-YE-RIEULSIOS
-0xB181	0xCF45	# HANGUL SYLLABLE KHIEUKH-YE-RIEULTHIEUTH
-0xB182	0xCF46	# HANGUL SYLLABLE KHIEUKH-YE-RIEULPHIEUPH
-0xB183	0xCF47	# HANGUL SYLLABLE KHIEUKH-YE-RIEULHIEUH
-0xB184	0xCF48	# HANGUL SYLLABLE KHIEUKH-YE-MIEUM
-0xB185	0xCF49	# HANGUL SYLLABLE KHIEUKH-YE-PIEUP
-0xB186	0xCF4A	# HANGUL SYLLABLE KHIEUKH-YE-PIEUPSIOS
-0xB187	0xCF4B	# HANGUL SYLLABLE KHIEUKH-YE-SIOS
-0xB188	0xCF4C	# HANGUL SYLLABLE KHIEUKH-YE-SSANGSIOS
-0xB189	0xCF4D	# HANGUL SYLLABLE KHIEUKH-YE-IEUNG
-0xB18A	0xCF4E	# HANGUL SYLLABLE KHIEUKH-YE-CIEUC
-0xB18B	0xCF4F	# HANGUL SYLLABLE KHIEUKH-YE-CHIEUCH
-0xB18C	0xCF50	# HANGUL SYLLABLE KHIEUKH-YE-KHIEUKH
-0xB18D	0xCF51	# HANGUL SYLLABLE KHIEUKH-YE-THIEUTH
-0xB18E	0xCF52	# HANGUL SYLLABLE KHIEUKH-YE-PHIEUPH
-0xB18F	0xCF53	# HANGUL SYLLABLE KHIEUKH-YE-HIEUH
-0xB190	0xCF56	# HANGUL SYLLABLE KHIEUKH-O-SSANGKIYEOK
-0xB191	0xCF57	# HANGUL SYLLABLE KHIEUKH-O-KIYEOKSIOS
-0xB192	0xCF59	# HANGUL SYLLABLE KHIEUKH-O-NIEUNCIEUC
-0xB193	0xCF5A	# HANGUL SYLLABLE KHIEUKH-O-NIEUNHIEUH
-0xB194	0xCF5B	# HANGUL SYLLABLE KHIEUKH-O-TIKEUT
-0xB195	0xCF5D	# HANGUL SYLLABLE KHIEUKH-O-RIEULKIYEOK
-0xB196	0xCF5E	# HANGUL SYLLABLE KHIEUKH-O-RIEULMIEUM
-0xB197	0xCF5F	# HANGUL SYLLABLE KHIEUKH-O-RIEULPIEUP
-0xB198	0xCF60	# HANGUL SYLLABLE KHIEUKH-O-RIEULSIOS
-0xB199	0xCF61	# HANGUL SYLLABLE KHIEUKH-O-RIEULTHIEUTH
-0xB19A	0xCF62	# HANGUL SYLLABLE KHIEUKH-O-RIEULPHIEUPH
-0xB19B	0xCF63	# HANGUL SYLLABLE KHIEUKH-O-RIEULHIEUH
-0xB19C	0xCF66	# HANGUL SYLLABLE KHIEUKH-O-PIEUPSIOS
-0xB19D	0xCF68	# HANGUL SYLLABLE KHIEUKH-O-SSANGSIOS
-0xB19E	0xCF6A	# HANGUL SYLLABLE KHIEUKH-O-CIEUC
-0xB19F	0xCF6B	# HANGUL SYLLABLE KHIEUKH-O-CHIEUCH
-0xB1A0	0xCF6C	# HANGUL SYLLABLE KHIEUKH-O-KHIEUKH
-0xB1A1	0xAD0C	# HANGUL SYLLABLE KIYEOK-WA-MIEUM
-0xB1A2	0xAD0D	# HANGUL SYLLABLE KIYEOK-WA-PIEUP
-0xB1A3	0xAD0F	# HANGUL SYLLABLE KIYEOK-WA-SIOS
-0xB1A4	0xAD11	# HANGUL SYLLABLE KIYEOK-WA-IEUNG
-0xB1A5	0xAD18	# HANGUL SYLLABLE KIYEOK-WAE
-0xB1A6	0xAD1C	# HANGUL SYLLABLE KIYEOK-WAE-NIEUN
-0xB1A7	0xAD20	# HANGUL SYLLABLE KIYEOK-WAE-RIEUL
-0xB1A8	0xAD29	# HANGUL SYLLABLE KIYEOK-WAE-PIEUP
-0xB1A9	0xAD2C	# HANGUL SYLLABLE KIYEOK-WAE-SSANGSIOS
-0xB1AA	0xAD2D	# HANGUL SYLLABLE KIYEOK-WAE-IEUNG
-0xB1AB	0xAD34	# HANGUL SYLLABLE KIYEOK-OE
-0xB1AC	0xAD35	# HANGUL SYLLABLE KIYEOK-OE-KIYEOK
-0xB1AD	0xAD38	# HANGUL SYLLABLE KIYEOK-OE-NIEUN
-0xB1AE	0xAD3C	# HANGUL SYLLABLE KIYEOK-OE-RIEUL
-0xB1AF	0xAD44	# HANGUL SYLLABLE KIYEOK-OE-MIEUM
-0xB1B0	0xAD45	# HANGUL SYLLABLE KIYEOK-OE-PIEUP
-0xB1B1	0xAD47	# HANGUL SYLLABLE KIYEOK-OE-SIOS
-0xB1B2	0xAD49	# HANGUL SYLLABLE KIYEOK-OE-IEUNG
-0xB1B3	0xAD50	# HANGUL SYLLABLE KIYEOK-YO
-0xB1B4	0xAD54	# HANGUL SYLLABLE KIYEOK-YO-NIEUN
-0xB1B5	0xAD58	# HANGUL SYLLABLE KIYEOK-YO-RIEUL
-0xB1B6	0xAD61	# HANGUL SYLLABLE KIYEOK-YO-PIEUP
-0xB1B7	0xAD63	# HANGUL SYLLABLE KIYEOK-YO-SIOS
-0xB1B8	0xAD6C	# HANGUL SYLLABLE KIYEOK-U
-0xB1B9	0xAD6D	# HANGUL SYLLABLE KIYEOK-U-KIYEOK
-0xB1BA	0xAD70	# HANGUL SYLLABLE KIYEOK-U-NIEUN
-0xB1BB	0xAD73	# HANGUL SYLLABLE KIYEOK-U-TIKEUT
-0xB1BC	0xAD74	# HANGUL SYLLABLE KIYEOK-U-RIEUL
-0xB1BD	0xAD75	# HANGUL SYLLABLE KIYEOK-U-RIEULKIYEOK
-0xB1BE	0xAD76	# HANGUL SYLLABLE KIYEOK-U-RIEULMIEUM
-0xB1BF	0xAD7B	# HANGUL SYLLABLE KIYEOK-U-RIEULHIEUH
-0xB1C0	0xAD7C	# HANGUL SYLLABLE KIYEOK-U-MIEUM
-0xB1C1	0xAD7D	# HANGUL SYLLABLE KIYEOK-U-PIEUP
-0xB1C2	0xAD7F	# HANGUL SYLLABLE KIYEOK-U-SIOS
-0xB1C3	0xAD81	# HANGUL SYLLABLE KIYEOK-U-IEUNG
-0xB1C4	0xAD82	# HANGUL SYLLABLE KIYEOK-U-CIEUC
-0xB1C5	0xAD88	# HANGUL SYLLABLE KIYEOK-WEO
-0xB1C6	0xAD89	# HANGUL SYLLABLE KIYEOK-WEO-KIYEOK
-0xB1C7	0xAD8C	# HANGUL SYLLABLE KIYEOK-WEO-NIEUN
-0xB1C8	0xAD90	# HANGUL SYLLABLE KIYEOK-WEO-RIEUL
-0xB1C9	0xAD9C	# HANGUL SYLLABLE KIYEOK-WEO-SSANGSIOS
-0xB1CA	0xAD9D	# HANGUL SYLLABLE KIYEOK-WEO-IEUNG
-0xB1CB	0xADA4	# HANGUL SYLLABLE KIYEOK-WE
-0xB1CC	0xADB7	# HANGUL SYLLABLE KIYEOK-WE-SIOS
-0xB1CD	0xADC0	# HANGUL SYLLABLE KIYEOK-WI
-0xB1CE	0xADC1	# HANGUL SYLLABLE KIYEOK-WI-KIYEOK
-0xB1CF	0xADC4	# HANGUL SYLLABLE KIYEOK-WI-NIEUN
-0xB1D0	0xADC8	# HANGUL SYLLABLE KIYEOK-WI-RIEUL
-0xB1D1	0xADD0	# HANGUL SYLLABLE KIYEOK-WI-MIEUM
-0xB1D2	0xADD1	# HANGUL SYLLABLE KIYEOK-WI-PIEUP
-0xB1D3	0xADD3	# HANGUL SYLLABLE KIYEOK-WI-SIOS
-0xB1D4	0xADDC	# HANGUL SYLLABLE KIYEOK-YU
-0xB1D5	0xADE0	# HANGUL SYLLABLE KIYEOK-YU-NIEUN
-0xB1D6	0xADE4	# HANGUL SYLLABLE KIYEOK-YU-RIEUL
-0xB1D7	0xADF8	# HANGUL SYLLABLE KIYEOK-EU
-0xB1D8	0xADF9	# HANGUL SYLLABLE KIYEOK-EU-KIYEOK
-0xB1D9	0xADFC	# HANGUL SYLLABLE KIYEOK-EU-NIEUN
-0xB1DA	0xADFF	# HANGUL SYLLABLE KIYEOK-EU-TIKEUT
-0xB1DB	0xAE00	# HANGUL SYLLABLE KIYEOK-EU-RIEUL
-0xB1DC	0xAE01	# HANGUL SYLLABLE KIYEOK-EU-RIEULKIYEOK
-0xB1DD	0xAE08	# HANGUL SYLLABLE KIYEOK-EU-MIEUM
-0xB1DE	0xAE09	# HANGUL SYLLABLE KIYEOK-EU-PIEUP
-0xB1DF	0xAE0B	# HANGUL SYLLABLE KIYEOK-EU-SIOS
-0xB1E0	0xAE0D	# HANGUL SYLLABLE KIYEOK-EU-IEUNG
-0xB1E1	0xAE14	# HANGUL SYLLABLE KIYEOK-YI
-0xB1E2	0xAE30	# HANGUL SYLLABLE KIYEOK-I
-0xB1E3	0xAE31	# HANGUL SYLLABLE KIYEOK-I-KIYEOK
-0xB1E4	0xAE34	# HANGUL SYLLABLE KIYEOK-I-NIEUN
-0xB1E5	0xAE37	# HANGUL SYLLABLE KIYEOK-I-TIKEUT
-0xB1E6	0xAE38	# HANGUL SYLLABLE KIYEOK-I-RIEUL
-0xB1E7	0xAE3A	# HANGUL SYLLABLE KIYEOK-I-RIEULMIEUM
-0xB1E8	0xAE40	# HANGUL SYLLABLE KIYEOK-I-MIEUM
-0xB1E9	0xAE41	# HANGUL SYLLABLE KIYEOK-I-PIEUP
-0xB1EA	0xAE43	# HANGUL SYLLABLE KIYEOK-I-SIOS
-0xB1EB	0xAE45	# HANGUL SYLLABLE KIYEOK-I-IEUNG
-0xB1EC	0xAE46	# HANGUL SYLLABLE KIYEOK-I-CIEUC
-0xB1ED	0xAE4A	# HANGUL SYLLABLE KIYEOK-I-PHIEUPH
-0xB1EE	0xAE4C	# HANGUL SYLLABLE SSANGKIYEOK-A
-0xB1EF	0xAE4D	# HANGUL SYLLABLE SSANGKIYEOK-A-KIYEOK
-0xB1F0	0xAE4E	# HANGUL SYLLABLE SSANGKIYEOK-A-SSANGKIYEOK
-0xB1F1	0xAE50	# HANGUL SYLLABLE SSANGKIYEOK-A-NIEUN
-0xB1F2	0xAE54	# HANGUL SYLLABLE SSANGKIYEOK-A-RIEUL
-0xB1F3	0xAE56	# HANGUL SYLLABLE SSANGKIYEOK-A-RIEULMIEUM
-0xB1F4	0xAE5C	# HANGUL SYLLABLE SSANGKIYEOK-A-MIEUM
-0xB1F5	0xAE5D	# HANGUL SYLLABLE SSANGKIYEOK-A-PIEUP
-0xB1F6	0xAE5F	# HANGUL SYLLABLE SSANGKIYEOK-A-SIOS
-0xB1F7	0xAE60	# HANGUL SYLLABLE SSANGKIYEOK-A-SSANGSIOS
-0xB1F8	0xAE61	# HANGUL SYLLABLE SSANGKIYEOK-A-IEUNG
-0xB1F9	0xAE65	# HANGUL SYLLABLE SSANGKIYEOK-A-THIEUTH
-0xB1FA	0xAE68	# HANGUL SYLLABLE SSANGKIYEOK-AE
-0xB1FB	0xAE69	# HANGUL SYLLABLE SSANGKIYEOK-AE-KIYEOK
-0xB1FC	0xAE6C	# HANGUL SYLLABLE SSANGKIYEOK-AE-NIEUN
-0xB1FD	0xAE70	# HANGUL SYLLABLE SSANGKIYEOK-AE-RIEUL
-0xB1FE	0xAE78	# HANGUL SYLLABLE SSANGKIYEOK-AE-MIEUM
-0xB241	0xCF6D	# HANGUL SYLLABLE KHIEUKH-O-THIEUTH
-0xB242	0xCF6E	# HANGUL SYLLABLE KHIEUKH-O-PHIEUPH
-0xB243	0xCF6F	# HANGUL SYLLABLE KHIEUKH-O-HIEUH
-0xB244	0xCF72	# HANGUL SYLLABLE KHIEUKH-WA-SSANGKIYEOK
-0xB245	0xCF73	# HANGUL SYLLABLE KHIEUKH-WA-KIYEOKSIOS
-0xB246	0xCF75	# HANGUL SYLLABLE KHIEUKH-WA-NIEUNCIEUC
-0xB247	0xCF76	# HANGUL SYLLABLE KHIEUKH-WA-NIEUNHIEUH
-0xB248	0xCF77	# HANGUL SYLLABLE KHIEUKH-WA-TIKEUT
-0xB249	0xCF79	# HANGUL SYLLABLE KHIEUKH-WA-RIEULKIYEOK
-0xB24A	0xCF7A	# HANGUL SYLLABLE KHIEUKH-WA-RIEULMIEUM
-0xB24B	0xCF7B	# HANGUL SYLLABLE KHIEUKH-WA-RIEULPIEUP
-0xB24C	0xCF7C	# HANGUL SYLLABLE KHIEUKH-WA-RIEULSIOS
-0xB24D	0xCF7D	# HANGUL SYLLABLE KHIEUKH-WA-RIEULTHIEUTH
-0xB24E	0xCF7E	# HANGUL SYLLABLE KHIEUKH-WA-RIEULPHIEUPH
-0xB24F	0xCF7F	# HANGUL SYLLABLE KHIEUKH-WA-RIEULHIEUH
-0xB250	0xCF81	# HANGUL SYLLABLE KHIEUKH-WA-PIEUP
-0xB251	0xCF82	# HANGUL SYLLABLE KHIEUKH-WA-PIEUPSIOS
-0xB252	0xCF83	# HANGUL SYLLABLE KHIEUKH-WA-SIOS
-0xB253	0xCF84	# HANGUL SYLLABLE KHIEUKH-WA-SSANGSIOS
-0xB254	0xCF86	# HANGUL SYLLABLE KHIEUKH-WA-CIEUC
-0xB255	0xCF87	# HANGUL SYLLABLE KHIEUKH-WA-CHIEUCH
-0xB256	0xCF88	# HANGUL SYLLABLE KHIEUKH-WA-KHIEUKH
-0xB257	0xCF89	# HANGUL SYLLABLE KHIEUKH-WA-THIEUTH
-0xB258	0xCF8A	# HANGUL SYLLABLE KHIEUKH-WA-PHIEUPH
-0xB259	0xCF8B	# HANGUL SYLLABLE KHIEUKH-WA-HIEUH
-0xB25A	0xCF8D	# HANGUL SYLLABLE KHIEUKH-WAE-KIYEOK
-0xB261	0xCF8E	# HANGUL SYLLABLE KHIEUKH-WAE-SSANGKIYEOK
-0xB262	0xCF8F	# HANGUL SYLLABLE KHIEUKH-WAE-KIYEOKSIOS
-0xB263	0xCF90	# HANGUL SYLLABLE KHIEUKH-WAE-NIEUN
-0xB264	0xCF91	# HANGUL SYLLABLE KHIEUKH-WAE-NIEUNCIEUC
-0xB265	0xCF92	# HANGUL SYLLABLE KHIEUKH-WAE-NIEUNHIEUH
-0xB266	0xCF93	# HANGUL SYLLABLE KHIEUKH-WAE-TIKEUT
-0xB267	0xCF94	# HANGUL SYLLABLE KHIEUKH-WAE-RIEUL
-0xB268	0xCF95	# HANGUL SYLLABLE KHIEUKH-WAE-RIEULKIYEOK
-0xB269	0xCF96	# HANGUL SYLLABLE KHIEUKH-WAE-RIEULMIEUM
-0xB26A	0xCF97	# HANGUL SYLLABLE KHIEUKH-WAE-RIEULPIEUP
-0xB26B	0xCF98	# HANGUL SYLLABLE KHIEUKH-WAE-RIEULSIOS
-0xB26C	0xCF99	# HANGUL SYLLABLE KHIEUKH-WAE-RIEULTHIEUTH
-0xB26D	0xCF9A	# HANGUL SYLLABLE KHIEUKH-WAE-RIEULPHIEUPH
-0xB26E	0xCF9B	# HANGUL SYLLABLE KHIEUKH-WAE-RIEULHIEUH
-0xB26F	0xCF9C	# HANGUL SYLLABLE KHIEUKH-WAE-MIEUM
-0xB270	0xCF9D	# HANGUL SYLLABLE KHIEUKH-WAE-PIEUP
-0xB271	0xCF9E	# HANGUL SYLLABLE KHIEUKH-WAE-PIEUPSIOS
-0xB272	0xCF9F	# HANGUL SYLLABLE KHIEUKH-WAE-SIOS
-0xB273	0xCFA0	# HANGUL SYLLABLE KHIEUKH-WAE-SSANGSIOS
-0xB274	0xCFA2	# HANGUL SYLLABLE KHIEUKH-WAE-CIEUC
-0xB275	0xCFA3	# HANGUL SYLLABLE KHIEUKH-WAE-CHIEUCH
-0xB276	0xCFA4	# HANGUL SYLLABLE KHIEUKH-WAE-KHIEUKH
-0xB277	0xCFA5	# HANGUL SYLLABLE KHIEUKH-WAE-THIEUTH
-0xB278	0xCFA6	# HANGUL SYLLABLE KHIEUKH-WAE-PHIEUPH
-0xB279	0xCFA7	# HANGUL SYLLABLE KHIEUKH-WAE-HIEUH
-0xB27A	0xCFA9	# HANGUL SYLLABLE KHIEUKH-OE-KIYEOK
-0xB281	0xCFAA	# HANGUL SYLLABLE KHIEUKH-OE-SSANGKIYEOK
-0xB282	0xCFAB	# HANGUL SYLLABLE KHIEUKH-OE-KIYEOKSIOS
-0xB283	0xCFAC	# HANGUL SYLLABLE KHIEUKH-OE-NIEUN
-0xB284	0xCFAD	# HANGUL SYLLABLE KHIEUKH-OE-NIEUNCIEUC
-0xB285	0xCFAE	# HANGUL SYLLABLE KHIEUKH-OE-NIEUNHIEUH
-0xB286	0xCFAF	# HANGUL SYLLABLE KHIEUKH-OE-TIKEUT
-0xB287	0xCFB1	# HANGUL SYLLABLE KHIEUKH-OE-RIEULKIYEOK
-0xB288	0xCFB2	# HANGUL SYLLABLE KHIEUKH-OE-RIEULMIEUM
-0xB289	0xCFB3	# HANGUL SYLLABLE KHIEUKH-OE-RIEULPIEUP
-0xB28A	0xCFB4	# HANGUL SYLLABLE KHIEUKH-OE-RIEULSIOS
-0xB28B	0xCFB5	# HANGUL SYLLABLE KHIEUKH-OE-RIEULTHIEUTH
-0xB28C	0xCFB6	# HANGUL SYLLABLE KHIEUKH-OE-RIEULPHIEUPH
-0xB28D	0xCFB7	# HANGUL SYLLABLE KHIEUKH-OE-RIEULHIEUH
-0xB28E	0xCFB8	# HANGUL SYLLABLE KHIEUKH-OE-MIEUM
-0xB28F	0xCFB9	# HANGUL SYLLABLE KHIEUKH-OE-PIEUP
-0xB290	0xCFBA	# HANGUL SYLLABLE KHIEUKH-OE-PIEUPSIOS
-0xB291	0xCFBB	# HANGUL SYLLABLE KHIEUKH-OE-SIOS
-0xB292	0xCFBC	# HANGUL SYLLABLE KHIEUKH-OE-SSANGSIOS
-0xB293	0xCFBD	# HANGUL SYLLABLE KHIEUKH-OE-IEUNG
-0xB294	0xCFBE	# HANGUL SYLLABLE KHIEUKH-OE-CIEUC
-0xB295	0xCFBF	# HANGUL SYLLABLE KHIEUKH-OE-CHIEUCH
-0xB296	0xCFC0	# HANGUL SYLLABLE KHIEUKH-OE-KHIEUKH
-0xB297	0xCFC1	# HANGUL SYLLABLE KHIEUKH-OE-THIEUTH
-0xB298	0xCFC2	# HANGUL SYLLABLE KHIEUKH-OE-PHIEUPH
-0xB299	0xCFC3	# HANGUL SYLLABLE KHIEUKH-OE-HIEUH
-0xB29A	0xCFC5	# HANGUL SYLLABLE KHIEUKH-YO-KIYEOK
-0xB29B	0xCFC6	# HANGUL SYLLABLE KHIEUKH-YO-SSANGKIYEOK
-0xB29C	0xCFC7	# HANGUL SYLLABLE KHIEUKH-YO-KIYEOKSIOS
-0xB29D	0xCFC8	# HANGUL SYLLABLE KHIEUKH-YO-NIEUN
-0xB29E	0xCFC9	# HANGUL SYLLABLE KHIEUKH-YO-NIEUNCIEUC
-0xB29F	0xCFCA	# HANGUL SYLLABLE KHIEUKH-YO-NIEUNHIEUH
-0xB2A0	0xCFCB	# HANGUL SYLLABLE KHIEUKH-YO-TIKEUT
-0xB2A1	0xAE79	# HANGUL SYLLABLE SSANGKIYEOK-AE-PIEUP
-0xB2A2	0xAE7B	# HANGUL SYLLABLE SSANGKIYEOK-AE-SIOS
-0xB2A3	0xAE7C	# HANGUL SYLLABLE SSANGKIYEOK-AE-SSANGSIOS
-0xB2A4	0xAE7D	# HANGUL SYLLABLE SSANGKIYEOK-AE-IEUNG
-0xB2A5	0xAE84	# HANGUL SYLLABLE SSANGKIYEOK-YA
-0xB2A6	0xAE85	# HANGUL SYLLABLE SSANGKIYEOK-YA-KIYEOK
-0xB2A7	0xAE8C	# HANGUL SYLLABLE SSANGKIYEOK-YA-RIEUL
-0xB2A8	0xAEBC	# HANGUL SYLLABLE SSANGKIYEOK-EO
-0xB2A9	0xAEBD	# HANGUL SYLLABLE SSANGKIYEOK-EO-KIYEOK
-0xB2AA	0xAEBE	# HANGUL SYLLABLE SSANGKIYEOK-EO-SSANGKIYEOK
-0xB2AB	0xAEC0	# HANGUL SYLLABLE SSANGKIYEOK-EO-NIEUN
-0xB2AC	0xAEC4	# HANGUL SYLLABLE SSANGKIYEOK-EO-RIEUL
-0xB2AD	0xAECC	# HANGUL SYLLABLE SSANGKIYEOK-EO-MIEUM
-0xB2AE	0xAECD	# HANGUL SYLLABLE SSANGKIYEOK-EO-PIEUP
-0xB2AF	0xAECF	# HANGUL SYLLABLE SSANGKIYEOK-EO-SIOS
-0xB2B0	0xAED0	# HANGUL SYLLABLE SSANGKIYEOK-EO-SSANGSIOS
-0xB2B1	0xAED1	# HANGUL SYLLABLE SSANGKIYEOK-EO-IEUNG
-0xB2B2	0xAED8	# HANGUL SYLLABLE SSANGKIYEOK-E
-0xB2B3	0xAED9	# HANGUL SYLLABLE SSANGKIYEOK-E-KIYEOK
-0xB2B4	0xAEDC	# HANGUL SYLLABLE SSANGKIYEOK-E-NIEUN
-0xB2B5	0xAEE8	# HANGUL SYLLABLE SSANGKIYEOK-E-MIEUM
-0xB2B6	0xAEEB	# HANGUL SYLLABLE SSANGKIYEOK-E-SIOS
-0xB2B7	0xAEED	# HANGUL SYLLABLE SSANGKIYEOK-E-IEUNG
-0xB2B8	0xAEF4	# HANGUL SYLLABLE SSANGKIYEOK-YEO
-0xB2B9	0xAEF8	# HANGUL SYLLABLE SSANGKIYEOK-YEO-NIEUN
-0xB2BA	0xAEFC	# HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEUL
-0xB2BB	0xAF07	# HANGUL SYLLABLE SSANGKIYEOK-YEO-SIOS
-0xB2BC	0xAF08	# HANGUL SYLLABLE SSANGKIYEOK-YEO-SSANGSIOS
-0xB2BD	0xAF0D	# HANGUL SYLLABLE SSANGKIYEOK-YEO-THIEUTH
-0xB2BE	0xAF10	# HANGUL SYLLABLE SSANGKIYEOK-YE
-0xB2BF	0xAF2C	# HANGUL SYLLABLE SSANGKIYEOK-O
-0xB2C0	0xAF2D	# HANGUL SYLLABLE SSANGKIYEOK-O-KIYEOK
-0xB2C1	0xAF30	# HANGUL SYLLABLE SSANGKIYEOK-O-NIEUN
-0xB2C2	0xAF32	# HANGUL SYLLABLE SSANGKIYEOK-O-NIEUNHIEUH
-0xB2C3	0xAF34	# HANGUL SYLLABLE SSANGKIYEOK-O-RIEUL
-0xB2C4	0xAF3C	# HANGUL SYLLABLE SSANGKIYEOK-O-MIEUM
-0xB2C5	0xAF3D	# HANGUL SYLLABLE SSANGKIYEOK-O-PIEUP
-0xB2C6	0xAF3F	# HANGUL SYLLABLE SSANGKIYEOK-O-SIOS
-0xB2C7	0xAF41	# HANGUL SYLLABLE SSANGKIYEOK-O-IEUNG
-0xB2C8	0xAF42	# HANGUL SYLLABLE SSANGKIYEOK-O-CIEUC
-0xB2C9	0xAF43	# HANGUL SYLLABLE SSANGKIYEOK-O-CHIEUCH
-0xB2CA	0xAF48	# HANGUL SYLLABLE SSANGKIYEOK-WA
-0xB2CB	0xAF49	# HANGUL SYLLABLE SSANGKIYEOK-WA-KIYEOK
-0xB2CC	0xAF50	# HANGUL SYLLABLE SSANGKIYEOK-WA-RIEUL
-0xB2CD	0xAF5C	# HANGUL SYLLABLE SSANGKIYEOK-WA-SSANGSIOS
-0xB2CE	0xAF5D	# HANGUL SYLLABLE SSANGKIYEOK-WA-IEUNG
-0xB2CF	0xAF64	# HANGUL SYLLABLE SSANGKIYEOK-WAE
-0xB2D0	0xAF65	# HANGUL SYLLABLE SSANGKIYEOK-WAE-KIYEOK
-0xB2D1	0xAF79	# HANGUL SYLLABLE SSANGKIYEOK-WAE-IEUNG
-0xB2D2	0xAF80	# HANGUL SYLLABLE SSANGKIYEOK-OE
-0xB2D3	0xAF84	# HANGUL SYLLABLE SSANGKIYEOK-OE-NIEUN
-0xB2D4	0xAF88	# HANGUL SYLLABLE SSANGKIYEOK-OE-RIEUL
-0xB2D5	0xAF90	# HANGUL SYLLABLE SSANGKIYEOK-OE-MIEUM
-0xB2D6	0xAF91	# HANGUL SYLLABLE SSANGKIYEOK-OE-PIEUP
-0xB2D7	0xAF95	# HANGUL SYLLABLE SSANGKIYEOK-OE-IEUNG
-0xB2D8	0xAF9C	# HANGUL SYLLABLE SSANGKIYEOK-YO
-0xB2D9	0xAFB8	# HANGUL SYLLABLE SSANGKIYEOK-U
-0xB2DA	0xAFB9	# HANGUL SYLLABLE SSANGKIYEOK-U-KIYEOK
-0xB2DB	0xAFBC	# HANGUL SYLLABLE SSANGKIYEOK-U-NIEUN
-0xB2DC	0xAFC0	# HANGUL SYLLABLE SSANGKIYEOK-U-RIEUL
-0xB2DD	0xAFC7	# HANGUL SYLLABLE SSANGKIYEOK-U-RIEULHIEUH
-0xB2DE	0xAFC8	# HANGUL SYLLABLE SSANGKIYEOK-U-MIEUM
-0xB2DF	0xAFC9	# HANGUL SYLLABLE SSANGKIYEOK-U-PIEUP
-0xB2E0	0xAFCB	# HANGUL SYLLABLE SSANGKIYEOK-U-SIOS
-0xB2E1	0xAFCD	# HANGUL SYLLABLE SSANGKIYEOK-U-IEUNG
-0xB2E2	0xAFCE	# HANGUL SYLLABLE SSANGKIYEOK-U-CIEUC
-0xB2E3	0xAFD4	# HANGUL SYLLABLE SSANGKIYEOK-WEO
-0xB2E4	0xAFDC	# HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEUL
-0xB2E5	0xAFE8	# HANGUL SYLLABLE SSANGKIYEOK-WEO-SSANGSIOS
-0xB2E6	0xAFE9	# HANGUL SYLLABLE SSANGKIYEOK-WEO-IEUNG
-0xB2E7	0xAFF0	# HANGUL SYLLABLE SSANGKIYEOK-WE
-0xB2E8	0xAFF1	# HANGUL SYLLABLE SSANGKIYEOK-WE-KIYEOK
-0xB2E9	0xAFF4	# HANGUL SYLLABLE SSANGKIYEOK-WE-NIEUN
-0xB2EA	0xAFF8	# HANGUL SYLLABLE SSANGKIYEOK-WE-RIEUL
-0xB2EB	0xB000	# HANGUL SYLLABLE SSANGKIYEOK-WE-MIEUM
-0xB2EC	0xB001	# HANGUL SYLLABLE SSANGKIYEOK-WE-PIEUP
-0xB2ED	0xB004	# HANGUL SYLLABLE SSANGKIYEOK-WE-SSANGSIOS
-0xB2EE	0xB00C	# HANGUL SYLLABLE SSANGKIYEOK-WI
-0xB2EF	0xB010	# HANGUL SYLLABLE SSANGKIYEOK-WI-NIEUN
-0xB2F0	0xB014	# HANGUL SYLLABLE SSANGKIYEOK-WI-RIEUL
-0xB2F1	0xB01C	# HANGUL SYLLABLE SSANGKIYEOK-WI-MIEUM
-0xB2F2	0xB01D	# HANGUL SYLLABLE SSANGKIYEOK-WI-PIEUP
-0xB2F3	0xB028	# HANGUL SYLLABLE SSANGKIYEOK-YU
-0xB2F4	0xB044	# HANGUL SYLLABLE SSANGKIYEOK-EU
-0xB2F5	0xB045	# HANGUL SYLLABLE SSANGKIYEOK-EU-KIYEOK
-0xB2F6	0xB048	# HANGUL SYLLABLE SSANGKIYEOK-EU-NIEUN
-0xB2F7	0xB04A	# HANGUL SYLLABLE SSANGKIYEOK-EU-NIEUNHIEUH
-0xB2F8	0xB04C	# HANGUL SYLLABLE SSANGKIYEOK-EU-RIEUL
-0xB2F9	0xB04E	# HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULMIEUM
-0xB2FA	0xB053	# HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULHIEUH
-0xB2FB	0xB054	# HANGUL SYLLABLE SSANGKIYEOK-EU-MIEUM
-0xB2FC	0xB055	# HANGUL SYLLABLE SSANGKIYEOK-EU-PIEUP
-0xB2FD	0xB057	# HANGUL SYLLABLE SSANGKIYEOK-EU-SIOS
-0xB2FE	0xB059	# HANGUL SYLLABLE SSANGKIYEOK-EU-IEUNG
-0xB341	0xCFCC	# HANGUL SYLLABLE KHIEUKH-YO-RIEUL
-0xB342	0xCFCD	# HANGUL SYLLABLE KHIEUKH-YO-RIEULKIYEOK
-0xB343	0xCFCE	# HANGUL SYLLABLE KHIEUKH-YO-RIEULMIEUM
-0xB344	0xCFCF	# HANGUL SYLLABLE KHIEUKH-YO-RIEULPIEUP
-0xB345	0xCFD0	# HANGUL SYLLABLE KHIEUKH-YO-RIEULSIOS
-0xB346	0xCFD1	# HANGUL SYLLABLE KHIEUKH-YO-RIEULTHIEUTH
-0xB347	0xCFD2	# HANGUL SYLLABLE KHIEUKH-YO-RIEULPHIEUPH
-0xB348	0xCFD3	# HANGUL SYLLABLE KHIEUKH-YO-RIEULHIEUH
-0xB349	0xCFD4	# HANGUL SYLLABLE KHIEUKH-YO-MIEUM
-0xB34A	0xCFD5	# HANGUL SYLLABLE KHIEUKH-YO-PIEUP
-0xB34B	0xCFD6	# HANGUL SYLLABLE KHIEUKH-YO-PIEUPSIOS
-0xB34C	0xCFD7	# HANGUL SYLLABLE KHIEUKH-YO-SIOS
-0xB34D	0xCFD8	# HANGUL SYLLABLE KHIEUKH-YO-SSANGSIOS
-0xB34E	0xCFD9	# HANGUL SYLLABLE KHIEUKH-YO-IEUNG
-0xB34F	0xCFDA	# HANGUL SYLLABLE KHIEUKH-YO-CIEUC
-0xB350	0xCFDB	# HANGUL SYLLABLE KHIEUKH-YO-CHIEUCH
-0xB351	0xCFDC	# HANGUL SYLLABLE KHIEUKH-YO-KHIEUKH
-0xB352	0xCFDD	# HANGUL SYLLABLE KHIEUKH-YO-THIEUTH
-0xB353	0xCFDE	# HANGUL SYLLABLE KHIEUKH-YO-PHIEUPH
-0xB354	0xCFDF	# HANGUL SYLLABLE KHIEUKH-YO-HIEUH
-0xB355	0xCFE2	# HANGUL SYLLABLE KHIEUKH-U-SSANGKIYEOK
-0xB356	0xCFE3	# HANGUL SYLLABLE KHIEUKH-U-KIYEOKSIOS
-0xB357	0xCFE5	# HANGUL SYLLABLE KHIEUKH-U-NIEUNCIEUC
-0xB358	0xCFE6	# HANGUL SYLLABLE KHIEUKH-U-NIEUNHIEUH
-0xB359	0xCFE7	# HANGUL SYLLABLE KHIEUKH-U-TIKEUT
-0xB35A	0xCFE9	# HANGUL SYLLABLE KHIEUKH-U-RIEULKIYEOK
-0xB361	0xCFEA	# HANGUL SYLLABLE KHIEUKH-U-RIEULMIEUM
-0xB362	0xCFEB	# HANGUL SYLLABLE KHIEUKH-U-RIEULPIEUP
-0xB363	0xCFEC	# HANGUL SYLLABLE KHIEUKH-U-RIEULSIOS
-0xB364	0xCFED	# HANGUL SYLLABLE KHIEUKH-U-RIEULTHIEUTH
-0xB365	0xCFEE	# HANGUL SYLLABLE KHIEUKH-U-RIEULPHIEUPH
-0xB366	0xCFEF	# HANGUL SYLLABLE KHIEUKH-U-RIEULHIEUH
-0xB367	0xCFF2	# HANGUL SYLLABLE KHIEUKH-U-PIEUPSIOS
-0xB368	0xCFF4	# HANGUL SYLLABLE KHIEUKH-U-SSANGSIOS
-0xB369	0xCFF6	# HANGUL SYLLABLE KHIEUKH-U-CIEUC
-0xB36A	0xCFF7	# HANGUL SYLLABLE KHIEUKH-U-CHIEUCH
-0xB36B	0xCFF8	# HANGUL SYLLABLE KHIEUKH-U-KHIEUKH
-0xB36C	0xCFF9	# HANGUL SYLLABLE KHIEUKH-U-THIEUTH
-0xB36D	0xCFFA	# HANGUL SYLLABLE KHIEUKH-U-PHIEUPH
-0xB36E	0xCFFB	# HANGUL SYLLABLE KHIEUKH-U-HIEUH
-0xB36F	0xCFFD	# HANGUL SYLLABLE KHIEUKH-WEO-KIYEOK
-0xB370	0xCFFE	# HANGUL SYLLABLE KHIEUKH-WEO-SSANGKIYEOK
-0xB371	0xCFFF	# HANGUL SYLLABLE KHIEUKH-WEO-KIYEOKSIOS
-0xB372	0xD001	# HANGUL SYLLABLE KHIEUKH-WEO-NIEUNCIEUC
-0xB373	0xD002	# HANGUL SYLLABLE KHIEUKH-WEO-NIEUNHIEUH
-0xB374	0xD003	# HANGUL SYLLABLE KHIEUKH-WEO-TIKEUT
-0xB375	0xD005	# HANGUL SYLLABLE KHIEUKH-WEO-RIEULKIYEOK
-0xB376	0xD006	# HANGUL SYLLABLE KHIEUKH-WEO-RIEULMIEUM
-0xB377	0xD007	# HANGUL SYLLABLE KHIEUKH-WEO-RIEULPIEUP
-0xB378	0xD008	# HANGUL SYLLABLE KHIEUKH-WEO-RIEULSIOS
-0xB379	0xD009	# HANGUL SYLLABLE KHIEUKH-WEO-RIEULTHIEUTH
-0xB37A	0xD00A	# HANGUL SYLLABLE KHIEUKH-WEO-RIEULPHIEUPH
-0xB381	0xD00B	# HANGUL SYLLABLE KHIEUKH-WEO-RIEULHIEUH
-0xB382	0xD00C	# HANGUL SYLLABLE KHIEUKH-WEO-MIEUM
-0xB383	0xD00D	# HANGUL SYLLABLE KHIEUKH-WEO-PIEUP
-0xB384	0xD00E	# HANGUL SYLLABLE KHIEUKH-WEO-PIEUPSIOS
-0xB385	0xD00F	# HANGUL SYLLABLE KHIEUKH-WEO-SIOS
-0xB386	0xD010	# HANGUL SYLLABLE KHIEUKH-WEO-SSANGSIOS
-0xB387	0xD012	# HANGUL SYLLABLE KHIEUKH-WEO-CIEUC
-0xB388	0xD013	# HANGUL SYLLABLE KHIEUKH-WEO-CHIEUCH
-0xB389	0xD014	# HANGUL SYLLABLE KHIEUKH-WEO-KHIEUKH
-0xB38A	0xD015	# HANGUL SYLLABLE KHIEUKH-WEO-THIEUTH
-0xB38B	0xD016	# HANGUL SYLLABLE KHIEUKH-WEO-PHIEUPH
-0xB38C	0xD017	# HANGUL SYLLABLE KHIEUKH-WEO-HIEUH
-0xB38D	0xD019	# HANGUL SYLLABLE KHIEUKH-WE-KIYEOK
-0xB38E	0xD01A	# HANGUL SYLLABLE KHIEUKH-WE-SSANGKIYEOK
-0xB38F	0xD01B	# HANGUL SYLLABLE KHIEUKH-WE-KIYEOKSIOS
-0xB390	0xD01C	# HANGUL SYLLABLE KHIEUKH-WE-NIEUN
-0xB391	0xD01D	# HANGUL SYLLABLE KHIEUKH-WE-NIEUNCIEUC
-0xB392	0xD01E	# HANGUL SYLLABLE KHIEUKH-WE-NIEUNHIEUH
-0xB393	0xD01F	# HANGUL SYLLABLE KHIEUKH-WE-TIKEUT
-0xB394	0xD020	# HANGUL SYLLABLE KHIEUKH-WE-RIEUL
-0xB395	0xD021	# HANGUL SYLLABLE KHIEUKH-WE-RIEULKIYEOK
-0xB396	0xD022	# HANGUL SYLLABLE KHIEUKH-WE-RIEULMIEUM
-0xB397	0xD023	# HANGUL SYLLABLE KHIEUKH-WE-RIEULPIEUP
-0xB398	0xD024	# HANGUL SYLLABLE KHIEUKH-WE-RIEULSIOS
-0xB399	0xD025	# HANGUL SYLLABLE KHIEUKH-WE-RIEULTHIEUTH
-0xB39A	0xD026	# HANGUL SYLLABLE KHIEUKH-WE-RIEULPHIEUPH
-0xB39B	0xD027	# HANGUL SYLLABLE KHIEUKH-WE-RIEULHIEUH
-0xB39C	0xD028	# HANGUL SYLLABLE KHIEUKH-WE-MIEUM
-0xB39D	0xD029	# HANGUL SYLLABLE KHIEUKH-WE-PIEUP
-0xB39E	0xD02A	# HANGUL SYLLABLE KHIEUKH-WE-PIEUPSIOS
-0xB39F	0xD02B	# HANGUL SYLLABLE KHIEUKH-WE-SIOS
-0xB3A0	0xD02C	# HANGUL SYLLABLE KHIEUKH-WE-SSANGSIOS
-0xB3A1	0xB05D	# HANGUL SYLLABLE SSANGKIYEOK-EU-THIEUTH
-0xB3A2	0xB07C	# HANGUL SYLLABLE SSANGKIYEOK-I
-0xB3A3	0xB07D	# HANGUL SYLLABLE SSANGKIYEOK-I-KIYEOK
-0xB3A4	0xB080	# HANGUL SYLLABLE SSANGKIYEOK-I-NIEUN
-0xB3A5	0xB084	# HANGUL SYLLABLE SSANGKIYEOK-I-RIEUL
-0xB3A6	0xB08C	# HANGUL SYLLABLE SSANGKIYEOK-I-MIEUM
-0xB3A7	0xB08D	# HANGUL SYLLABLE SSANGKIYEOK-I-PIEUP
-0xB3A8	0xB08F	# HANGUL SYLLABLE SSANGKIYEOK-I-SIOS
-0xB3A9	0xB091	# HANGUL SYLLABLE SSANGKIYEOK-I-IEUNG
-0xB3AA	0xB098	# HANGUL SYLLABLE NIEUN-A
-0xB3AB	0xB099	# HANGUL SYLLABLE NIEUN-A-KIYEOK
-0xB3AC	0xB09A	# HANGUL SYLLABLE NIEUN-A-SSANGKIYEOK
-0xB3AD	0xB09C	# HANGUL SYLLABLE NIEUN-A-NIEUN
-0xB3AE	0xB09F	# HANGUL SYLLABLE NIEUN-A-TIKEUT
-0xB3AF	0xB0A0	# HANGUL SYLLABLE NIEUN-A-RIEUL
-0xB3B0	0xB0A1	# HANGUL SYLLABLE NIEUN-A-RIEULKIYEOK
-0xB3B1	0xB0A2	# HANGUL SYLLABLE NIEUN-A-RIEULMIEUM
-0xB3B2	0xB0A8	# HANGUL SYLLABLE NIEUN-A-MIEUM
-0xB3B3	0xB0A9	# HANGUL SYLLABLE NIEUN-A-PIEUP
-0xB3B4	0xB0AB	# HANGUL SYLLABLE NIEUN-A-SIOS
-0xB3B5	0xB0AC	# HANGUL SYLLABLE NIEUN-A-SSANGSIOS
-0xB3B6	0xB0AD	# HANGUL SYLLABLE NIEUN-A-IEUNG
-0xB3B7	0xB0AE	# HANGUL SYLLABLE NIEUN-A-CIEUC
-0xB3B8	0xB0AF	# HANGUL SYLLABLE NIEUN-A-CHIEUCH
-0xB3B9	0xB0B1	# HANGUL SYLLABLE NIEUN-A-THIEUTH
-0xB3BA	0xB0B3	# HANGUL SYLLABLE NIEUN-A-HIEUH
-0xB3BB	0xB0B4	# HANGUL SYLLABLE NIEUN-AE
-0xB3BC	0xB0B5	# HANGUL SYLLABLE NIEUN-AE-KIYEOK
-0xB3BD	0xB0B8	# HANGUL SYLLABLE NIEUN-AE-NIEUN
-0xB3BE	0xB0BC	# HANGUL SYLLABLE NIEUN-AE-RIEUL
-0xB3BF	0xB0C4	# HANGUL SYLLABLE NIEUN-AE-MIEUM
-0xB3C0	0xB0C5	# HANGUL SYLLABLE NIEUN-AE-PIEUP
-0xB3C1	0xB0C7	# HANGUL SYLLABLE NIEUN-AE-SIOS
-0xB3C2	0xB0C8	# HANGUL SYLLABLE NIEUN-AE-SSANGSIOS
-0xB3C3	0xB0C9	# HANGUL SYLLABLE NIEUN-AE-IEUNG
-0xB3C4	0xB0D0	# HANGUL SYLLABLE NIEUN-YA
-0xB3C5	0xB0D1	# HANGUL SYLLABLE NIEUN-YA-KIYEOK
-0xB3C6	0xB0D4	# HANGUL SYLLABLE NIEUN-YA-NIEUN
-0xB3C7	0xB0D8	# HANGUL SYLLABLE NIEUN-YA-RIEUL
-0xB3C8	0xB0E0	# HANGUL SYLLABLE NIEUN-YA-MIEUM
-0xB3C9	0xB0E5	# HANGUL SYLLABLE NIEUN-YA-IEUNG
-0xB3CA	0xB108	# HANGUL SYLLABLE NIEUN-EO
-0xB3CB	0xB109	# HANGUL SYLLABLE NIEUN-EO-KIYEOK
-0xB3CC	0xB10B	# HANGUL SYLLABLE NIEUN-EO-KIYEOKSIOS
-0xB3CD	0xB10C	# HANGUL SYLLABLE NIEUN-EO-NIEUN
-0xB3CE	0xB110	# HANGUL SYLLABLE NIEUN-EO-RIEUL
-0xB3CF	0xB112	# HANGUL SYLLABLE NIEUN-EO-RIEULMIEUM
-0xB3D0	0xB113	# HANGUL SYLLABLE NIEUN-EO-RIEULPIEUP
-0xB3D1	0xB118	# HANGUL SYLLABLE NIEUN-EO-MIEUM
-0xB3D2	0xB119	# HANGUL SYLLABLE NIEUN-EO-PIEUP
-0xB3D3	0xB11B	# HANGUL SYLLABLE NIEUN-EO-SIOS
-0xB3D4	0xB11C	# HANGUL SYLLABLE NIEUN-EO-SSANGSIOS
-0xB3D5	0xB11D	# HANGUL SYLLABLE NIEUN-EO-IEUNG
-0xB3D6	0xB123	# HANGUL SYLLABLE NIEUN-EO-HIEUH
-0xB3D7	0xB124	# HANGUL SYLLABLE NIEUN-E
-0xB3D8	0xB125	# HANGUL SYLLABLE NIEUN-E-KIYEOK
-0xB3D9	0xB128	# HANGUL SYLLABLE NIEUN-E-NIEUN
-0xB3DA	0xB12C	# HANGUL SYLLABLE NIEUN-E-RIEUL
-0xB3DB	0xB134	# HANGUL SYLLABLE NIEUN-E-MIEUM
-0xB3DC	0xB135	# HANGUL SYLLABLE NIEUN-E-PIEUP
-0xB3DD	0xB137	# HANGUL SYLLABLE NIEUN-E-SIOS
-0xB3DE	0xB138	# HANGUL SYLLABLE NIEUN-E-SSANGSIOS
-0xB3DF	0xB139	# HANGUL SYLLABLE NIEUN-E-IEUNG
-0xB3E0	0xB140	# HANGUL SYLLABLE NIEUN-YEO
-0xB3E1	0xB141	# HANGUL SYLLABLE NIEUN-YEO-KIYEOK
-0xB3E2	0xB144	# HANGUL SYLLABLE NIEUN-YEO-NIEUN
-0xB3E3	0xB148	# HANGUL SYLLABLE NIEUN-YEO-RIEUL
-0xB3E4	0xB150	# HANGUL SYLLABLE NIEUN-YEO-MIEUM
-0xB3E5	0xB151	# HANGUL SYLLABLE NIEUN-YEO-PIEUP
-0xB3E6	0xB154	# HANGUL SYLLABLE NIEUN-YEO-SSANGSIOS
-0xB3E7	0xB155	# HANGUL SYLLABLE NIEUN-YEO-IEUNG
-0xB3E8	0xB158	# HANGUL SYLLABLE NIEUN-YEO-KHIEUKH
-0xB3E9	0xB15C	# HANGUL SYLLABLE NIEUN-YE
-0xB3EA	0xB160	# HANGUL SYLLABLE NIEUN-YE-NIEUN
-0xB3EB	0xB178	# HANGUL SYLLABLE NIEUN-O
-0xB3EC	0xB179	# HANGUL SYLLABLE NIEUN-O-KIYEOK
-0xB3ED	0xB17C	# HANGUL SYLLABLE NIEUN-O-NIEUN
-0xB3EE	0xB180	# HANGUL SYLLABLE NIEUN-O-RIEUL
-0xB3EF	0xB182	# HANGUL SYLLABLE NIEUN-O-RIEULMIEUM
-0xB3F0	0xB188	# HANGUL SYLLABLE NIEUN-O-MIEUM
-0xB3F1	0xB189	# HANGUL SYLLABLE NIEUN-O-PIEUP
-0xB3F2	0xB18B	# HANGUL SYLLABLE NIEUN-O-SIOS
-0xB3F3	0xB18D	# HANGUL SYLLABLE NIEUN-O-IEUNG
-0xB3F4	0xB192	# HANGUL SYLLABLE NIEUN-O-PHIEUPH
-0xB3F5	0xB193	# HANGUL SYLLABLE NIEUN-O-HIEUH
-0xB3F6	0xB194	# HANGUL SYLLABLE NIEUN-WA
-0xB3F7	0xB198	# HANGUL SYLLABLE NIEUN-WA-NIEUN
-0xB3F8	0xB19C	# HANGUL SYLLABLE NIEUN-WA-RIEUL
-0xB3F9	0xB1A8	# HANGUL SYLLABLE NIEUN-WA-SSANGSIOS
-0xB3FA	0xB1CC	# HANGUL SYLLABLE NIEUN-OE
-0xB3FB	0xB1D0	# HANGUL SYLLABLE NIEUN-OE-NIEUN
-0xB3FC	0xB1D4	# HANGUL SYLLABLE NIEUN-OE-RIEUL
-0xB3FD	0xB1DC	# HANGUL SYLLABLE NIEUN-OE-MIEUM
-0xB3FE	0xB1DD	# HANGUL SYLLABLE NIEUN-OE-PIEUP
-0xB441	0xD02E	# HANGUL SYLLABLE KHIEUKH-WE-CIEUC
-0xB442	0xD02F	# HANGUL SYLLABLE KHIEUKH-WE-CHIEUCH
-0xB443	0xD030	# HANGUL SYLLABLE KHIEUKH-WE-KHIEUKH
-0xB444	0xD031	# HANGUL SYLLABLE KHIEUKH-WE-THIEUTH
-0xB445	0xD032	# HANGUL SYLLABLE KHIEUKH-WE-PHIEUPH
-0xB446	0xD033	# HANGUL SYLLABLE KHIEUKH-WE-HIEUH
-0xB447	0xD036	# HANGUL SYLLABLE KHIEUKH-WI-SSANGKIYEOK
-0xB448	0xD037	# HANGUL SYLLABLE KHIEUKH-WI-KIYEOKSIOS
-0xB449	0xD039	# HANGUL SYLLABLE KHIEUKH-WI-NIEUNCIEUC
-0xB44A	0xD03A	# HANGUL SYLLABLE KHIEUKH-WI-NIEUNHIEUH
-0xB44B	0xD03B	# HANGUL SYLLABLE KHIEUKH-WI-TIKEUT
-0xB44C	0xD03D	# HANGUL SYLLABLE KHIEUKH-WI-RIEULKIYEOK
-0xB44D	0xD03E	# HANGUL SYLLABLE KHIEUKH-WI-RIEULMIEUM
-0xB44E	0xD03F	# HANGUL SYLLABLE KHIEUKH-WI-RIEULPIEUP
-0xB44F	0xD040	# HANGUL SYLLABLE KHIEUKH-WI-RIEULSIOS
-0xB450	0xD041	# HANGUL SYLLABLE KHIEUKH-WI-RIEULTHIEUTH
-0xB451	0xD042	# HANGUL SYLLABLE KHIEUKH-WI-RIEULPHIEUPH
-0xB452	0xD043	# HANGUL SYLLABLE KHIEUKH-WI-RIEULHIEUH
-0xB453	0xD046	# HANGUL SYLLABLE KHIEUKH-WI-PIEUPSIOS
-0xB454	0xD048	# HANGUL SYLLABLE KHIEUKH-WI-SSANGSIOS
-0xB455	0xD04A	# HANGUL SYLLABLE KHIEUKH-WI-CIEUC
-0xB456	0xD04B	# HANGUL SYLLABLE KHIEUKH-WI-CHIEUCH
-0xB457	0xD04C	# HANGUL SYLLABLE KHIEUKH-WI-KHIEUKH
-0xB458	0xD04D	# HANGUL SYLLABLE KHIEUKH-WI-THIEUTH
-0xB459	0xD04E	# HANGUL SYLLABLE KHIEUKH-WI-PHIEUPH
-0xB45A	0xD04F	# HANGUL SYLLABLE KHIEUKH-WI-HIEUH
-0xB461	0xD051	# HANGUL SYLLABLE KHIEUKH-YU-KIYEOK
-0xB462	0xD052	# HANGUL SYLLABLE KHIEUKH-YU-SSANGKIYEOK
-0xB463	0xD053	# HANGUL SYLLABLE KHIEUKH-YU-KIYEOKSIOS
-0xB464	0xD055	# HANGUL SYLLABLE KHIEUKH-YU-NIEUNCIEUC
-0xB465	0xD056	# HANGUL SYLLABLE KHIEUKH-YU-NIEUNHIEUH
-0xB466	0xD057	# HANGUL SYLLABLE KHIEUKH-YU-TIKEUT
-0xB467	0xD059	# HANGUL SYLLABLE KHIEUKH-YU-RIEULKIYEOK
-0xB468	0xD05A	# HANGUL SYLLABLE KHIEUKH-YU-RIEULMIEUM
-0xB469	0xD05B	# HANGUL SYLLABLE KHIEUKH-YU-RIEULPIEUP
-0xB46A	0xD05C	# HANGUL SYLLABLE KHIEUKH-YU-RIEULSIOS
-0xB46B	0xD05D	# HANGUL SYLLABLE KHIEUKH-YU-RIEULTHIEUTH
-0xB46C	0xD05E	# HANGUL SYLLABLE KHIEUKH-YU-RIEULPHIEUPH
-0xB46D	0xD05F	# HANGUL SYLLABLE KHIEUKH-YU-RIEULHIEUH
-0xB46E	0xD061	# HANGUL SYLLABLE KHIEUKH-YU-PIEUP
-0xB46F	0xD062	# HANGUL SYLLABLE KHIEUKH-YU-PIEUPSIOS
-0xB470	0xD063	# HANGUL SYLLABLE KHIEUKH-YU-SIOS
-0xB471	0xD064	# HANGUL SYLLABLE KHIEUKH-YU-SSANGSIOS
-0xB472	0xD065	# HANGUL SYLLABLE KHIEUKH-YU-IEUNG
-0xB473	0xD066	# HANGUL SYLLABLE KHIEUKH-YU-CIEUC
-0xB474	0xD067	# HANGUL SYLLABLE KHIEUKH-YU-CHIEUCH
-0xB475	0xD068	# HANGUL SYLLABLE KHIEUKH-YU-KHIEUKH
-0xB476	0xD069	# HANGUL SYLLABLE KHIEUKH-YU-THIEUTH
-0xB477	0xD06A	# HANGUL SYLLABLE KHIEUKH-YU-PHIEUPH
-0xB478	0xD06B	# HANGUL SYLLABLE KHIEUKH-YU-HIEUH
-0xB479	0xD06E	# HANGUL SYLLABLE KHIEUKH-EU-SSANGKIYEOK
-0xB47A	0xD06F	# HANGUL SYLLABLE KHIEUKH-EU-KIYEOKSIOS
-0xB481	0xD071	# HANGUL SYLLABLE KHIEUKH-EU-NIEUNCIEUC
-0xB482	0xD072	# HANGUL SYLLABLE KHIEUKH-EU-NIEUNHIEUH
-0xB483	0xD073	# HANGUL SYLLABLE KHIEUKH-EU-TIKEUT
-0xB484	0xD075	# HANGUL SYLLABLE KHIEUKH-EU-RIEULKIYEOK
-0xB485	0xD076	# HANGUL SYLLABLE KHIEUKH-EU-RIEULMIEUM
-0xB486	0xD077	# HANGUL SYLLABLE KHIEUKH-EU-RIEULPIEUP
-0xB487	0xD078	# HANGUL SYLLABLE KHIEUKH-EU-RIEULSIOS
-0xB488	0xD079	# HANGUL SYLLABLE KHIEUKH-EU-RIEULTHIEUTH
-0xB489	0xD07A	# HANGUL SYLLABLE KHIEUKH-EU-RIEULPHIEUPH
-0xB48A	0xD07B	# HANGUL SYLLABLE KHIEUKH-EU-RIEULHIEUH
-0xB48B	0xD07E	# HANGUL SYLLABLE KHIEUKH-EU-PIEUPSIOS
-0xB48C	0xD07F	# HANGUL SYLLABLE KHIEUKH-EU-SIOS
-0xB48D	0xD080	# HANGUL SYLLABLE KHIEUKH-EU-SSANGSIOS
-0xB48E	0xD082	# HANGUL SYLLABLE KHIEUKH-EU-CIEUC
-0xB48F	0xD083	# HANGUL SYLLABLE KHIEUKH-EU-CHIEUCH
-0xB490	0xD084	# HANGUL SYLLABLE KHIEUKH-EU-KHIEUKH
-0xB491	0xD085	# HANGUL SYLLABLE KHIEUKH-EU-THIEUTH
-0xB492	0xD086	# HANGUL SYLLABLE KHIEUKH-EU-PHIEUPH
-0xB493	0xD087	# HANGUL SYLLABLE KHIEUKH-EU-HIEUH
-0xB494	0xD088	# HANGUL SYLLABLE KHIEUKH-YI
-0xB495	0xD089	# HANGUL SYLLABLE KHIEUKH-YI-KIYEOK
-0xB496	0xD08A	# HANGUL SYLLABLE KHIEUKH-YI-SSANGKIYEOK
-0xB497	0xD08B	# HANGUL SYLLABLE KHIEUKH-YI-KIYEOKSIOS
-0xB498	0xD08C	# HANGUL SYLLABLE KHIEUKH-YI-NIEUN
-0xB499	0xD08D	# HANGUL SYLLABLE KHIEUKH-YI-NIEUNCIEUC
-0xB49A	0xD08E	# HANGUL SYLLABLE KHIEUKH-YI-NIEUNHIEUH
-0xB49B	0xD08F	# HANGUL SYLLABLE KHIEUKH-YI-TIKEUT
-0xB49C	0xD090	# HANGUL SYLLABLE KHIEUKH-YI-RIEUL
-0xB49D	0xD091	# HANGUL SYLLABLE KHIEUKH-YI-RIEULKIYEOK
-0xB49E	0xD092	# HANGUL SYLLABLE KHIEUKH-YI-RIEULMIEUM
-0xB49F	0xD093	# HANGUL SYLLABLE KHIEUKH-YI-RIEULPIEUP
-0xB4A0	0xD094	# HANGUL SYLLABLE KHIEUKH-YI-RIEULSIOS
-0xB4A1	0xB1DF	# HANGUL SYLLABLE NIEUN-OE-SIOS
-0xB4A2	0xB1E8	# HANGUL SYLLABLE NIEUN-YO
-0xB4A3	0xB1E9	# HANGUL SYLLABLE NIEUN-YO-KIYEOK
-0xB4A4	0xB1EC	# HANGUL SYLLABLE NIEUN-YO-NIEUN
-0xB4A5	0xB1F0	# HANGUL SYLLABLE NIEUN-YO-RIEUL
-0xB4A6	0xB1F9	# HANGUL SYLLABLE NIEUN-YO-PIEUP
-0xB4A7	0xB1FB	# HANGUL SYLLABLE NIEUN-YO-SIOS
-0xB4A8	0xB1FD	# HANGUL SYLLABLE NIEUN-YO-IEUNG
-0xB4A9	0xB204	# HANGUL SYLLABLE NIEUN-U
-0xB4AA	0xB205	# HANGUL SYLLABLE NIEUN-U-KIYEOK
-0xB4AB	0xB208	# HANGUL SYLLABLE NIEUN-U-NIEUN
-0xB4AC	0xB20B	# HANGUL SYLLABLE NIEUN-U-TIKEUT
-0xB4AD	0xB20C	# HANGUL SYLLABLE NIEUN-U-RIEUL
-0xB4AE	0xB214	# HANGUL SYLLABLE NIEUN-U-MIEUM
-0xB4AF	0xB215	# HANGUL SYLLABLE NIEUN-U-PIEUP
-0xB4B0	0xB217	# HANGUL SYLLABLE NIEUN-U-SIOS
-0xB4B1	0xB219	# HANGUL SYLLABLE NIEUN-U-IEUNG
-0xB4B2	0xB220	# HANGUL SYLLABLE NIEUN-WEO
-0xB4B3	0xB234	# HANGUL SYLLABLE NIEUN-WEO-SSANGSIOS
-0xB4B4	0xB23C	# HANGUL SYLLABLE NIEUN-WE
-0xB4B5	0xB258	# HANGUL SYLLABLE NIEUN-WI
-0xB4B6	0xB25C	# HANGUL SYLLABLE NIEUN-WI-NIEUN
-0xB4B7	0xB260	# HANGUL SYLLABLE NIEUN-WI-RIEUL
-0xB4B8	0xB268	# HANGUL SYLLABLE NIEUN-WI-MIEUM
-0xB4B9	0xB269	# HANGUL SYLLABLE NIEUN-WI-PIEUP
-0xB4BA	0xB274	# HANGUL SYLLABLE NIEUN-YU
-0xB4BB	0xB275	# HANGUL SYLLABLE NIEUN-YU-KIYEOK
-0xB4BC	0xB27C	# HANGUL SYLLABLE NIEUN-YU-RIEUL
-0xB4BD	0xB284	# HANGUL SYLLABLE NIEUN-YU-MIEUM
-0xB4BE	0xB285	# HANGUL SYLLABLE NIEUN-YU-PIEUP
-0xB4BF	0xB289	# HANGUL SYLLABLE NIEUN-YU-IEUNG
-0xB4C0	0xB290	# HANGUL SYLLABLE NIEUN-EU
-0xB4C1	0xB291	# HANGUL SYLLABLE NIEUN-EU-KIYEOK
-0xB4C2	0xB294	# HANGUL SYLLABLE NIEUN-EU-NIEUN
-0xB4C3	0xB298	# HANGUL SYLLABLE NIEUN-EU-RIEUL
-0xB4C4	0xB299	# HANGUL SYLLABLE NIEUN-EU-RIEULKIYEOK
-0xB4C5	0xB29A	# HANGUL SYLLABLE NIEUN-EU-RIEULMIEUM
-0xB4C6	0xB2A0	# HANGUL SYLLABLE NIEUN-EU-MIEUM
-0xB4C7	0xB2A1	# HANGUL SYLLABLE NIEUN-EU-PIEUP
-0xB4C8	0xB2A3	# HANGUL SYLLABLE NIEUN-EU-SIOS
-0xB4C9	0xB2A5	# HANGUL SYLLABLE NIEUN-EU-IEUNG
-0xB4CA	0xB2A6	# HANGUL SYLLABLE NIEUN-EU-CIEUC
-0xB4CB	0xB2AA	# HANGUL SYLLABLE NIEUN-EU-PHIEUPH
-0xB4CC	0xB2AC	# HANGUL SYLLABLE NIEUN-YI
-0xB4CD	0xB2B0	# HANGUL SYLLABLE NIEUN-YI-NIEUN
-0xB4CE	0xB2B4	# HANGUL SYLLABLE NIEUN-YI-RIEUL
-0xB4CF	0xB2C8	# HANGUL SYLLABLE NIEUN-I
-0xB4D0	0xB2C9	# HANGUL SYLLABLE NIEUN-I-KIYEOK
-0xB4D1	0xB2CC	# HANGUL SYLLABLE NIEUN-I-NIEUN
-0xB4D2	0xB2D0	# HANGUL SYLLABLE NIEUN-I-RIEUL
-0xB4D3	0xB2D2	# HANGUL SYLLABLE NIEUN-I-RIEULMIEUM-<3/22/95>
-0xB4D4	0xB2D8	# HANGUL SYLLABLE NIEUN-I-MIEUM
-0xB4D5	0xB2D9	# HANGUL SYLLABLE NIEUN-I-PIEUP
-0xB4D6	0xB2DB	# HANGUL SYLLABLE NIEUN-I-SIOS
-0xB4D7	0xB2DD	# HANGUL SYLLABLE NIEUN-I-IEUNG
-0xB4D8	0xB2E2	# HANGUL SYLLABLE NIEUN-I-PHIEUPH
-0xB4D9	0xB2E4	# HANGUL SYLLABLE TIKEUT-A
-0xB4DA	0xB2E5	# HANGUL SYLLABLE TIKEUT-A-KIYEOK
-0xB4DB	0xB2E6	# HANGUL SYLLABLE TIKEUT-A-SSANGKIYEOK
-0xB4DC	0xB2E8	# HANGUL SYLLABLE TIKEUT-A-NIEUN
-0xB4DD	0xB2EB	# HANGUL SYLLABLE TIKEUT-A-TIKEUT
-0xB4DE	0xB2EC	# HANGUL SYLLABLE TIKEUT-A-RIEUL
-0xB4DF	0xB2ED	# HANGUL SYLLABLE TIKEUT-A-RIEULKIYEOK
-0xB4E0	0xB2EE	# HANGUL SYLLABLE TIKEUT-A-RIEULMIEUM
-0xB4E1	0xB2EF	# HANGUL SYLLABLE TIKEUT-A-RIEULPIEUP
-0xB4E2	0xB2F3	# HANGUL SYLLABLE TIKEUT-A-RIEULHIEUH
-0xB4E3	0xB2F4	# HANGUL SYLLABLE TIKEUT-A-MIEUM
-0xB4E4	0xB2F5	# HANGUL SYLLABLE TIKEUT-A-PIEUP
-0xB4E5	0xB2F7	# HANGUL SYLLABLE TIKEUT-A-SIOS
-0xB4E6	0xB2F8	# HANGUL SYLLABLE TIKEUT-A-SSANGSIOS
-0xB4E7	0xB2F9	# HANGUL SYLLABLE TIKEUT-A-IEUNG
-0xB4E8	0xB2FA	# HANGUL SYLLABLE TIKEUT-A-CIEUC
-0xB4E9	0xB2FB	# HANGUL SYLLABLE TIKEUT-A-CHIEUCH
-0xB4EA	0xB2FF	# HANGUL SYLLABLE TIKEUT-A-HIEUH
-0xB4EB	0xB300	# HANGUL SYLLABLE TIKEUT-AE
-0xB4EC	0xB301	# HANGUL SYLLABLE TIKEUT-AE-KIYEOK
-0xB4ED	0xB304	# HANGUL SYLLABLE TIKEUT-AE-NIEUN
-0xB4EE	0xB308	# HANGUL SYLLABLE TIKEUT-AE-RIEUL
-0xB4EF	0xB310	# HANGUL SYLLABLE TIKEUT-AE-MIEUM
-0xB4F0	0xB311	# HANGUL SYLLABLE TIKEUT-AE-PIEUP
-0xB4F1	0xB313	# HANGUL SYLLABLE TIKEUT-AE-SIOS
-0xB4F2	0xB314	# HANGUL SYLLABLE TIKEUT-AE-SSANGSIOS
-0xB4F3	0xB315	# HANGUL SYLLABLE TIKEUT-AE-IEUNG
-0xB4F4	0xB31C	# HANGUL SYLLABLE TIKEUT-YA
-0xB4F5	0xB354	# HANGUL SYLLABLE TIKEUT-EO
-0xB4F6	0xB355	# HANGUL SYLLABLE TIKEUT-EO-KIYEOK
-0xB4F7	0xB356	# HANGUL SYLLABLE TIKEUT-EO-SSANGKIYEOK
-0xB4F8	0xB358	# HANGUL SYLLABLE TIKEUT-EO-NIEUN
-0xB4F9	0xB35B	# HANGUL SYLLABLE TIKEUT-EO-TIKEUT
-0xB4FA	0xB35C	# HANGUL SYLLABLE TIKEUT-EO-RIEUL
-0xB4FB	0xB35E	# HANGUL SYLLABLE TIKEUT-EO-RIEULMIEUM
-0xB4FC	0xB35F	# HANGUL SYLLABLE TIKEUT-EO-RIEULPIEUP
-0xB4FD	0xB364	# HANGUL SYLLABLE TIKEUT-EO-MIEUM
-0xB4FE	0xB365	# HANGUL SYLLABLE TIKEUT-EO-PIEUP
-0xB541	0xD095	# HANGUL SYLLABLE KHIEUKH-YI-RIEULTHIEUTH
-0xB542	0xD096	# HANGUL SYLLABLE KHIEUKH-YI-RIEULPHIEUPH
-0xB543	0xD097	# HANGUL SYLLABLE KHIEUKH-YI-RIEULHIEUH
-0xB544	0xD098	# HANGUL SYLLABLE KHIEUKH-YI-MIEUM
-0xB545	0xD099	# HANGUL SYLLABLE KHIEUKH-YI-PIEUP
-0xB546	0xD09A	# HANGUL SYLLABLE KHIEUKH-YI-PIEUPSIOS
-0xB547	0xD09B	# HANGUL SYLLABLE KHIEUKH-YI-SIOS
-0xB548	0xD09C	# HANGUL SYLLABLE KHIEUKH-YI-SSANGSIOS
-0xB549	0xD09D	# HANGUL SYLLABLE KHIEUKH-YI-IEUNG
-0xB54A	0xD09E	# HANGUL SYLLABLE KHIEUKH-YI-CIEUC
-0xB54B	0xD09F	# HANGUL SYLLABLE KHIEUKH-YI-CHIEUCH
-0xB54C	0xD0A0	# HANGUL SYLLABLE KHIEUKH-YI-KHIEUKH
-0xB54D	0xD0A1	# HANGUL SYLLABLE KHIEUKH-YI-THIEUTH
-0xB54E	0xD0A2	# HANGUL SYLLABLE KHIEUKH-YI-PHIEUPH
-0xB54F	0xD0A3	# HANGUL SYLLABLE KHIEUKH-YI-HIEUH
-0xB550	0xD0A6	# HANGUL SYLLABLE KHIEUKH-I-SSANGKIYEOK
-0xB551	0xD0A7	# HANGUL SYLLABLE KHIEUKH-I-KIYEOKSIOS
-0xB552	0xD0A9	# HANGUL SYLLABLE KHIEUKH-I-NIEUNCIEUC
-0xB553	0xD0AA	# HANGUL SYLLABLE KHIEUKH-I-NIEUNHIEUH
-0xB554	0xD0AB	# HANGUL SYLLABLE KHIEUKH-I-TIKEUT
-0xB555	0xD0AD	# HANGUL SYLLABLE KHIEUKH-I-RIEULKIYEOK
-0xB556	0xD0AE	# HANGUL SYLLABLE KHIEUKH-I-RIEULMIEUM
-0xB557	0xD0AF	# HANGUL SYLLABLE KHIEUKH-I-RIEULPIEUP
-0xB558	0xD0B0	# HANGUL SYLLABLE KHIEUKH-I-RIEULSIOS
-0xB559	0xD0B1	# HANGUL SYLLABLE KHIEUKH-I-RIEULTHIEUTH
-0xB55A	0xD0B2	# HANGUL SYLLABLE KHIEUKH-I-RIEULPHIEUPH
-0xB561	0xD0B3	# HANGUL SYLLABLE KHIEUKH-I-RIEULHIEUH
-0xB562	0xD0B6	# HANGUL SYLLABLE KHIEUKH-I-PIEUPSIOS
-0xB563	0xD0B8	# HANGUL SYLLABLE KHIEUKH-I-SSANGSIOS
-0xB564	0xD0BA	# HANGUL SYLLABLE KHIEUKH-I-CIEUC
-0xB565	0xD0BB	# HANGUL SYLLABLE KHIEUKH-I-CHIEUCH
-0xB566	0xD0BC	# HANGUL SYLLABLE KHIEUKH-I-KHIEUKH
-0xB567	0xD0BD	# HANGUL SYLLABLE KHIEUKH-I-THIEUTH
-0xB568	0xD0BE	# HANGUL SYLLABLE KHIEUKH-I-PHIEUPH
-0xB569	0xD0BF	# HANGUL SYLLABLE KHIEUKH-I-HIEUH
-0xB56A	0xD0C2	# HANGUL SYLLABLE THIEUTH-A-SSANGKIYEOK
-0xB56B	0xD0C3	# HANGUL SYLLABLE THIEUTH-A-KIYEOKSIOS
-0xB56C	0xD0C5	# HANGUL SYLLABLE THIEUTH-A-NIEUNCIEUC
-0xB56D	0xD0C6	# HANGUL SYLLABLE THIEUTH-A-NIEUNHIEUH
-0xB56E	0xD0C7	# HANGUL SYLLABLE THIEUTH-A-TIKEUT
-0xB56F	0xD0CA	# HANGUL SYLLABLE THIEUTH-A-RIEULMIEUM
-0xB570	0xD0CB	# HANGUL SYLLABLE THIEUTH-A-RIEULPIEUP
-0xB571	0xD0CC	# HANGUL SYLLABLE THIEUTH-A-RIEULSIOS
-0xB572	0xD0CD	# HANGUL SYLLABLE THIEUTH-A-RIEULTHIEUTH
-0xB573	0xD0CE	# HANGUL SYLLABLE THIEUTH-A-RIEULPHIEUPH
-0xB574	0xD0CF	# HANGUL SYLLABLE THIEUTH-A-RIEULHIEUH
-0xB575	0xD0D2	# HANGUL SYLLABLE THIEUTH-A-PIEUPSIOS
-0xB576	0xD0D6	# HANGUL SYLLABLE THIEUTH-A-CIEUC
-0xB577	0xD0D7	# HANGUL SYLLABLE THIEUTH-A-CHIEUCH
-0xB578	0xD0D8	# HANGUL SYLLABLE THIEUTH-A-KHIEUKH
-0xB579	0xD0D9	# HANGUL SYLLABLE THIEUTH-A-THIEUTH
-0xB57A	0xD0DA	# HANGUL SYLLABLE THIEUTH-A-PHIEUPH
-0xB581	0xD0DB	# HANGUL SYLLABLE THIEUTH-A-HIEUH
-0xB582	0xD0DE	# HANGUL SYLLABLE THIEUTH-AE-SSANGKIYEOK
-0xB583	0xD0DF	# HANGUL SYLLABLE THIEUTH-AE-KIYEOKSIOS
-0xB584	0xD0E1	# HANGUL SYLLABLE THIEUTH-AE-NIEUNCIEUC
-0xB585	0xD0E2	# HANGUL SYLLABLE THIEUTH-AE-NIEUNHIEUH
-0xB586	0xD0E3	# HANGUL SYLLABLE THIEUTH-AE-TIKEUT
-0xB587	0xD0E5	# HANGUL SYLLABLE THIEUTH-AE-RIEULKIYEOK
-0xB588	0xD0E6	# HANGUL SYLLABLE THIEUTH-AE-RIEULMIEUM
-0xB589	0xD0E7	# HANGUL SYLLABLE THIEUTH-AE-RIEULPIEUP
-0xB58A	0xD0E8	# HANGUL SYLLABLE THIEUTH-AE-RIEULSIOS
-0xB58B	0xD0E9	# HANGUL SYLLABLE THIEUTH-AE-RIEULTHIEUTH
-0xB58C	0xD0EA	# HANGUL SYLLABLE THIEUTH-AE-RIEULPHIEUPH
-0xB58D	0xD0EB	# HANGUL SYLLABLE THIEUTH-AE-RIEULHIEUH
-0xB58E	0xD0EE	# HANGUL SYLLABLE THIEUTH-AE-PIEUPSIOS
-0xB58F	0xD0F2	# HANGUL SYLLABLE THIEUTH-AE-CIEUC
-0xB590	0xD0F3	# HANGUL SYLLABLE THIEUTH-AE-CHIEUCH
-0xB591	0xD0F4	# HANGUL SYLLABLE THIEUTH-AE-KHIEUKH
-0xB592	0xD0F5	# HANGUL SYLLABLE THIEUTH-AE-THIEUTH
-0xB593	0xD0F6	# HANGUL SYLLABLE THIEUTH-AE-PHIEUPH
-0xB594	0xD0F7	# HANGUL SYLLABLE THIEUTH-AE-HIEUH
-0xB595	0xD0F9	# HANGUL SYLLABLE THIEUTH-YA-KIYEOK
-0xB596	0xD0FA	# HANGUL SYLLABLE THIEUTH-YA-SSANGKIYEOK
-0xB597	0xD0FB	# HANGUL SYLLABLE THIEUTH-YA-KIYEOKSIOS
-0xB598	0xD0FC	# HANGUL SYLLABLE THIEUTH-YA-NIEUN
-0xB599	0xD0FD	# HANGUL SYLLABLE THIEUTH-YA-NIEUNCIEUC
-0xB59A	0xD0FE	# HANGUL SYLLABLE THIEUTH-YA-NIEUNHIEUH
-0xB59B	0xD0FF	# HANGUL SYLLABLE THIEUTH-YA-TIKEUT
-0xB59C	0xD100	# HANGUL SYLLABLE THIEUTH-YA-RIEUL
-0xB59D	0xD101	# HANGUL SYLLABLE THIEUTH-YA-RIEULKIYEOK
-0xB59E	0xD102	# HANGUL SYLLABLE THIEUTH-YA-RIEULMIEUM
-0xB59F	0xD103	# HANGUL SYLLABLE THIEUTH-YA-RIEULPIEUP
-0xB5A0	0xD104	# HANGUL SYLLABLE THIEUTH-YA-RIEULSIOS
-0xB5A1	0xB367	# HANGUL SYLLABLE TIKEUT-EO-SIOS
-0xB5A2	0xB369	# HANGUL SYLLABLE TIKEUT-EO-IEUNG
-0xB5A3	0xB36B	# HANGUL SYLLABLE TIKEUT-EO-CHIEUCH
-0xB5A4	0xB36E	# HANGUL SYLLABLE TIKEUT-EO-PHIEUPH
-0xB5A5	0xB370	# HANGUL SYLLABLE TIKEUT-E
-0xB5A6	0xB371	# HANGUL SYLLABLE TIKEUT-E-KIYEOK
-0xB5A7	0xB374	# HANGUL SYLLABLE TIKEUT-E-NIEUN
-0xB5A8	0xB378	# HANGUL SYLLABLE TIKEUT-E-RIEUL
-0xB5A9	0xB380	# HANGUL SYLLABLE TIKEUT-E-MIEUM
-0xB5AA	0xB381	# HANGUL SYLLABLE TIKEUT-E-PIEUP
-0xB5AB	0xB383	# HANGUL SYLLABLE TIKEUT-E-SIOS
-0xB5AC	0xB384	# HANGUL SYLLABLE TIKEUT-E-SSANGSIOS
-0xB5AD	0xB385	# HANGUL SYLLABLE TIKEUT-E-IEUNG
-0xB5AE	0xB38C	# HANGUL SYLLABLE TIKEUT-YEO
-0xB5AF	0xB390	# HANGUL SYLLABLE TIKEUT-YEO-NIEUN
-0xB5B0	0xB394	# HANGUL SYLLABLE TIKEUT-YEO-RIEUL
-0xB5B1	0xB3A0	# HANGUL SYLLABLE TIKEUT-YEO-SSANGSIOS
-0xB5B2	0xB3A1	# HANGUL SYLLABLE TIKEUT-YEO-IEUNG
-0xB5B3	0xB3A8	# HANGUL SYLLABLE TIKEUT-YE
-0xB5B4	0xB3AC	# HANGUL SYLLABLE TIKEUT-YE-NIEUN
-0xB5B5	0xB3C4	# HANGUL SYLLABLE TIKEUT-O
-0xB5B6	0xB3C5	# HANGUL SYLLABLE TIKEUT-O-KIYEOK
-0xB5B7	0xB3C8	# HANGUL SYLLABLE TIKEUT-O-NIEUN
-0xB5B8	0xB3CB	# HANGUL SYLLABLE TIKEUT-O-TIKEUT
-0xB5B9	0xB3CC	# HANGUL SYLLABLE TIKEUT-O-RIEUL
-0xB5BA	0xB3CE	# HANGUL SYLLABLE TIKEUT-O-RIEULMIEUM
-0xB5BB	0xB3D0	# HANGUL SYLLABLE TIKEUT-O-RIEULSIOS
-0xB5BC	0xB3D4	# HANGUL SYLLABLE TIKEUT-O-MIEUM
-0xB5BD	0xB3D5	# HANGUL SYLLABLE TIKEUT-O-PIEUP
-0xB5BE	0xB3D7	# HANGUL SYLLABLE TIKEUT-O-SIOS
-0xB5BF	0xB3D9	# HANGUL SYLLABLE TIKEUT-O-IEUNG
-0xB5C0	0xB3DB	# HANGUL SYLLABLE TIKEUT-O-CHIEUCH
-0xB5C1	0xB3DD	# HANGUL SYLLABLE TIKEUT-O-THIEUTH
-0xB5C2	0xB3E0	# HANGUL SYLLABLE TIKEUT-WA
-0xB5C3	0xB3E4	# HANGUL SYLLABLE TIKEUT-WA-NIEUN
-0xB5C4	0xB3E8	# HANGUL SYLLABLE TIKEUT-WA-RIEUL
-0xB5C5	0xB3FC	# HANGUL SYLLABLE TIKEUT-WAE
-0xB5C6	0xB410	# HANGUL SYLLABLE TIKEUT-WAE-SSANGSIOS
-0xB5C7	0xB418	# HANGUL SYLLABLE TIKEUT-OE
-0xB5C8	0xB41C	# HANGUL SYLLABLE TIKEUT-OE-NIEUN
-0xB5C9	0xB420	# HANGUL SYLLABLE TIKEUT-OE-RIEUL
-0xB5CA	0xB428	# HANGUL SYLLABLE TIKEUT-OE-MIEUM
-0xB5CB	0xB429	# HANGUL SYLLABLE TIKEUT-OE-PIEUP
-0xB5CC	0xB42B	# HANGUL SYLLABLE TIKEUT-OE-SIOS
-0xB5CD	0xB434	# HANGUL SYLLABLE TIKEUT-YO
-0xB5CE	0xB450	# HANGUL SYLLABLE TIKEUT-U
-0xB5CF	0xB451	# HANGUL SYLLABLE TIKEUT-U-KIYEOK
-0xB5D0	0xB454	# HANGUL SYLLABLE TIKEUT-U-NIEUN
-0xB5D1	0xB458	# HANGUL SYLLABLE TIKEUT-U-RIEUL
-0xB5D2	0xB460	# HANGUL SYLLABLE TIKEUT-U-MIEUM
-0xB5D3	0xB461	# HANGUL SYLLABLE TIKEUT-U-PIEUP
-0xB5D4	0xB463	# HANGUL SYLLABLE TIKEUT-U-SIOS
-0xB5D5	0xB465	# HANGUL SYLLABLE TIKEUT-U-IEUNG
-0xB5D6	0xB46C	# HANGUL SYLLABLE TIKEUT-WEO
-0xB5D7	0xB480	# HANGUL SYLLABLE TIKEUT-WEO-SSANGSIOS
-0xB5D8	0xB488	# HANGUL SYLLABLE TIKEUT-WE
-0xB5D9	0xB49D	# HANGUL SYLLABLE TIKEUT-WE-IEUNG
-0xB5DA	0xB4A4	# HANGUL SYLLABLE TIKEUT-WI
-0xB5DB	0xB4A8	# HANGUL SYLLABLE TIKEUT-WI-NIEUN
-0xB5DC	0xB4AC	# HANGUL SYLLABLE TIKEUT-WI-RIEUL
-0xB5DD	0xB4B5	# HANGUL SYLLABLE TIKEUT-WI-PIEUP
-0xB5DE	0xB4B7	# HANGUL SYLLABLE TIKEUT-WI-SIOS
-0xB5DF	0xB4B9	# HANGUL SYLLABLE TIKEUT-WI-IEUNG
-0xB5E0	0xB4C0	# HANGUL SYLLABLE TIKEUT-YU
-0xB5E1	0xB4C4	# HANGUL SYLLABLE TIKEUT-YU-NIEUN
-0xB5E2	0xB4C8	# HANGUL SYLLABLE TIKEUT-YU-RIEUL
-0xB5E3	0xB4D0	# HANGUL SYLLABLE TIKEUT-YU-MIEUM
-0xB5E4	0xB4D5	# HANGUL SYLLABLE TIKEUT-YU-IEUNG
-0xB5E5	0xB4DC	# HANGUL SYLLABLE TIKEUT-EU
-0xB5E6	0xB4DD	# HANGUL SYLLABLE TIKEUT-EU-KIYEOK
-0xB5E7	0xB4E0	# HANGUL SYLLABLE TIKEUT-EU-NIEUN
-0xB5E8	0xB4E3	# HANGUL SYLLABLE TIKEUT-EU-TIKEUT
-0xB5E9	0xB4E4	# HANGUL SYLLABLE TIKEUT-EU-RIEUL
-0xB5EA	0xB4E6	# HANGUL SYLLABLE TIKEUT-EU-RIEULMIEUM
-0xB5EB	0xB4EC	# HANGUL SYLLABLE TIKEUT-EU-MIEUM
-0xB5EC	0xB4ED	# HANGUL SYLLABLE TIKEUT-EU-PIEUP
-0xB5ED	0xB4EF	# HANGUL SYLLABLE TIKEUT-EU-SIOS
-0xB5EE	0xB4F1	# HANGUL SYLLABLE TIKEUT-EU-IEUNG
-0xB5EF	0xB4F8	# HANGUL SYLLABLE TIKEUT-YI
-0xB5F0	0xB514	# HANGUL SYLLABLE TIKEUT-I
-0xB5F1	0xB515	# HANGUL SYLLABLE TIKEUT-I-KIYEOK
-0xB5F2	0xB518	# HANGUL SYLLABLE TIKEUT-I-NIEUN
-0xB5F3	0xB51B	# HANGUL SYLLABLE TIKEUT-I-TIKEUT
-0xB5F4	0xB51C	# HANGUL SYLLABLE TIKEUT-I-RIEUL
-0xB5F5	0xB524	# HANGUL SYLLABLE TIKEUT-I-MIEUM
-0xB5F6	0xB525	# HANGUL SYLLABLE TIKEUT-I-PIEUP
-0xB5F7	0xB527	# HANGUL SYLLABLE TIKEUT-I-SIOS
-0xB5F8	0xB528	# HANGUL SYLLABLE TIKEUT-I-SSANGSIOS
-0xB5F9	0xB529	# HANGUL SYLLABLE TIKEUT-I-IEUNG
-0xB5FA	0xB52A	# HANGUL SYLLABLE TIKEUT-I-CIEUC
-0xB5FB	0xB530	# HANGUL SYLLABLE SSANGTIKEUT-A
-0xB5FC	0xB531	# HANGUL SYLLABLE SSANGTIKEUT-A-KIYEOK
-0xB5FD	0xB534	# HANGUL SYLLABLE SSANGTIKEUT-A-NIEUN
-0xB5FE	0xB538	# HANGUL SYLLABLE SSANGTIKEUT-A-RIEUL
-0xB641	0xD105	# HANGUL SYLLABLE THIEUTH-YA-RIEULTHIEUTH
-0xB642	0xD106	# HANGUL SYLLABLE THIEUTH-YA-RIEULPHIEUPH
-0xB643	0xD107	# HANGUL SYLLABLE THIEUTH-YA-RIEULHIEUH
-0xB644	0xD108	# HANGUL SYLLABLE THIEUTH-YA-MIEUM
-0xB645	0xD109	# HANGUL SYLLABLE THIEUTH-YA-PIEUP
-0xB646	0xD10A	# HANGUL SYLLABLE THIEUTH-YA-PIEUPSIOS
-0xB647	0xD10B	# HANGUL SYLLABLE THIEUTH-YA-SIOS
-0xB648	0xD10C	# HANGUL SYLLABLE THIEUTH-YA-SSANGSIOS
-0xB649	0xD10E	# HANGUL SYLLABLE THIEUTH-YA-CIEUC
-0xB64A	0xD10F	# HANGUL SYLLABLE THIEUTH-YA-CHIEUCH
-0xB64B	0xD110	# HANGUL SYLLABLE THIEUTH-YA-KHIEUKH
-0xB64C	0xD111	# HANGUL SYLLABLE THIEUTH-YA-THIEUTH
-0xB64D	0xD112	# HANGUL SYLLABLE THIEUTH-YA-PHIEUPH
-0xB64E	0xD113	# HANGUL SYLLABLE THIEUTH-YA-HIEUH
-0xB64F	0xD114	# HANGUL SYLLABLE THIEUTH-YAE
-0xB650	0xD115	# HANGUL SYLLABLE THIEUTH-YAE-KIYEOK
-0xB651	0xD116	# HANGUL SYLLABLE THIEUTH-YAE-SSANGKIYEOK
-0xB652	0xD117	# HANGUL SYLLABLE THIEUTH-YAE-KIYEOKSIOS
-0xB653	0xD118	# HANGUL SYLLABLE THIEUTH-YAE-NIEUN
-0xB654	0xD119	# HANGUL SYLLABLE THIEUTH-YAE-NIEUNCIEUC
-0xB655	0xD11A	# HANGUL SYLLABLE THIEUTH-YAE-NIEUNHIEUH
-0xB656	0xD11B	# HANGUL SYLLABLE THIEUTH-YAE-TIKEUT
-0xB657	0xD11C	# HANGUL SYLLABLE THIEUTH-YAE-RIEUL
-0xB658	0xD11D	# HANGUL SYLLABLE THIEUTH-YAE-RIEULKIYEOK
-0xB659	0xD11E	# HANGUL SYLLABLE THIEUTH-YAE-RIEULMIEUM
-0xB65A	0xD11F	# HANGUL SYLLABLE THIEUTH-YAE-RIEULPIEUP
-0xB661	0xD120	# HANGUL SYLLABLE THIEUTH-YAE-RIEULSIOS
-0xB662	0xD121	# HANGUL SYLLABLE THIEUTH-YAE-RIEULTHIEUTH
-0xB663	0xD122	# HANGUL SYLLABLE THIEUTH-YAE-RIEULPHIEUPH
-0xB664	0xD123	# HANGUL SYLLABLE THIEUTH-YAE-RIEULHIEUH
-0xB665	0xD124	# HANGUL SYLLABLE THIEUTH-YAE-MIEUM
-0xB666	0xD125	# HANGUL SYLLABLE THIEUTH-YAE-PIEUP
-0xB667	0xD126	# HANGUL SYLLABLE THIEUTH-YAE-PIEUPSIOS
-0xB668	0xD127	# HANGUL SYLLABLE THIEUTH-YAE-SIOS
-0xB669	0xD128	# HANGUL SYLLABLE THIEUTH-YAE-SSANGSIOS
-0xB66A	0xD129	# HANGUL SYLLABLE THIEUTH-YAE-IEUNG
-0xB66B	0xD12A	# HANGUL SYLLABLE THIEUTH-YAE-CIEUC
-0xB66C	0xD12B	# HANGUL SYLLABLE THIEUTH-YAE-CHIEUCH
-0xB66D	0xD12C	# HANGUL SYLLABLE THIEUTH-YAE-KHIEUKH
-0xB66E	0xD12D	# HANGUL SYLLABLE THIEUTH-YAE-THIEUTH
-0xB66F	0xD12E	# HANGUL SYLLABLE THIEUTH-YAE-PHIEUPH
-0xB670	0xD12F	# HANGUL SYLLABLE THIEUTH-YAE-HIEUH
-0xB671	0xD132	# HANGUL SYLLABLE THIEUTH-EO-SSANGKIYEOK
-0xB672	0xD133	# HANGUL SYLLABLE THIEUTH-EO-KIYEOKSIOS
-0xB673	0xD135	# HANGUL SYLLABLE THIEUTH-EO-NIEUNCIEUC
-0xB674	0xD136	# HANGUL SYLLABLE THIEUTH-EO-NIEUNHIEUH
-0xB675	0xD137	# HANGUL SYLLABLE THIEUTH-EO-TIKEUT
-0xB676	0xD139	# HANGUL SYLLABLE THIEUTH-EO-RIEULKIYEOK
-0xB677	0xD13B	# HANGUL SYLLABLE THIEUTH-EO-RIEULPIEUP
-0xB678	0xD13C	# HANGUL SYLLABLE THIEUTH-EO-RIEULSIOS
-0xB679	0xD13D	# HANGUL SYLLABLE THIEUTH-EO-RIEULTHIEUTH
-0xB67A	0xD13E	# HANGUL SYLLABLE THIEUTH-EO-RIEULPHIEUPH
-0xB681	0xD13F	# HANGUL SYLLABLE THIEUTH-EO-RIEULHIEUH
-0xB682	0xD142	# HANGUL SYLLABLE THIEUTH-EO-PIEUPSIOS
-0xB683	0xD146	# HANGUL SYLLABLE THIEUTH-EO-CIEUC
-0xB684	0xD147	# HANGUL SYLLABLE THIEUTH-EO-CHIEUCH
-0xB685	0xD148	# HANGUL SYLLABLE THIEUTH-EO-KHIEUKH
-0xB686	0xD149	# HANGUL SYLLABLE THIEUTH-EO-THIEUTH
-0xB687	0xD14A	# HANGUL SYLLABLE THIEUTH-EO-PHIEUPH
-0xB688	0xD14B	# HANGUL SYLLABLE THIEUTH-EO-HIEUH
-0xB689	0xD14E	# HANGUL SYLLABLE THIEUTH-E-SSANGKIYEOK
-0xB68A	0xD14F	# HANGUL SYLLABLE THIEUTH-E-KIYEOKSIOS
-0xB68B	0xD151	# HANGUL SYLLABLE THIEUTH-E-NIEUNCIEUC
-0xB68C	0xD152	# HANGUL SYLLABLE THIEUTH-E-NIEUNHIEUH
-0xB68D	0xD153	# HANGUL SYLLABLE THIEUTH-E-TIKEUT
-0xB68E	0xD155	# HANGUL SYLLABLE THIEUTH-E-RIEULKIYEOK
-0xB68F	0xD156	# HANGUL SYLLABLE THIEUTH-E-RIEULMIEUM
-0xB690	0xD157	# HANGUL SYLLABLE THIEUTH-E-RIEULPIEUP
-0xB691	0xD158	# HANGUL SYLLABLE THIEUTH-E-RIEULSIOS
-0xB692	0xD159	# HANGUL SYLLABLE THIEUTH-E-RIEULTHIEUTH
-0xB693	0xD15A	# HANGUL SYLLABLE THIEUTH-E-RIEULPHIEUPH
-0xB694	0xD15B	# HANGUL SYLLABLE THIEUTH-E-RIEULHIEUH
-0xB695	0xD15E	# HANGUL SYLLABLE THIEUTH-E-PIEUPSIOS
-0xB696	0xD160	# HANGUL SYLLABLE THIEUTH-E-SSANGSIOS
-0xB697	0xD162	# HANGUL SYLLABLE THIEUTH-E-CIEUC
-0xB698	0xD163	# HANGUL SYLLABLE THIEUTH-E-CHIEUCH
-0xB699	0xD164	# HANGUL SYLLABLE THIEUTH-E-KHIEUKH
-0xB69A	0xD165	# HANGUL SYLLABLE THIEUTH-E-THIEUTH
-0xB69B	0xD166	# HANGUL SYLLABLE THIEUTH-E-PHIEUPH
-0xB69C	0xD167	# HANGUL SYLLABLE THIEUTH-E-HIEUH
-0xB69D	0xD169	# HANGUL SYLLABLE THIEUTH-YEO-KIYEOK
-0xB69E	0xD16A	# HANGUL SYLLABLE THIEUTH-YEO-SSANGKIYEOK
-0xB69F	0xD16B	# HANGUL SYLLABLE THIEUTH-YEO-KIYEOKSIOS
-0xB6A0	0xD16D	# HANGUL SYLLABLE THIEUTH-YEO-NIEUNCIEUC
-0xB6A1	0xB540	# HANGUL SYLLABLE SSANGTIKEUT-A-MIEUM
-0xB6A2	0xB541	# HANGUL SYLLABLE SSANGTIKEUT-A-PIEUP
-0xB6A3	0xB543	# HANGUL SYLLABLE SSANGTIKEUT-A-SIOS
-0xB6A4	0xB544	# HANGUL SYLLABLE SSANGTIKEUT-A-SSANGSIOS
-0xB6A5	0xB545	# HANGUL SYLLABLE SSANGTIKEUT-A-IEUNG
-0xB6A6	0xB54B	# HANGUL SYLLABLE SSANGTIKEUT-A-HIEUH
-0xB6A7	0xB54C	# HANGUL SYLLABLE SSANGTIKEUT-AE
-0xB6A8	0xB54D	# HANGUL SYLLABLE SSANGTIKEUT-AE-KIYEOK
-0xB6A9	0xB550	# HANGUL SYLLABLE SSANGTIKEUT-AE-NIEUN
-0xB6AA	0xB554	# HANGUL SYLLABLE SSANGTIKEUT-AE-RIEUL
-0xB6AB	0xB55C	# HANGUL SYLLABLE SSANGTIKEUT-AE-MIEUM
-0xB6AC	0xB55D	# HANGUL SYLLABLE SSANGTIKEUT-AE-PIEUP
-0xB6AD	0xB55F	# HANGUL SYLLABLE SSANGTIKEUT-AE-SIOS
-0xB6AE	0xB560	# HANGUL SYLLABLE SSANGTIKEUT-AE-SSANGSIOS
-0xB6AF	0xB561	# HANGUL SYLLABLE SSANGTIKEUT-AE-IEUNG
-0xB6B0	0xB5A0	# HANGUL SYLLABLE SSANGTIKEUT-EO
-0xB6B1	0xB5A1	# HANGUL SYLLABLE SSANGTIKEUT-EO-KIYEOK
-0xB6B2	0xB5A4	# HANGUL SYLLABLE SSANGTIKEUT-EO-NIEUN
-0xB6B3	0xB5A8	# HANGUL SYLLABLE SSANGTIKEUT-EO-RIEUL
-0xB6B4	0xB5AA	# HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULMIEUM
-0xB6B5	0xB5AB	# HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULPIEUP
-0xB6B6	0xB5B0	# HANGUL SYLLABLE SSANGTIKEUT-EO-MIEUM
-0xB6B7	0xB5B1	# HANGUL SYLLABLE SSANGTIKEUT-EO-PIEUP
-0xB6B8	0xB5B3	# HANGUL SYLLABLE SSANGTIKEUT-EO-SIOS
-0xB6B9	0xB5B4	# HANGUL SYLLABLE SSANGTIKEUT-EO-SSANGSIOS
-0xB6BA	0xB5B5	# HANGUL SYLLABLE SSANGTIKEUT-EO-IEUNG
-0xB6BB	0xB5BB	# HANGUL SYLLABLE SSANGTIKEUT-EO-HIEUH
-0xB6BC	0xB5BC	# HANGUL SYLLABLE SSANGTIKEUT-E
-0xB6BD	0xB5BD	# HANGUL SYLLABLE SSANGTIKEUT-E-KIYEOK
-0xB6BE	0xB5C0	# HANGUL SYLLABLE SSANGTIKEUT-E-NIEUN
-0xB6BF	0xB5C4	# HANGUL SYLLABLE SSANGTIKEUT-E-RIEUL
-0xB6C0	0xB5CC	# HANGUL SYLLABLE SSANGTIKEUT-E-MIEUM
-0xB6C1	0xB5CD	# HANGUL SYLLABLE SSANGTIKEUT-E-PIEUP
-0xB6C2	0xB5CF	# HANGUL SYLLABLE SSANGTIKEUT-E-SIOS
-0xB6C3	0xB5D0	# HANGUL SYLLABLE SSANGTIKEUT-E-SSANGSIOS
-0xB6C4	0xB5D1	# HANGUL SYLLABLE SSANGTIKEUT-E-IEUNG
-0xB6C5	0xB5D8	# HANGUL SYLLABLE SSANGTIKEUT-YEO
-0xB6C6	0xB5EC	# HANGUL SYLLABLE SSANGTIKEUT-YEO-SSANGSIOS
-0xB6C7	0xB610	# HANGUL SYLLABLE SSANGTIKEUT-O
-0xB6C8	0xB611	# HANGUL SYLLABLE SSANGTIKEUT-O-KIYEOK
-0xB6C9	0xB614	# HANGUL SYLLABLE SSANGTIKEUT-O-NIEUN
-0xB6CA	0xB618	# HANGUL SYLLABLE SSANGTIKEUT-O-RIEUL
-0xB6CB	0xB625	# HANGUL SYLLABLE SSANGTIKEUT-O-IEUNG
-0xB6CC	0xB62C	# HANGUL SYLLABLE SSANGTIKEUT-WA
-0xB6CD	0xB634	# HANGUL SYLLABLE SSANGTIKEUT-WA-RIEUL
-0xB6CE	0xB648	# HANGUL SYLLABLE SSANGTIKEUT-WAE
-0xB6CF	0xB664	# HANGUL SYLLABLE SSANGTIKEUT-OE
-0xB6D0	0xB668	# HANGUL SYLLABLE SSANGTIKEUT-OE-NIEUN
-0xB6D1	0xB69C	# HANGUL SYLLABLE SSANGTIKEUT-U
-0xB6D2	0xB69D	# HANGUL SYLLABLE SSANGTIKEUT-U-KIYEOK
-0xB6D3	0xB6A0	# HANGUL SYLLABLE SSANGTIKEUT-U-NIEUN
-0xB6D4	0xB6A4	# HANGUL SYLLABLE SSANGTIKEUT-U-RIEUL
-0xB6D5	0xB6AB	# HANGUL SYLLABLE SSANGTIKEUT-U-RIEULHIEUH
-0xB6D6	0xB6AC	# HANGUL SYLLABLE SSANGTIKEUT-U-MIEUM
-0xB6D7	0xB6B1	# HANGUL SYLLABLE SSANGTIKEUT-U-IEUNG
-0xB6D8	0xB6D4	# HANGUL SYLLABLE SSANGTIKEUT-WE
-0xB6D9	0xB6F0	# HANGUL SYLLABLE SSANGTIKEUT-WI
-0xB6DA	0xB6F4	# HANGUL SYLLABLE SSANGTIKEUT-WI-NIEUN
-0xB6DB	0xB6F8	# HANGUL SYLLABLE SSANGTIKEUT-WI-RIEUL
-0xB6DC	0xB700	# HANGUL SYLLABLE SSANGTIKEUT-WI-MIEUM
-0xB6DD	0xB701	# HANGUL SYLLABLE SSANGTIKEUT-WI-PIEUP
-0xB6DE	0xB705	# HANGUL SYLLABLE SSANGTIKEUT-WI-IEUNG
-0xB6DF	0xB728	# HANGUL SYLLABLE SSANGTIKEUT-EU
-0xB6E0	0xB729	# HANGUL SYLLABLE SSANGTIKEUT-EU-KIYEOK
-0xB6E1	0xB72C	# HANGUL SYLLABLE SSANGTIKEUT-EU-NIEUN
-0xB6E2	0xB72F	# HANGUL SYLLABLE SSANGTIKEUT-EU-TIKEUT
-0xB6E3	0xB730	# HANGUL SYLLABLE SSANGTIKEUT-EU-RIEUL
-0xB6E4	0xB738	# HANGUL SYLLABLE SSANGTIKEUT-EU-MIEUM
-0xB6E5	0xB739	# HANGUL SYLLABLE SSANGTIKEUT-EU-PIEUP
-0xB6E6	0xB73B	# HANGUL SYLLABLE SSANGTIKEUT-EU-SIOS
-0xB6E7	0xB744	# HANGUL SYLLABLE SSANGTIKEUT-YI
-0xB6E8	0xB748	# HANGUL SYLLABLE SSANGTIKEUT-YI-NIEUN
-0xB6E9	0xB74C	# HANGUL SYLLABLE SSANGTIKEUT-YI-RIEUL
-0xB6EA	0xB754	# HANGUL SYLLABLE SSANGTIKEUT-YI-MIEUM
-0xB6EB	0xB755	# HANGUL SYLLABLE SSANGTIKEUT-YI-PIEUP
-0xB6EC	0xB760	# HANGUL SYLLABLE SSANGTIKEUT-I
-0xB6ED	0xB764	# HANGUL SYLLABLE SSANGTIKEUT-I-NIEUN
-0xB6EE	0xB768	# HANGUL SYLLABLE SSANGTIKEUT-I-RIEUL
-0xB6EF	0xB770	# HANGUL SYLLABLE SSANGTIKEUT-I-MIEUM
-0xB6F0	0xB771	# HANGUL SYLLABLE SSANGTIKEUT-I-PIEUP
-0xB6F1	0xB773	# HANGUL SYLLABLE SSANGTIKEUT-I-SIOS
-0xB6F2	0xB775	# HANGUL SYLLABLE SSANGTIKEUT-I-IEUNG
-0xB6F3	0xB77C	# HANGUL SYLLABLE RIEUL-A
-0xB6F4	0xB77D	# HANGUL SYLLABLE RIEUL-A-KIYEOK
-0xB6F5	0xB780	# HANGUL SYLLABLE RIEUL-A-NIEUN
-0xB6F6	0xB784	# HANGUL SYLLABLE RIEUL-A-RIEUL
-0xB6F7	0xB78C	# HANGUL SYLLABLE RIEUL-A-MIEUM
-0xB6F8	0xB78D	# HANGUL SYLLABLE RIEUL-A-PIEUP
-0xB6F9	0xB78F	# HANGUL SYLLABLE RIEUL-A-SIOS
-0xB6FA	0xB790	# HANGUL SYLLABLE RIEUL-A-SSANGSIOS
-0xB6FB	0xB791	# HANGUL SYLLABLE RIEUL-A-IEUNG
-0xB6FC	0xB792	# HANGUL SYLLABLE RIEUL-A-CIEUC
-0xB6FD	0xB796	# HANGUL SYLLABLE RIEUL-A-PHIEUPH
-0xB6FE	0xB797	# HANGUL SYLLABLE RIEUL-A-HIEUH
-0xB741	0xD16E	# HANGUL SYLLABLE THIEUTH-YEO-NIEUNHIEUH
-0xB742	0xD16F	# HANGUL SYLLABLE THIEUTH-YEO-TIKEUT
-0xB743	0xD170	# HANGUL SYLLABLE THIEUTH-YEO-RIEUL
-0xB744	0xD171	# HANGUL SYLLABLE THIEUTH-YEO-RIEULKIYEOK
-0xB745	0xD172	# HANGUL SYLLABLE THIEUTH-YEO-RIEULMIEUM
-0xB746	0xD173	# HANGUL SYLLABLE THIEUTH-YEO-RIEULPIEUP
-0xB747	0xD174	# HANGUL SYLLABLE THIEUTH-YEO-RIEULSIOS
-0xB748	0xD175	# HANGUL SYLLABLE THIEUTH-YEO-RIEULTHIEUTH
-0xB749	0xD176	# HANGUL SYLLABLE THIEUTH-YEO-RIEULPHIEUPH
-0xB74A	0xD177	# HANGUL SYLLABLE THIEUTH-YEO-RIEULHIEUH
-0xB74B	0xD178	# HANGUL SYLLABLE THIEUTH-YEO-MIEUM
-0xB74C	0xD179	# HANGUL SYLLABLE THIEUTH-YEO-PIEUP
-0xB74D	0xD17A	# HANGUL SYLLABLE THIEUTH-YEO-PIEUPSIOS
-0xB74E	0xD17B	# HANGUL SYLLABLE THIEUTH-YEO-SIOS
-0xB74F	0xD17D	# HANGUL SYLLABLE THIEUTH-YEO-IEUNG
-0xB750	0xD17E	# HANGUL SYLLABLE THIEUTH-YEO-CIEUC
-0xB751	0xD17F	# HANGUL SYLLABLE THIEUTH-YEO-CHIEUCH
-0xB752	0xD180	# HANGUL SYLLABLE THIEUTH-YEO-KHIEUKH
-0xB753	0xD181	# HANGUL SYLLABLE THIEUTH-YEO-THIEUTH
-0xB754	0xD182	# HANGUL SYLLABLE THIEUTH-YEO-PHIEUPH
-0xB755	0xD183	# HANGUL SYLLABLE THIEUTH-YEO-HIEUH
-0xB756	0xD185	# HANGUL SYLLABLE THIEUTH-YE-KIYEOK
-0xB757	0xD186	# HANGUL SYLLABLE THIEUTH-YE-SSANGKIYEOK
-0xB758	0xD187	# HANGUL SYLLABLE THIEUTH-YE-KIYEOKSIOS
-0xB759	0xD189	# HANGUL SYLLABLE THIEUTH-YE-NIEUNCIEUC
-0xB75A	0xD18A	# HANGUL SYLLABLE THIEUTH-YE-NIEUNHIEUH
-0xB761	0xD18B	# HANGUL SYLLABLE THIEUTH-YE-TIKEUT
-0xB762	0xD18C	# HANGUL SYLLABLE THIEUTH-YE-RIEUL
-0xB763	0xD18D	# HANGUL SYLLABLE THIEUTH-YE-RIEULKIYEOK
-0xB764	0xD18E	# HANGUL SYLLABLE THIEUTH-YE-RIEULMIEUM
-0xB765	0xD18F	# HANGUL SYLLABLE THIEUTH-YE-RIEULPIEUP
-0xB766	0xD190	# HANGUL SYLLABLE THIEUTH-YE-RIEULSIOS
-0xB767	0xD191	# HANGUL SYLLABLE THIEUTH-YE-RIEULTHIEUTH
-0xB768	0xD192	# HANGUL SYLLABLE THIEUTH-YE-RIEULPHIEUPH
-0xB769	0xD193	# HANGUL SYLLABLE THIEUTH-YE-RIEULHIEUH
-0xB76A	0xD194	# HANGUL SYLLABLE THIEUTH-YE-MIEUM
-0xB76B	0xD195	# HANGUL SYLLABLE THIEUTH-YE-PIEUP
-0xB76C	0xD196	# HANGUL SYLLABLE THIEUTH-YE-PIEUPSIOS
-0xB76D	0xD197	# HANGUL SYLLABLE THIEUTH-YE-SIOS
-0xB76E	0xD198	# HANGUL SYLLABLE THIEUTH-YE-SSANGSIOS
-0xB76F	0xD199	# HANGUL SYLLABLE THIEUTH-YE-IEUNG
-0xB770	0xD19A	# HANGUL SYLLABLE THIEUTH-YE-CIEUC
-0xB771	0xD19B	# HANGUL SYLLABLE THIEUTH-YE-CHIEUCH
-0xB772	0xD19C	# HANGUL SYLLABLE THIEUTH-YE-KHIEUKH
-0xB773	0xD19D	# HANGUL SYLLABLE THIEUTH-YE-THIEUTH
-0xB774	0xD19E	# HANGUL SYLLABLE THIEUTH-YE-PHIEUPH
-0xB775	0xD19F	# HANGUL SYLLABLE THIEUTH-YE-HIEUH
-0xB776	0xD1A2	# HANGUL SYLLABLE THIEUTH-O-SSANGKIYEOK
-0xB777	0xD1A3	# HANGUL SYLLABLE THIEUTH-O-KIYEOKSIOS
-0xB778	0xD1A5	# HANGUL SYLLABLE THIEUTH-O-NIEUNCIEUC
-0xB779	0xD1A6	# HANGUL SYLLABLE THIEUTH-O-NIEUNHIEUH
-0xB77A	0xD1A7	# HANGUL SYLLABLE THIEUTH-O-TIKEUT
-0xB781	0xD1A9	# HANGUL SYLLABLE THIEUTH-O-RIEULKIYEOK
-0xB782	0xD1AA	# HANGUL SYLLABLE THIEUTH-O-RIEULMIEUM
-0xB783	0xD1AB	# HANGUL SYLLABLE THIEUTH-O-RIEULPIEUP
-0xB784	0xD1AC	# HANGUL SYLLABLE THIEUTH-O-RIEULSIOS
-0xB785	0xD1AD	# HANGUL SYLLABLE THIEUTH-O-RIEULTHIEUTH
-0xB786	0xD1AE	# HANGUL SYLLABLE THIEUTH-O-RIEULPHIEUPH
-0xB787	0xD1AF	# HANGUL SYLLABLE THIEUTH-O-RIEULHIEUH
-0xB788	0xD1B2	# HANGUL SYLLABLE THIEUTH-O-PIEUPSIOS
-0xB789	0xD1B4	# HANGUL SYLLABLE THIEUTH-O-SSANGSIOS
-0xB78A	0xD1B6	# HANGUL SYLLABLE THIEUTH-O-CIEUC
-0xB78B	0xD1B7	# HANGUL SYLLABLE THIEUTH-O-CHIEUCH
-0xB78C	0xD1B8	# HANGUL SYLLABLE THIEUTH-O-KHIEUKH
-0xB78D	0xD1B9	# HANGUL SYLLABLE THIEUTH-O-THIEUTH
-0xB78E	0xD1BB	# HANGUL SYLLABLE THIEUTH-O-HIEUH
-0xB78F	0xD1BD	# HANGUL SYLLABLE THIEUTH-WA-KIYEOK
-0xB790	0xD1BE	# HANGUL SYLLABLE THIEUTH-WA-SSANGKIYEOK
-0xB791	0xD1BF	# HANGUL SYLLABLE THIEUTH-WA-KIYEOKSIOS
-0xB792	0xD1C1	# HANGUL SYLLABLE THIEUTH-WA-NIEUNCIEUC
-0xB793	0xD1C2	# HANGUL SYLLABLE THIEUTH-WA-NIEUNHIEUH
-0xB794	0xD1C3	# HANGUL SYLLABLE THIEUTH-WA-TIKEUT
-0xB795	0xD1C4	# HANGUL SYLLABLE THIEUTH-WA-RIEUL
-0xB796	0xD1C5	# HANGUL SYLLABLE THIEUTH-WA-RIEULKIYEOK
-0xB797	0xD1C6	# HANGUL SYLLABLE THIEUTH-WA-RIEULMIEUM
-0xB798	0xD1C7	# HANGUL SYLLABLE THIEUTH-WA-RIEULPIEUP
-0xB799	0xD1C8	# HANGUL SYLLABLE THIEUTH-WA-RIEULSIOS
-0xB79A	0xD1C9	# HANGUL SYLLABLE THIEUTH-WA-RIEULTHIEUTH
-0xB79B	0xD1CA	# HANGUL SYLLABLE THIEUTH-WA-RIEULPHIEUPH
-0xB79C	0xD1CB	# HANGUL SYLLABLE THIEUTH-WA-RIEULHIEUH
-0xB79D	0xD1CC	# HANGUL SYLLABLE THIEUTH-WA-MIEUM
-0xB79E	0xD1CD	# HANGUL SYLLABLE THIEUTH-WA-PIEUP
-0xB79F	0xD1CE	# HANGUL SYLLABLE THIEUTH-WA-PIEUPSIOS
-0xB7A0	0xD1CF	# HANGUL SYLLABLE THIEUTH-WA-SIOS
-0xB7A1	0xB798	# HANGUL SYLLABLE RIEUL-AE
-0xB7A2	0xB799	# HANGUL SYLLABLE RIEUL-AE-KIYEOK
-0xB7A3	0xB79C	# HANGUL SYLLABLE RIEUL-AE-NIEUN
-0xB7A4	0xB7A0	# HANGUL SYLLABLE RIEUL-AE-RIEUL
-0xB7A5	0xB7A8	# HANGUL SYLLABLE RIEUL-AE-MIEUM
-0xB7A6	0xB7A9	# HANGUL SYLLABLE RIEUL-AE-PIEUP
-0xB7A7	0xB7AB	# HANGUL SYLLABLE RIEUL-AE-SIOS
-0xB7A8	0xB7AC	# HANGUL SYLLABLE RIEUL-AE-SSANGSIOS
-0xB7A9	0xB7AD	# HANGUL SYLLABLE RIEUL-AE-IEUNG
-0xB7AA	0xB7B4	# HANGUL SYLLABLE RIEUL-YA
-0xB7AB	0xB7B5	# HANGUL SYLLABLE RIEUL-YA-KIYEOK
-0xB7AC	0xB7B8	# HANGUL SYLLABLE RIEUL-YA-NIEUN
-0xB7AD	0xB7C7	# HANGUL SYLLABLE RIEUL-YA-SIOS
-0xB7AE	0xB7C9	# HANGUL SYLLABLE RIEUL-YA-IEUNG
-0xB7AF	0xB7EC	# HANGUL SYLLABLE RIEUL-EO
-0xB7B0	0xB7ED	# HANGUL SYLLABLE RIEUL-EO-KIYEOK
-0xB7B1	0xB7F0	# HANGUL SYLLABLE RIEUL-EO-NIEUN
-0xB7B2	0xB7F4	# HANGUL SYLLABLE RIEUL-EO-RIEUL
-0xB7B3	0xB7FC	# HANGUL SYLLABLE RIEUL-EO-MIEUM
-0xB7B4	0xB7FD	# HANGUL SYLLABLE RIEUL-EO-PIEUP
-0xB7B5	0xB7FF	# HANGUL SYLLABLE RIEUL-EO-SIOS
-0xB7B6	0xB800	# HANGUL SYLLABLE RIEUL-EO-SSANGSIOS
-0xB7B7	0xB801	# HANGUL SYLLABLE RIEUL-EO-IEUNG
-0xB7B8	0xB807	# HANGUL SYLLABLE RIEUL-EO-HIEUH
-0xB7B9	0xB808	# HANGUL SYLLABLE RIEUL-E
-0xB7BA	0xB809	# HANGUL SYLLABLE RIEUL-E-KIYEOK
-0xB7BB	0xB80C	# HANGUL SYLLABLE RIEUL-E-NIEUN
-0xB7BC	0xB810	# HANGUL SYLLABLE RIEUL-E-RIEUL
-0xB7BD	0xB818	# HANGUL SYLLABLE RIEUL-E-MIEUM
-0xB7BE	0xB819	# HANGUL SYLLABLE RIEUL-E-PIEUP
-0xB7BF	0xB81B	# HANGUL SYLLABLE RIEUL-E-SIOS
-0xB7C0	0xB81D	# HANGUL SYLLABLE RIEUL-E-IEUNG
-0xB7C1	0xB824	# HANGUL SYLLABLE RIEUL-YEO
-0xB7C2	0xB825	# HANGUL SYLLABLE RIEUL-YEO-KIYEOK
-0xB7C3	0xB828	# HANGUL SYLLABLE RIEUL-YEO-NIEUN
-0xB7C4	0xB82C	# HANGUL SYLLABLE RIEUL-YEO-RIEUL
-0xB7C5	0xB834	# HANGUL SYLLABLE RIEUL-YEO-MIEUM
-0xB7C6	0xB835	# HANGUL SYLLABLE RIEUL-YEO-PIEUP
-0xB7C7	0xB837	# HANGUL SYLLABLE RIEUL-YEO-SIOS
-0xB7C8	0xB838	# HANGUL SYLLABLE RIEUL-YEO-SSANGSIOS
-0xB7C9	0xB839	# HANGUL SYLLABLE RIEUL-YEO-IEUNG
-0xB7CA	0xB840	# HANGUL SYLLABLE RIEUL-YE
-0xB7CB	0xB844	# HANGUL SYLLABLE RIEUL-YE-NIEUN
-0xB7CC	0xB851	# HANGUL SYLLABLE RIEUL-YE-PIEUP
-0xB7CD	0xB853	# HANGUL SYLLABLE RIEUL-YE-SIOS
-0xB7CE	0xB85C	# HANGUL SYLLABLE RIEUL-O
-0xB7CF	0xB85D	# HANGUL SYLLABLE RIEUL-O-KIYEOK
-0xB7D0	0xB860	# HANGUL SYLLABLE RIEUL-O-NIEUN
-0xB7D1	0xB864	# HANGUL SYLLABLE RIEUL-O-RIEUL
-0xB7D2	0xB86C	# HANGUL SYLLABLE RIEUL-O-MIEUM
-0xB7D3	0xB86D	# HANGUL SYLLABLE RIEUL-O-PIEUP
-0xB7D4	0xB86F	# HANGUL SYLLABLE RIEUL-O-SIOS
-0xB7D5	0xB871	# HANGUL SYLLABLE RIEUL-O-IEUNG
-0xB7D6	0xB878	# HANGUL SYLLABLE RIEUL-WA
-0xB7D7	0xB87C	# HANGUL SYLLABLE RIEUL-WA-NIEUN
-0xB7D8	0xB88D	# HANGUL SYLLABLE RIEUL-WA-IEUNG
-0xB7D9	0xB8A8	# HANGUL SYLLABLE RIEUL-WAE-SSANGSIOS
-0xB7DA	0xB8B0	# HANGUL SYLLABLE RIEUL-OE
-0xB7DB	0xB8B4	# HANGUL SYLLABLE RIEUL-OE-NIEUN
-0xB7DC	0xB8B8	# HANGUL SYLLABLE RIEUL-OE-RIEUL
-0xB7DD	0xB8C0	# HANGUL SYLLABLE RIEUL-OE-MIEUM
-0xB7DE	0xB8C1	# HANGUL SYLLABLE RIEUL-OE-PIEUP
-0xB7DF	0xB8C3	# HANGUL SYLLABLE RIEUL-OE-SIOS
-0xB7E0	0xB8C5	# HANGUL SYLLABLE RIEUL-OE-IEUNG
-0xB7E1	0xB8CC	# HANGUL SYLLABLE RIEUL-YO
-0xB7E2	0xB8D0	# HANGUL SYLLABLE RIEUL-YO-NIEUN
-0xB7E3	0xB8D4	# HANGUL SYLLABLE RIEUL-YO-RIEUL
-0xB7E4	0xB8DD	# HANGUL SYLLABLE RIEUL-YO-PIEUP
-0xB7E5	0xB8DF	# HANGUL SYLLABLE RIEUL-YO-SIOS
-0xB7E6	0xB8E1	# HANGUL SYLLABLE RIEUL-YO-IEUNG
-0xB7E7	0xB8E8	# HANGUL SYLLABLE RIEUL-U
-0xB7E8	0xB8E9	# HANGUL SYLLABLE RIEUL-U-KIYEOK
-0xB7E9	0xB8EC	# HANGUL SYLLABLE RIEUL-U-NIEUN
-0xB7EA	0xB8F0	# HANGUL SYLLABLE RIEUL-U-RIEUL
-0xB7EB	0xB8F8	# HANGUL SYLLABLE RIEUL-U-MIEUM
-0xB7EC	0xB8F9	# HANGUL SYLLABLE RIEUL-U-PIEUP
-0xB7ED	0xB8FB	# HANGUL SYLLABLE RIEUL-U-SIOS
-0xB7EE	0xB8FD	# HANGUL SYLLABLE RIEUL-U-IEUNG
-0xB7EF	0xB904	# HANGUL SYLLABLE RIEUL-WEO
-0xB7F0	0xB918	# HANGUL SYLLABLE RIEUL-WEO-SSANGSIOS
-0xB7F1	0xB920	# HANGUL SYLLABLE RIEUL-WE
-0xB7F2	0xB93C	# HANGUL SYLLABLE RIEUL-WI
-0xB7F3	0xB93D	# HANGUL SYLLABLE RIEUL-WI-KIYEOK
-0xB7F4	0xB940	# HANGUL SYLLABLE RIEUL-WI-NIEUN
-0xB7F5	0xB944	# HANGUL SYLLABLE RIEUL-WI-RIEUL
-0xB7F6	0xB94C	# HANGUL SYLLABLE RIEUL-WI-MIEUM
-0xB7F7	0xB94F	# HANGUL SYLLABLE RIEUL-WI-SIOS
-0xB7F8	0xB951	# HANGUL SYLLABLE RIEUL-WI-IEUNG
-0xB7F9	0xB958	# HANGUL SYLLABLE RIEUL-YU
-0xB7FA	0xB959	# HANGUL SYLLABLE RIEUL-YU-KIYEOK
-0xB7FB	0xB95C	# HANGUL SYLLABLE RIEUL-YU-NIEUN
-0xB7FC	0xB960	# HANGUL SYLLABLE RIEUL-YU-RIEUL
-0xB7FD	0xB968	# HANGUL SYLLABLE RIEUL-YU-MIEUM
-0xB7FE	0xB969	# HANGUL SYLLABLE RIEUL-YU-PIEUP
-0xB841	0xD1D0	# HANGUL SYLLABLE THIEUTH-WA-SSANGSIOS
-0xB842	0xD1D1	# HANGUL SYLLABLE THIEUTH-WA-IEUNG
-0xB843	0xD1D2	# HANGUL SYLLABLE THIEUTH-WA-CIEUC
-0xB844	0xD1D3	# HANGUL SYLLABLE THIEUTH-WA-CHIEUCH
-0xB845	0xD1D4	# HANGUL SYLLABLE THIEUTH-WA-KHIEUKH
-0xB846	0xD1D5	# HANGUL SYLLABLE THIEUTH-WA-THIEUTH
-0xB847	0xD1D6	# HANGUL SYLLABLE THIEUTH-WA-PHIEUPH
-0xB848	0xD1D7	# HANGUL SYLLABLE THIEUTH-WA-HIEUH
-0xB849	0xD1D9	# HANGUL SYLLABLE THIEUTH-WAE-KIYEOK
-0xB84A	0xD1DA	# HANGUL SYLLABLE THIEUTH-WAE-SSANGKIYEOK
-0xB84B	0xD1DB	# HANGUL SYLLABLE THIEUTH-WAE-KIYEOKSIOS
-0xB84C	0xD1DC	# HANGUL SYLLABLE THIEUTH-WAE-NIEUN
-0xB84D	0xD1DD	# HANGUL SYLLABLE THIEUTH-WAE-NIEUNCIEUC
-0xB84E	0xD1DE	# HANGUL SYLLABLE THIEUTH-WAE-NIEUNHIEUH
-0xB84F	0xD1DF	# HANGUL SYLLABLE THIEUTH-WAE-TIKEUT
-0xB850	0xD1E0	# HANGUL SYLLABLE THIEUTH-WAE-RIEUL
-0xB851	0xD1E1	# HANGUL SYLLABLE THIEUTH-WAE-RIEULKIYEOK
-0xB852	0xD1E2	# HANGUL SYLLABLE THIEUTH-WAE-RIEULMIEUM
-0xB853	0xD1E3	# HANGUL SYLLABLE THIEUTH-WAE-RIEULPIEUP
-0xB854	0xD1E4	# HANGUL SYLLABLE THIEUTH-WAE-RIEULSIOS
-0xB855	0xD1E5	# HANGUL SYLLABLE THIEUTH-WAE-RIEULTHIEUTH
-0xB856	0xD1E6	# HANGUL SYLLABLE THIEUTH-WAE-RIEULPHIEUPH
-0xB857	0xD1E7	# HANGUL SYLLABLE THIEUTH-WAE-RIEULHIEUH
-0xB858	0xD1E8	# HANGUL SYLLABLE THIEUTH-WAE-MIEUM
-0xB859	0xD1E9	# HANGUL SYLLABLE THIEUTH-WAE-PIEUP
-0xB85A	0xD1EA	# HANGUL SYLLABLE THIEUTH-WAE-PIEUPSIOS
-0xB861	0xD1EB	# HANGUL SYLLABLE THIEUTH-WAE-SIOS
-0xB862	0xD1EC	# HANGUL SYLLABLE THIEUTH-WAE-SSANGSIOS
-0xB863	0xD1ED	# HANGUL SYLLABLE THIEUTH-WAE-IEUNG
-0xB864	0xD1EE	# HANGUL SYLLABLE THIEUTH-WAE-CIEUC
-0xB865	0xD1EF	# HANGUL SYLLABLE THIEUTH-WAE-CHIEUCH
-0xB866	0xD1F0	# HANGUL SYLLABLE THIEUTH-WAE-KHIEUKH
-0xB867	0xD1F1	# HANGUL SYLLABLE THIEUTH-WAE-THIEUTH
-0xB868	0xD1F2	# HANGUL SYLLABLE THIEUTH-WAE-PHIEUPH
-0xB869	0xD1F3	# HANGUL SYLLABLE THIEUTH-WAE-HIEUH
-0xB86A	0xD1F5	# HANGUL SYLLABLE THIEUTH-OE-KIYEOK
-0xB86B	0xD1F6	# HANGUL SYLLABLE THIEUTH-OE-SSANGKIYEOK
-0xB86C	0xD1F7	# HANGUL SYLLABLE THIEUTH-OE-KIYEOKSIOS
-0xB86D	0xD1F9	# HANGUL SYLLABLE THIEUTH-OE-NIEUNCIEUC
-0xB86E	0xD1FA	# HANGUL SYLLABLE THIEUTH-OE-NIEUNHIEUH
-0xB86F	0xD1FB	# HANGUL SYLLABLE THIEUTH-OE-TIKEUT
-0xB870	0xD1FC	# HANGUL SYLLABLE THIEUTH-OE-RIEUL
-0xB871	0xD1FD	# HANGUL SYLLABLE THIEUTH-OE-RIEULKIYEOK
-0xB872	0xD1FE	# HANGUL SYLLABLE THIEUTH-OE-RIEULMIEUM
-0xB873	0xD1FF	# HANGUL SYLLABLE THIEUTH-OE-RIEULPIEUP
-0xB874	0xD200	# HANGUL SYLLABLE THIEUTH-OE-RIEULSIOS
-0xB875	0xD201	# HANGUL SYLLABLE THIEUTH-OE-RIEULTHIEUTH
-0xB876	0xD202	# HANGUL SYLLABLE THIEUTH-OE-RIEULPHIEUPH
-0xB877	0xD203	# HANGUL SYLLABLE THIEUTH-OE-RIEULHIEUH
-0xB878	0xD204	# HANGUL SYLLABLE THIEUTH-OE-MIEUM
-0xB879	0xD205	# HANGUL SYLLABLE THIEUTH-OE-PIEUP
-0xB87A	0xD206	# HANGUL SYLLABLE THIEUTH-OE-PIEUPSIOS
-0xB881	0xD208	# HANGUL SYLLABLE THIEUTH-OE-SSANGSIOS
-0xB882	0xD20A	# HANGUL SYLLABLE THIEUTH-OE-CIEUC
-0xB883	0xD20B	# HANGUL SYLLABLE THIEUTH-OE-CHIEUCH
-0xB884	0xD20C	# HANGUL SYLLABLE THIEUTH-OE-KHIEUKH
-0xB885	0xD20D	# HANGUL SYLLABLE THIEUTH-OE-THIEUTH
-0xB886	0xD20E	# HANGUL SYLLABLE THIEUTH-OE-PHIEUPH
-0xB887	0xD20F	# HANGUL SYLLABLE THIEUTH-OE-HIEUH
-0xB888	0xD211	# HANGUL SYLLABLE THIEUTH-YO-KIYEOK
-0xB889	0xD212	# HANGUL SYLLABLE THIEUTH-YO-SSANGKIYEOK
-0xB88A	0xD213	# HANGUL SYLLABLE THIEUTH-YO-KIYEOKSIOS
-0xB88B	0xD214	# HANGUL SYLLABLE THIEUTH-YO-NIEUN
-0xB88C	0xD215	# HANGUL SYLLABLE THIEUTH-YO-NIEUNCIEUC
-0xB88D	0xD216	# HANGUL SYLLABLE THIEUTH-YO-NIEUNHIEUH
-0xB88E	0xD217	# HANGUL SYLLABLE THIEUTH-YO-TIKEUT
-0xB88F	0xD218	# HANGUL SYLLABLE THIEUTH-YO-RIEUL
-0xB890	0xD219	# HANGUL SYLLABLE THIEUTH-YO-RIEULKIYEOK
-0xB891	0xD21A	# HANGUL SYLLABLE THIEUTH-YO-RIEULMIEUM
-0xB892	0xD21B	# HANGUL SYLLABLE THIEUTH-YO-RIEULPIEUP
-0xB893	0xD21C	# HANGUL SYLLABLE THIEUTH-YO-RIEULSIOS
-0xB894	0xD21D	# HANGUL SYLLABLE THIEUTH-YO-RIEULTHIEUTH
-0xB895	0xD21E	# HANGUL SYLLABLE THIEUTH-YO-RIEULPHIEUPH
-0xB896	0xD21F	# HANGUL SYLLABLE THIEUTH-YO-RIEULHIEUH
-0xB897	0xD220	# HANGUL SYLLABLE THIEUTH-YO-MIEUM
-0xB898	0xD221	# HANGUL SYLLABLE THIEUTH-YO-PIEUP
-0xB899	0xD222	# HANGUL SYLLABLE THIEUTH-YO-PIEUPSIOS
-0xB89A	0xD223	# HANGUL SYLLABLE THIEUTH-YO-SIOS
-0xB89B	0xD224	# HANGUL SYLLABLE THIEUTH-YO-SSANGSIOS
-0xB89C	0xD225	# HANGUL SYLLABLE THIEUTH-YO-IEUNG
-0xB89D	0xD226	# HANGUL SYLLABLE THIEUTH-YO-CIEUC
-0xB89E	0xD227	# HANGUL SYLLABLE THIEUTH-YO-CHIEUCH
-0xB89F	0xD228	# HANGUL SYLLABLE THIEUTH-YO-KHIEUKH
-0xB8A0	0xD229	# HANGUL SYLLABLE THIEUTH-YO-THIEUTH
-0xB8A1	0xB96B	# HANGUL SYLLABLE RIEUL-YU-SIOS
-0xB8A2	0xB96D	# HANGUL SYLLABLE RIEUL-YU-IEUNG
-0xB8A3	0xB974	# HANGUL SYLLABLE RIEUL-EU
-0xB8A4	0xB975	# HANGUL SYLLABLE RIEUL-EU-KIYEOK
-0xB8A5	0xB978	# HANGUL SYLLABLE RIEUL-EU-NIEUN
-0xB8A6	0xB97C	# HANGUL SYLLABLE RIEUL-EU-RIEUL
-0xB8A7	0xB984	# HANGUL SYLLABLE RIEUL-EU-MIEUM
-0xB8A8	0xB985	# HANGUL SYLLABLE RIEUL-EU-PIEUP
-0xB8A9	0xB987	# HANGUL SYLLABLE RIEUL-EU-SIOS
-0xB8AA	0xB989	# HANGUL SYLLABLE RIEUL-EU-IEUNG
-0xB8AB	0xB98A	# HANGUL SYLLABLE RIEUL-EU-CIEUC
-0xB8AC	0xB98D	# HANGUL SYLLABLE RIEUL-EU-THIEUTH
-0xB8AD	0xB98E	# HANGUL SYLLABLE RIEUL-EU-PHIEUPH
-0xB8AE	0xB9AC	# HANGUL SYLLABLE RIEUL-I
-0xB8AF	0xB9AD	# HANGUL SYLLABLE RIEUL-I-KIYEOK
-0xB8B0	0xB9B0	# HANGUL SYLLABLE RIEUL-I-NIEUN
-0xB8B1	0xB9B4	# HANGUL SYLLABLE RIEUL-I-RIEUL
-0xB8B2	0xB9BC	# HANGUL SYLLABLE RIEUL-I-MIEUM
-0xB8B3	0xB9BD	# HANGUL SYLLABLE RIEUL-I-PIEUP
-0xB8B4	0xB9BF	# HANGUL SYLLABLE RIEUL-I-SIOS
-0xB8B5	0xB9C1	# HANGUL SYLLABLE RIEUL-I-IEUNG
-0xB8B6	0xB9C8	# HANGUL SYLLABLE MIEUM-A
-0xB8B7	0xB9C9	# HANGUL SYLLABLE MIEUM-A-KIYEOK
-0xB8B8	0xB9CC	# HANGUL SYLLABLE MIEUM-A-NIEUN
-0xB8B9	0xB9CE	# HANGUL SYLLABLE MIEUM-A-NIEUNHIEUH
-0xB8BA	0xB9CF	# HANGUL SYLLABLE MIEUM-A-TIKEUT
-0xB8BB	0xB9D0	# HANGUL SYLLABLE MIEUM-A-RIEUL
-0xB8BC	0xB9D1	# HANGUL SYLLABLE MIEUM-A-RIEULKIYEOK
-0xB8BD	0xB9D2	# HANGUL SYLLABLE MIEUM-A-RIEULMIEUM
-0xB8BE	0xB9D8	# HANGUL SYLLABLE MIEUM-A-MIEUM
-0xB8BF	0xB9D9	# HANGUL SYLLABLE MIEUM-A-PIEUP
-0xB8C0	0xB9DB	# HANGUL SYLLABLE MIEUM-A-SIOS
-0xB8C1	0xB9DD	# HANGUL SYLLABLE MIEUM-A-IEUNG
-0xB8C2	0xB9DE	# HANGUL SYLLABLE MIEUM-A-CIEUC
-0xB8C3	0xB9E1	# HANGUL SYLLABLE MIEUM-A-THIEUTH
-0xB8C4	0xB9E3	# HANGUL SYLLABLE MIEUM-A-HIEUH
-0xB8C5	0xB9E4	# HANGUL SYLLABLE MIEUM-AE
-0xB8C6	0xB9E5	# HANGUL SYLLABLE MIEUM-AE-KIYEOK
-0xB8C7	0xB9E8	# HANGUL SYLLABLE MIEUM-AE-NIEUN
-0xB8C8	0xB9EC	# HANGUL SYLLABLE MIEUM-AE-RIEUL
-0xB8C9	0xB9F4	# HANGUL SYLLABLE MIEUM-AE-MIEUM
-0xB8CA	0xB9F5	# HANGUL SYLLABLE MIEUM-AE-PIEUP
-0xB8CB	0xB9F7	# HANGUL SYLLABLE MIEUM-AE-SIOS
-0xB8CC	0xB9F8	# HANGUL SYLLABLE MIEUM-AE-SSANGSIOS
-0xB8CD	0xB9F9	# HANGUL SYLLABLE MIEUM-AE-IEUNG
-0xB8CE	0xB9FA	# HANGUL SYLLABLE MIEUM-AE-CIEUC
-0xB8CF	0xBA00	# HANGUL SYLLABLE MIEUM-YA
-0xB8D0	0xBA01	# HANGUL SYLLABLE MIEUM-YA-KIYEOK
-0xB8D1	0xBA08	# HANGUL SYLLABLE MIEUM-YA-RIEUL
-0xB8D2	0xBA15	# HANGUL SYLLABLE MIEUM-YA-IEUNG
-0xB8D3	0xBA38	# HANGUL SYLLABLE MIEUM-EO
-0xB8D4	0xBA39	# HANGUL SYLLABLE MIEUM-EO-KIYEOK
-0xB8D5	0xBA3C	# HANGUL SYLLABLE MIEUM-EO-NIEUN
-0xB8D6	0xBA40	# HANGUL SYLLABLE MIEUM-EO-RIEUL
-0xB8D7	0xBA42	# HANGUL SYLLABLE MIEUM-EO-RIEULMIEUM
-0xB8D8	0xBA48	# HANGUL SYLLABLE MIEUM-EO-MIEUM
-0xB8D9	0xBA49	# HANGUL SYLLABLE MIEUM-EO-PIEUP
-0xB8DA	0xBA4B	# HANGUL SYLLABLE MIEUM-EO-SIOS
-0xB8DB	0xBA4D	# HANGUL SYLLABLE MIEUM-EO-IEUNG
-0xB8DC	0xBA4E	# HANGUL SYLLABLE MIEUM-EO-CIEUC
-0xB8DD	0xBA53	# HANGUL SYLLABLE MIEUM-EO-HIEUH
-0xB8DE	0xBA54	# HANGUL SYLLABLE MIEUM-E
-0xB8DF	0xBA55	# HANGUL SYLLABLE MIEUM-E-KIYEOK
-0xB8E0	0xBA58	# HANGUL SYLLABLE MIEUM-E-NIEUN
-0xB8E1	0xBA5C	# HANGUL SYLLABLE MIEUM-E-RIEUL
-0xB8E2	0xBA64	# HANGUL SYLLABLE MIEUM-E-MIEUM
-0xB8E3	0xBA65	# HANGUL SYLLABLE MIEUM-E-PIEUP
-0xB8E4	0xBA67	# HANGUL SYLLABLE MIEUM-E-SIOS
-0xB8E5	0xBA68	# HANGUL SYLLABLE MIEUM-E-SSANGSIOS
-0xB8E6	0xBA69	# HANGUL SYLLABLE MIEUM-E-IEUNG
-0xB8E7	0xBA70	# HANGUL SYLLABLE MIEUM-YEO
-0xB8E8	0xBA71	# HANGUL SYLLABLE MIEUM-YEO-KIYEOK
-0xB8E9	0xBA74	# HANGUL SYLLABLE MIEUM-YEO-NIEUN
-0xB8EA	0xBA78	# HANGUL SYLLABLE MIEUM-YEO-RIEUL
-0xB8EB	0xBA83	# HANGUL SYLLABLE MIEUM-YEO-SIOS
-0xB8EC	0xBA84	# HANGUL SYLLABLE MIEUM-YEO-SSANGSIOS
-0xB8ED	0xBA85	# HANGUL SYLLABLE MIEUM-YEO-IEUNG
-0xB8EE	0xBA87	# HANGUL SYLLABLE MIEUM-YEO-CHIEUCH
-0xB8EF	0xBA8C	# HANGUL SYLLABLE MIEUM-YE
-0xB8F0	0xBAA8	# HANGUL SYLLABLE MIEUM-O
-0xB8F1	0xBAA9	# HANGUL SYLLABLE MIEUM-O-KIYEOK
-0xB8F2	0xBAAB	# HANGUL SYLLABLE MIEUM-O-KIYEOKSIOS
-0xB8F3	0xBAAC	# HANGUL SYLLABLE MIEUM-O-NIEUN
-0xB8F4	0xBAB0	# HANGUL SYLLABLE MIEUM-O-RIEUL
-0xB8F5	0xBAB2	# HANGUL SYLLABLE MIEUM-O-RIEULMIEUM
-0xB8F6	0xBAB8	# HANGUL SYLLABLE MIEUM-O-MIEUM
-0xB8F7	0xBAB9	# HANGUL SYLLABLE MIEUM-O-PIEUP
-0xB8F8	0xBABB	# HANGUL SYLLABLE MIEUM-O-SIOS
-0xB8F9	0xBABD	# HANGUL SYLLABLE MIEUM-O-IEUNG
-0xB8FA	0xBAC4	# HANGUL SYLLABLE MIEUM-WA
-0xB8FB	0xBAC8	# HANGUL SYLLABLE MIEUM-WA-NIEUN
-0xB8FC	0xBAD8	# HANGUL SYLLABLE MIEUM-WA-SSANGSIOS
-0xB8FD	0xBAD9	# HANGUL SYLLABLE MIEUM-WA-IEUNG
-0xB8FE	0xBAFC	# HANGUL SYLLABLE MIEUM-OE
-0xB941	0xD22A	# HANGUL SYLLABLE THIEUTH-YO-PHIEUPH
-0xB942	0xD22B	# HANGUL SYLLABLE THIEUTH-YO-HIEUH
-0xB943	0xD22E	# HANGUL SYLLABLE THIEUTH-U-SSANGKIYEOK
-0xB944	0xD22F	# HANGUL SYLLABLE THIEUTH-U-KIYEOKSIOS
-0xB945	0xD231	# HANGUL SYLLABLE THIEUTH-U-NIEUNCIEUC
-0xB946	0xD232	# HANGUL SYLLABLE THIEUTH-U-NIEUNHIEUH
-0xB947	0xD233	# HANGUL SYLLABLE THIEUTH-U-TIKEUT
-0xB948	0xD235	# HANGUL SYLLABLE THIEUTH-U-RIEULKIYEOK
-0xB949	0xD236	# HANGUL SYLLABLE THIEUTH-U-RIEULMIEUM
-0xB94A	0xD237	# HANGUL SYLLABLE THIEUTH-U-RIEULPIEUP
-0xB94B	0xD238	# HANGUL SYLLABLE THIEUTH-U-RIEULSIOS
-0xB94C	0xD239	# HANGUL SYLLABLE THIEUTH-U-RIEULTHIEUTH
-0xB94D	0xD23A	# HANGUL SYLLABLE THIEUTH-U-RIEULPHIEUPH
-0xB94E	0xD23B	# HANGUL SYLLABLE THIEUTH-U-RIEULHIEUH
-0xB94F	0xD23E	# HANGUL SYLLABLE THIEUTH-U-PIEUPSIOS
-0xB950	0xD240	# HANGUL SYLLABLE THIEUTH-U-SSANGSIOS
-0xB951	0xD242	# HANGUL SYLLABLE THIEUTH-U-CIEUC
-0xB952	0xD243	# HANGUL SYLLABLE THIEUTH-U-CHIEUCH
-0xB953	0xD244	# HANGUL SYLLABLE THIEUTH-U-KHIEUKH
-0xB954	0xD245	# HANGUL SYLLABLE THIEUTH-U-THIEUTH
-0xB955	0xD246	# HANGUL SYLLABLE THIEUTH-U-PHIEUPH
-0xB956	0xD247	# HANGUL SYLLABLE THIEUTH-U-HIEUH
-0xB957	0xD249	# HANGUL SYLLABLE THIEUTH-WEO-KIYEOK
-0xB958	0xD24A	# HANGUL SYLLABLE THIEUTH-WEO-SSANGKIYEOK
-0xB959	0xD24B	# HANGUL SYLLABLE THIEUTH-WEO-KIYEOKSIOS
-0xB95A	0xD24C	# HANGUL SYLLABLE THIEUTH-WEO-NIEUN
-0xB961	0xD24D	# HANGUL SYLLABLE THIEUTH-WEO-NIEUNCIEUC
-0xB962	0xD24E	# HANGUL SYLLABLE THIEUTH-WEO-NIEUNHIEUH
-0xB963	0xD24F	# HANGUL SYLLABLE THIEUTH-WEO-TIKEUT
-0xB964	0xD250	# HANGUL SYLLABLE THIEUTH-WEO-RIEUL
-0xB965	0xD251	# HANGUL SYLLABLE THIEUTH-WEO-RIEULKIYEOK
-0xB966	0xD252	# HANGUL SYLLABLE THIEUTH-WEO-RIEULMIEUM
-0xB967	0xD253	# HANGUL SYLLABLE THIEUTH-WEO-RIEULPIEUP
-0xB968	0xD254	# HANGUL SYLLABLE THIEUTH-WEO-RIEULSIOS
-0xB969	0xD255	# HANGUL SYLLABLE THIEUTH-WEO-RIEULTHIEUTH
-0xB96A	0xD256	# HANGUL SYLLABLE THIEUTH-WEO-RIEULPHIEUPH
-0xB96B	0xD257	# HANGUL SYLLABLE THIEUTH-WEO-RIEULHIEUH
-0xB96C	0xD258	# HANGUL SYLLABLE THIEUTH-WEO-MIEUM
-0xB96D	0xD259	# HANGUL SYLLABLE THIEUTH-WEO-PIEUP
-0xB96E	0xD25A	# HANGUL SYLLABLE THIEUTH-WEO-PIEUPSIOS
-0xB96F	0xD25B	# HANGUL SYLLABLE THIEUTH-WEO-SIOS
-0xB970	0xD25D	# HANGUL SYLLABLE THIEUTH-WEO-IEUNG
-0xB971	0xD25E	# HANGUL SYLLABLE THIEUTH-WEO-CIEUC
-0xB972	0xD25F	# HANGUL SYLLABLE THIEUTH-WEO-CHIEUCH
-0xB973	0xD260	# HANGUL SYLLABLE THIEUTH-WEO-KHIEUKH
-0xB974	0xD261	# HANGUL SYLLABLE THIEUTH-WEO-THIEUTH
-0xB975	0xD262	# HANGUL SYLLABLE THIEUTH-WEO-PHIEUPH
-0xB976	0xD263	# HANGUL SYLLABLE THIEUTH-WEO-HIEUH
-0xB977	0xD265	# HANGUL SYLLABLE THIEUTH-WE-KIYEOK
-0xB978	0xD266	# HANGUL SYLLABLE THIEUTH-WE-SSANGKIYEOK
-0xB979	0xD267	# HANGUL SYLLABLE THIEUTH-WE-KIYEOKSIOS
-0xB97A	0xD268	# HANGUL SYLLABLE THIEUTH-WE-NIEUN
-0xB981	0xD269	# HANGUL SYLLABLE THIEUTH-WE-NIEUNCIEUC
-0xB982	0xD26A	# HANGUL SYLLABLE THIEUTH-WE-NIEUNHIEUH
-0xB983	0xD26B	# HANGUL SYLLABLE THIEUTH-WE-TIKEUT
-0xB984	0xD26C	# HANGUL SYLLABLE THIEUTH-WE-RIEUL
-0xB985	0xD26D	# HANGUL SYLLABLE THIEUTH-WE-RIEULKIYEOK
-0xB986	0xD26E	# HANGUL SYLLABLE THIEUTH-WE-RIEULMIEUM
-0xB987	0xD26F	# HANGUL SYLLABLE THIEUTH-WE-RIEULPIEUP
-0xB988	0xD270	# HANGUL SYLLABLE THIEUTH-WE-RIEULSIOS
-0xB989	0xD271	# HANGUL SYLLABLE THIEUTH-WE-RIEULTHIEUTH
-0xB98A	0xD272	# HANGUL SYLLABLE THIEUTH-WE-RIEULPHIEUPH
-0xB98B	0xD273	# HANGUL SYLLABLE THIEUTH-WE-RIEULHIEUH
-0xB98C	0xD274	# HANGUL SYLLABLE THIEUTH-WE-MIEUM
-0xB98D	0xD275	# HANGUL SYLLABLE THIEUTH-WE-PIEUP
-0xB98E	0xD276	# HANGUL SYLLABLE THIEUTH-WE-PIEUPSIOS
-0xB98F	0xD277	# HANGUL SYLLABLE THIEUTH-WE-SIOS
-0xB990	0xD278	# HANGUL SYLLABLE THIEUTH-WE-SSANGSIOS
-0xB991	0xD279	# HANGUL SYLLABLE THIEUTH-WE-IEUNG
-0xB992	0xD27A	# HANGUL SYLLABLE THIEUTH-WE-CIEUC
-0xB993	0xD27B	# HANGUL SYLLABLE THIEUTH-WE-CHIEUCH
-0xB994	0xD27C	# HANGUL SYLLABLE THIEUTH-WE-KHIEUKH
-0xB995	0xD27D	# HANGUL SYLLABLE THIEUTH-WE-THIEUTH
-0xB996	0xD27E	# HANGUL SYLLABLE THIEUTH-WE-PHIEUPH
-0xB997	0xD27F	# HANGUL SYLLABLE THIEUTH-WE-HIEUH
-0xB998	0xD282	# HANGUL SYLLABLE THIEUTH-WI-SSANGKIYEOK
-0xB999	0xD283	# HANGUL SYLLABLE THIEUTH-WI-KIYEOKSIOS
-0xB99A	0xD285	# HANGUL SYLLABLE THIEUTH-WI-NIEUNCIEUC
-0xB99B	0xD286	# HANGUL SYLLABLE THIEUTH-WI-NIEUNHIEUH
-0xB99C	0xD287	# HANGUL SYLLABLE THIEUTH-WI-TIKEUT
-0xB99D	0xD289	# HANGUL SYLLABLE THIEUTH-WI-RIEULKIYEOK
-0xB99E	0xD28A	# HANGUL SYLLABLE THIEUTH-WI-RIEULMIEUM
-0xB99F	0xD28B	# HANGUL SYLLABLE THIEUTH-WI-RIEULPIEUP
-0xB9A0	0xD28C	# HANGUL SYLLABLE THIEUTH-WI-RIEULSIOS
-0xB9A1	0xBB00	# HANGUL SYLLABLE MIEUM-OE-NIEUN
-0xB9A2	0xBB04	# HANGUL SYLLABLE MIEUM-OE-RIEUL
-0xB9A3	0xBB0D	# HANGUL SYLLABLE MIEUM-OE-PIEUP
-0xB9A4	0xBB0F	# HANGUL SYLLABLE MIEUM-OE-SIOS
-0xB9A5	0xBB11	# HANGUL SYLLABLE MIEUM-OE-IEUNG
-0xB9A6	0xBB18	# HANGUL SYLLABLE MIEUM-YO
-0xB9A7	0xBB1C	# HANGUL SYLLABLE MIEUM-YO-NIEUN
-0xB9A8	0xBB20	# HANGUL SYLLABLE MIEUM-YO-RIEUL
-0xB9A9	0xBB29	# HANGUL SYLLABLE MIEUM-YO-PIEUP
-0xB9AA	0xBB2B	# HANGUL SYLLABLE MIEUM-YO-SIOS
-0xB9AB	0xBB34	# HANGUL SYLLABLE MIEUM-U
-0xB9AC	0xBB35	# HANGUL SYLLABLE MIEUM-U-KIYEOK
-0xB9AD	0xBB36	# HANGUL SYLLABLE MIEUM-U-SSANGKIYEOK
-0xB9AE	0xBB38	# HANGUL SYLLABLE MIEUM-U-NIEUN
-0xB9AF	0xBB3B	# HANGUL SYLLABLE MIEUM-U-TIKEUT
-0xB9B0	0xBB3C	# HANGUL SYLLABLE MIEUM-U-RIEUL
-0xB9B1	0xBB3D	# HANGUL SYLLABLE MIEUM-U-RIEULKIYEOK
-0xB9B2	0xBB3E	# HANGUL SYLLABLE MIEUM-U-RIEULMIEUM
-0xB9B3	0xBB44	# HANGUL SYLLABLE MIEUM-U-MIEUM
-0xB9B4	0xBB45	# HANGUL SYLLABLE MIEUM-U-PIEUP
-0xB9B5	0xBB47	# HANGUL SYLLABLE MIEUM-U-SIOS
-0xB9B6	0xBB49	# HANGUL SYLLABLE MIEUM-U-IEUNG
-0xB9B7	0xBB4D	# HANGUL SYLLABLE MIEUM-U-THIEUTH
-0xB9B8	0xBB4F	# HANGUL SYLLABLE MIEUM-U-HIEUH
-0xB9B9	0xBB50	# HANGUL SYLLABLE MIEUM-WEO
-0xB9BA	0xBB54	# HANGUL SYLLABLE MIEUM-WEO-NIEUN
-0xB9BB	0xBB58	# HANGUL SYLLABLE MIEUM-WEO-RIEUL
-0xB9BC	0xBB61	# HANGUL SYLLABLE MIEUM-WEO-PIEUP
-0xB9BD	0xBB63	# HANGUL SYLLABLE MIEUM-WEO-SIOS
-0xB9BE	0xBB6C	# HANGUL SYLLABLE MIEUM-WE
-0xB9BF	0xBB88	# HANGUL SYLLABLE MIEUM-WI
-0xB9C0	0xBB8C	# HANGUL SYLLABLE MIEUM-WI-NIEUN
-0xB9C1	0xBB90	# HANGUL SYLLABLE MIEUM-WI-RIEUL
-0xB9C2	0xBBA4	# HANGUL SYLLABLE MIEUM-YU
-0xB9C3	0xBBA8	# HANGUL SYLLABLE MIEUM-YU-NIEUN
-0xB9C4	0xBBAC	# HANGUL SYLLABLE MIEUM-YU-RIEUL
-0xB9C5	0xBBB4	# HANGUL SYLLABLE MIEUM-YU-MIEUM
-0xB9C6	0xBBB7	# HANGUL SYLLABLE MIEUM-YU-SIOS
-0xB9C7	0xBBC0	# HANGUL SYLLABLE MIEUM-EU
-0xB9C8	0xBBC4	# HANGUL SYLLABLE MIEUM-EU-NIEUN
-0xB9C9	0xBBC8	# HANGUL SYLLABLE MIEUM-EU-RIEUL
-0xB9CA	0xBBD0	# HANGUL SYLLABLE MIEUM-EU-MIEUM
-0xB9CB	0xBBD3	# HANGUL SYLLABLE MIEUM-EU-SIOS
-0xB9CC	0xBBF8	# HANGUL SYLLABLE MIEUM-I
-0xB9CD	0xBBF9	# HANGUL SYLLABLE MIEUM-I-KIYEOK
-0xB9CE	0xBBFC	# HANGUL SYLLABLE MIEUM-I-NIEUN
-0xB9CF	0xBBFF	# HANGUL SYLLABLE MIEUM-I-TIKEUT
-0xB9D0	0xBC00	# HANGUL SYLLABLE MIEUM-I-RIEUL
-0xB9D1	0xBC02	# HANGUL SYLLABLE MIEUM-I-RIEULMIEUM
-0xB9D2	0xBC08	# HANGUL SYLLABLE MIEUM-I-MIEUM
-0xB9D3	0xBC09	# HANGUL SYLLABLE MIEUM-I-PIEUP
-0xB9D4	0xBC0B	# HANGUL SYLLABLE MIEUM-I-SIOS
-0xB9D5	0xBC0C	# HANGUL SYLLABLE MIEUM-I-SSANGSIOS
-0xB9D6	0xBC0D	# HANGUL SYLLABLE MIEUM-I-IEUNG
-0xB9D7	0xBC0F	# HANGUL SYLLABLE MIEUM-I-CHIEUCH
-0xB9D8	0xBC11	# HANGUL SYLLABLE MIEUM-I-THIEUTH
-0xB9D9	0xBC14	# HANGUL SYLLABLE PIEUP-A
-0xB9DA	0xBC15	# HANGUL SYLLABLE PIEUP-A-KIYEOK
-0xB9DB	0xBC16	# HANGUL SYLLABLE PIEUP-A-SSANGKIYEOK
-0xB9DC	0xBC17	# HANGUL SYLLABLE PIEUP-A-KIYEOKSIOS
-0xB9DD	0xBC18	# HANGUL SYLLABLE PIEUP-A-NIEUN
-0xB9DE	0xBC1B	# HANGUL SYLLABLE PIEUP-A-TIKEUT
-0xB9DF	0xBC1C	# HANGUL SYLLABLE PIEUP-A-RIEUL
-0xB9E0	0xBC1D	# HANGUL SYLLABLE PIEUP-A-RIEULKIYEOK
-0xB9E1	0xBC1E	# HANGUL SYLLABLE PIEUP-A-RIEULMIEUM
-0xB9E2	0xBC1F	# HANGUL SYLLABLE PIEUP-A-RIEULPIEUP
-0xB9E3	0xBC24	# HANGUL SYLLABLE PIEUP-A-MIEUM
-0xB9E4	0xBC25	# HANGUL SYLLABLE PIEUP-A-PIEUP
-0xB9E5	0xBC27	# HANGUL SYLLABLE PIEUP-A-SIOS
-0xB9E6	0xBC29	# HANGUL SYLLABLE PIEUP-A-IEUNG
-0xB9E7	0xBC2D	# HANGUL SYLLABLE PIEUP-A-THIEUTH
-0xB9E8	0xBC30	# HANGUL SYLLABLE PIEUP-AE
-0xB9E9	0xBC31	# HANGUL SYLLABLE PIEUP-AE-KIYEOK
-0xB9EA	0xBC34	# HANGUL SYLLABLE PIEUP-AE-NIEUN
-0xB9EB	0xBC38	# HANGUL SYLLABLE PIEUP-AE-RIEUL
-0xB9EC	0xBC40	# HANGUL SYLLABLE PIEUP-AE-MIEUM
-0xB9ED	0xBC41	# HANGUL SYLLABLE PIEUP-AE-PIEUP
-0xB9EE	0xBC43	# HANGUL SYLLABLE PIEUP-AE-SIOS
-0xB9EF	0xBC44	# HANGUL SYLLABLE PIEUP-AE-SSANGSIOS
-0xB9F0	0xBC45	# HANGUL SYLLABLE PIEUP-AE-IEUNG
-0xB9F1	0xBC49	# HANGUL SYLLABLE PIEUP-AE-THIEUTH
-0xB9F2	0xBC4C	# HANGUL SYLLABLE PIEUP-YA
-0xB9F3	0xBC4D	# HANGUL SYLLABLE PIEUP-YA-KIYEOK
-0xB9F4	0xBC50	# HANGUL SYLLABLE PIEUP-YA-NIEUN
-0xB9F5	0xBC5D	# HANGUL SYLLABLE PIEUP-YA-PIEUP
-0xB9F6	0xBC84	# HANGUL SYLLABLE PIEUP-EO
-0xB9F7	0xBC85	# HANGUL SYLLABLE PIEUP-EO-KIYEOK
-0xB9F8	0xBC88	# HANGUL SYLLABLE PIEUP-EO-NIEUN
-0xB9F9	0xBC8B	# HANGUL SYLLABLE PIEUP-EO-TIKEUT
-0xB9FA	0xBC8C	# HANGUL SYLLABLE PIEUP-EO-RIEUL
-0xB9FB	0xBC8E	# HANGUL SYLLABLE PIEUP-EO-RIEULMIEUM
-0xB9FC	0xBC94	# HANGUL SYLLABLE PIEUP-EO-MIEUM
-0xB9FD	0xBC95	# HANGUL SYLLABLE PIEUP-EO-PIEUP
-0xB9FE	0xBC97	# HANGUL SYLLABLE PIEUP-EO-SIOS
-0xBA41	0xD28D	# HANGUL SYLLABLE THIEUTH-WI-RIEULTHIEUTH
-0xBA42	0xD28E	# HANGUL SYLLABLE THIEUTH-WI-RIEULPHIEUPH
-0xBA43	0xD28F	# HANGUL SYLLABLE THIEUTH-WI-RIEULHIEUH
-0xBA44	0xD292	# HANGUL SYLLABLE THIEUTH-WI-PIEUPSIOS
-0xBA45	0xD293	# HANGUL SYLLABLE THIEUTH-WI-SIOS
-0xBA46	0xD294	# HANGUL SYLLABLE THIEUTH-WI-SSANGSIOS
-0xBA47	0xD296	# HANGUL SYLLABLE THIEUTH-WI-CIEUC
-0xBA48	0xD297	# HANGUL SYLLABLE THIEUTH-WI-CHIEUCH
-0xBA49	0xD298	# HANGUL SYLLABLE THIEUTH-WI-KHIEUKH
-0xBA4A	0xD299	# HANGUL SYLLABLE THIEUTH-WI-THIEUTH
-0xBA4B	0xD29A	# HANGUL SYLLABLE THIEUTH-WI-PHIEUPH
-0xBA4C	0xD29B	# HANGUL SYLLABLE THIEUTH-WI-HIEUH
-0xBA4D	0xD29D	# HANGUL SYLLABLE THIEUTH-YU-KIYEOK
-0xBA4E	0xD29E	# HANGUL SYLLABLE THIEUTH-YU-SSANGKIYEOK
-0xBA4F	0xD29F	# HANGUL SYLLABLE THIEUTH-YU-KIYEOKSIOS
-0xBA50	0xD2A1	# HANGUL SYLLABLE THIEUTH-YU-NIEUNCIEUC
-0xBA51	0xD2A2	# HANGUL SYLLABLE THIEUTH-YU-NIEUNHIEUH
-0xBA52	0xD2A3	# HANGUL SYLLABLE THIEUTH-YU-TIKEUT
-0xBA53	0xD2A5	# HANGUL SYLLABLE THIEUTH-YU-RIEULKIYEOK
-0xBA54	0xD2A6	# HANGUL SYLLABLE THIEUTH-YU-RIEULMIEUM
-0xBA55	0xD2A7	# HANGUL SYLLABLE THIEUTH-YU-RIEULPIEUP
-0xBA56	0xD2A8	# HANGUL SYLLABLE THIEUTH-YU-RIEULSIOS
-0xBA57	0xD2A9	# HANGUL SYLLABLE THIEUTH-YU-RIEULTHIEUTH
-0xBA58	0xD2AA	# HANGUL SYLLABLE THIEUTH-YU-RIEULPHIEUPH
-0xBA59	0xD2AB	# HANGUL SYLLABLE THIEUTH-YU-RIEULHIEUH
-0xBA5A	0xD2AD	# HANGUL SYLLABLE THIEUTH-YU-PIEUP
-0xBA61	0xD2AE	# HANGUL SYLLABLE THIEUTH-YU-PIEUPSIOS
-0xBA62	0xD2AF	# HANGUL SYLLABLE THIEUTH-YU-SIOS
-0xBA63	0xD2B0	# HANGUL SYLLABLE THIEUTH-YU-SSANGSIOS
-0xBA64	0xD2B2	# HANGUL SYLLABLE THIEUTH-YU-CIEUC
-0xBA65	0xD2B3	# HANGUL SYLLABLE THIEUTH-YU-CHIEUCH
-0xBA66	0xD2B4	# HANGUL SYLLABLE THIEUTH-YU-KHIEUKH
-0xBA67	0xD2B5	# HANGUL SYLLABLE THIEUTH-YU-THIEUTH
-0xBA68	0xD2B6	# HANGUL SYLLABLE THIEUTH-YU-PHIEUPH
-0xBA69	0xD2B7	# HANGUL SYLLABLE THIEUTH-YU-HIEUH
-0xBA6A	0xD2BA	# HANGUL SYLLABLE THIEUTH-EU-SSANGKIYEOK
-0xBA6B	0xD2BB	# HANGUL SYLLABLE THIEUTH-EU-KIYEOKSIOS
-0xBA6C	0xD2BD	# HANGUL SYLLABLE THIEUTH-EU-NIEUNCIEUC
-0xBA6D	0xD2BE	# HANGUL SYLLABLE THIEUTH-EU-NIEUNHIEUH
-0xBA6E	0xD2C1	# HANGUL SYLLABLE THIEUTH-EU-RIEULKIYEOK
-0xBA6F	0xD2C3	# HANGUL SYLLABLE THIEUTH-EU-RIEULPIEUP
-0xBA70	0xD2C4	# HANGUL SYLLABLE THIEUTH-EU-RIEULSIOS
-0xBA71	0xD2C5	# HANGUL SYLLABLE THIEUTH-EU-RIEULTHIEUTH
-0xBA72	0xD2C6	# HANGUL SYLLABLE THIEUTH-EU-RIEULPHIEUPH
-0xBA73	0xD2C7	# HANGUL SYLLABLE THIEUTH-EU-RIEULHIEUH
-0xBA74	0xD2CA	# HANGUL SYLLABLE THIEUTH-EU-PIEUPSIOS
-0xBA75	0xD2CC	# HANGUL SYLLABLE THIEUTH-EU-SSANGSIOS
-0xBA76	0xD2CD	# HANGUL SYLLABLE THIEUTH-EU-IEUNG
-0xBA77	0xD2CE	# HANGUL SYLLABLE THIEUTH-EU-CIEUC
-0xBA78	0xD2CF	# HANGUL SYLLABLE THIEUTH-EU-CHIEUCH
-0xBA79	0xD2D0	# HANGUL SYLLABLE THIEUTH-EU-KHIEUKH
-0xBA7A	0xD2D1	# HANGUL SYLLABLE THIEUTH-EU-THIEUTH
-0xBA81	0xD2D2	# HANGUL SYLLABLE THIEUTH-EU-PHIEUPH
-0xBA82	0xD2D3	# HANGUL SYLLABLE THIEUTH-EU-HIEUH
-0xBA83	0xD2D5	# HANGUL SYLLABLE THIEUTH-YI-KIYEOK
-0xBA84	0xD2D6	# HANGUL SYLLABLE THIEUTH-YI-SSANGKIYEOK
-0xBA85	0xD2D7	# HANGUL SYLLABLE THIEUTH-YI-KIYEOKSIOS
-0xBA86	0xD2D9	# HANGUL SYLLABLE THIEUTH-YI-NIEUNCIEUC
-0xBA87	0xD2DA	# HANGUL SYLLABLE THIEUTH-YI-NIEUNHIEUH
-0xBA88	0xD2DB	# HANGUL SYLLABLE THIEUTH-YI-TIKEUT
-0xBA89	0xD2DD	# HANGUL SYLLABLE THIEUTH-YI-RIEULKIYEOK
-0xBA8A	0xD2DE	# HANGUL SYLLABLE THIEUTH-YI-RIEULMIEUM
-0xBA8B	0xD2DF	# HANGUL SYLLABLE THIEUTH-YI-RIEULPIEUP
-0xBA8C	0xD2E0	# HANGUL SYLLABLE THIEUTH-YI-RIEULSIOS
-0xBA8D	0xD2E1	# HANGUL SYLLABLE THIEUTH-YI-RIEULTHIEUTH
-0xBA8E	0xD2E2	# HANGUL SYLLABLE THIEUTH-YI-RIEULPHIEUPH
-0xBA8F	0xD2E3	# HANGUL SYLLABLE THIEUTH-YI-RIEULHIEUH
-0xBA90	0xD2E6	# HANGUL SYLLABLE THIEUTH-YI-PIEUPSIOS
-0xBA91	0xD2E7	# HANGUL SYLLABLE THIEUTH-YI-SIOS
-0xBA92	0xD2E8	# HANGUL SYLLABLE THIEUTH-YI-SSANGSIOS
-0xBA93	0xD2E9	# HANGUL SYLLABLE THIEUTH-YI-IEUNG
-0xBA94	0xD2EA	# HANGUL SYLLABLE THIEUTH-YI-CIEUC
-0xBA95	0xD2EB	# HANGUL SYLLABLE THIEUTH-YI-CHIEUCH
-0xBA96	0xD2EC	# HANGUL SYLLABLE THIEUTH-YI-KHIEUKH
-0xBA97	0xD2ED	# HANGUL SYLLABLE THIEUTH-YI-THIEUTH
-0xBA98	0xD2EE	# HANGUL SYLLABLE THIEUTH-YI-PHIEUPH
-0xBA99	0xD2EF	# HANGUL SYLLABLE THIEUTH-YI-HIEUH
-0xBA9A	0xD2F2	# HANGUL SYLLABLE THIEUTH-I-SSANGKIYEOK
-0xBA9B	0xD2F3	# HANGUL SYLLABLE THIEUTH-I-KIYEOKSIOS
-0xBA9C	0xD2F5	# HANGUL SYLLABLE THIEUTH-I-NIEUNCIEUC
-0xBA9D	0xD2F6	# HANGUL SYLLABLE THIEUTH-I-NIEUNHIEUH
-0xBA9E	0xD2F7	# HANGUL SYLLABLE THIEUTH-I-TIKEUT
-0xBA9F	0xD2F9	# HANGUL SYLLABLE THIEUTH-I-RIEULKIYEOK
-0xBAA0	0xD2FA	# HANGUL SYLLABLE THIEUTH-I-RIEULMIEUM
-0xBAA1	0xBC99	# HANGUL SYLLABLE PIEUP-EO-IEUNG
-0xBAA2	0xBC9A	# HANGUL SYLLABLE PIEUP-EO-CIEUC
-0xBAA3	0xBCA0	# HANGUL SYLLABLE PIEUP-E
-0xBAA4	0xBCA1	# HANGUL SYLLABLE PIEUP-E-KIYEOK
-0xBAA5	0xBCA4	# HANGUL SYLLABLE PIEUP-E-NIEUN
-0xBAA6	0xBCA7	# HANGUL SYLLABLE PIEUP-E-TIKEUT
-0xBAA7	0xBCA8	# HANGUL SYLLABLE PIEUP-E-RIEUL
-0xBAA8	0xBCB0	# HANGUL SYLLABLE PIEUP-E-MIEUM
-0xBAA9	0xBCB1	# HANGUL SYLLABLE PIEUP-E-PIEUP
-0xBAAA	0xBCB3	# HANGUL SYLLABLE PIEUP-E-SIOS
-0xBAAB	0xBCB4	# HANGUL SYLLABLE PIEUP-E-SSANGSIOS
-0xBAAC	0xBCB5	# HANGUL SYLLABLE PIEUP-E-IEUNG
-0xBAAD	0xBCBC	# HANGUL SYLLABLE PIEUP-YEO
-0xBAAE	0xBCBD	# HANGUL SYLLABLE PIEUP-YEO-KIYEOK
-0xBAAF	0xBCC0	# HANGUL SYLLABLE PIEUP-YEO-NIEUN
-0xBAB0	0xBCC4	# HANGUL SYLLABLE PIEUP-YEO-RIEUL
-0xBAB1	0xBCCD	# HANGUL SYLLABLE PIEUP-YEO-PIEUP
-0xBAB2	0xBCCF	# HANGUL SYLLABLE PIEUP-YEO-SIOS
-0xBAB3	0xBCD0	# HANGUL SYLLABLE PIEUP-YEO-SSANGSIOS
-0xBAB4	0xBCD1	# HANGUL SYLLABLE PIEUP-YEO-IEUNG
-0xBAB5	0xBCD5	# HANGUL SYLLABLE PIEUP-YEO-THIEUTH
-0xBAB6	0xBCD8	# HANGUL SYLLABLE PIEUP-YE
-0xBAB7	0xBCDC	# HANGUL SYLLABLE PIEUP-YE-NIEUN
-0xBAB8	0xBCF4	# HANGUL SYLLABLE PIEUP-O
-0xBAB9	0xBCF5	# HANGUL SYLLABLE PIEUP-O-KIYEOK
-0xBABA	0xBCF6	# HANGUL SYLLABLE PIEUP-O-SSANGKIYEOK
-0xBABB	0xBCF8	# HANGUL SYLLABLE PIEUP-O-NIEUN
-0xBABC	0xBCFC	# HANGUL SYLLABLE PIEUP-O-RIEUL
-0xBABD	0xBD04	# HANGUL SYLLABLE PIEUP-O-MIEUM
-0xBABE	0xBD05	# HANGUL SYLLABLE PIEUP-O-PIEUP
-0xBABF	0xBD07	# HANGUL SYLLABLE PIEUP-O-SIOS
-0xBAC0	0xBD09	# HANGUL SYLLABLE PIEUP-O-IEUNG
-0xBAC1	0xBD10	# HANGUL SYLLABLE PIEUP-WA
-0xBAC2	0xBD14	# HANGUL SYLLABLE PIEUP-WA-NIEUN
-0xBAC3	0xBD24	# HANGUL SYLLABLE PIEUP-WA-SSANGSIOS
-0xBAC4	0xBD2C	# HANGUL SYLLABLE PIEUP-WAE
-0xBAC5	0xBD40	# HANGUL SYLLABLE PIEUP-WAE-SSANGSIOS
-0xBAC6	0xBD48	# HANGUL SYLLABLE PIEUP-OE
-0xBAC7	0xBD49	# HANGUL SYLLABLE PIEUP-OE-KIYEOK
-0xBAC8	0xBD4C	# HANGUL SYLLABLE PIEUP-OE-NIEUN
-0xBAC9	0xBD50	# HANGUL SYLLABLE PIEUP-OE-RIEUL
-0xBACA	0xBD58	# HANGUL SYLLABLE PIEUP-OE-MIEUM
-0xBACB	0xBD59	# HANGUL SYLLABLE PIEUP-OE-PIEUP
-0xBACC	0xBD64	# HANGUL SYLLABLE PIEUP-YO
-0xBACD	0xBD68	# HANGUL SYLLABLE PIEUP-YO-NIEUN
-0xBACE	0xBD80	# HANGUL SYLLABLE PIEUP-U
-0xBACF	0xBD81	# HANGUL SYLLABLE PIEUP-U-KIYEOK
-0xBAD0	0xBD84	# HANGUL SYLLABLE PIEUP-U-NIEUN
-0xBAD1	0xBD87	# HANGUL SYLLABLE PIEUP-U-TIKEUT
-0xBAD2	0xBD88	# HANGUL SYLLABLE PIEUP-U-RIEUL
-0xBAD3	0xBD89	# HANGUL SYLLABLE PIEUP-U-RIEULKIYEOK
-0xBAD4	0xBD8A	# HANGUL SYLLABLE PIEUP-U-RIEULMIEUM
-0xBAD5	0xBD90	# HANGUL SYLLABLE PIEUP-U-MIEUM
-0xBAD6	0xBD91	# HANGUL SYLLABLE PIEUP-U-PIEUP
-0xBAD7	0xBD93	# HANGUL SYLLABLE PIEUP-U-SIOS
-0xBAD8	0xBD95	# HANGUL SYLLABLE PIEUP-U-IEUNG
-0xBAD9	0xBD99	# HANGUL SYLLABLE PIEUP-U-THIEUTH
-0xBADA	0xBD9A	# HANGUL SYLLABLE PIEUP-U-PHIEUPH
-0xBADB	0xBD9C	# HANGUL SYLLABLE PIEUP-WEO
-0xBADC	0xBDA4	# HANGUL SYLLABLE PIEUP-WEO-RIEUL
-0xBADD	0xBDB0	# HANGUL SYLLABLE PIEUP-WEO-SSANGSIOS
-0xBADE	0xBDB8	# HANGUL SYLLABLE PIEUP-WE
-0xBADF	0xBDD4	# HANGUL SYLLABLE PIEUP-WI
-0xBAE0	0xBDD5	# HANGUL SYLLABLE PIEUP-WI-KIYEOK
-0xBAE1	0xBDD8	# HANGUL SYLLABLE PIEUP-WI-NIEUN
-0xBAE2	0xBDDC	# HANGUL SYLLABLE PIEUP-WI-RIEUL
-0xBAE3	0xBDE9	# HANGUL SYLLABLE PIEUP-WI-IEUNG
-0xBAE4	0xBDF0	# HANGUL SYLLABLE PIEUP-YU
-0xBAE5	0xBDF4	# HANGUL SYLLABLE PIEUP-YU-NIEUN
-0xBAE6	0xBDF8	# HANGUL SYLLABLE PIEUP-YU-RIEUL
-0xBAE7	0xBE00	# HANGUL SYLLABLE PIEUP-YU-MIEUM
-0xBAE8	0xBE03	# HANGUL SYLLABLE PIEUP-YU-SIOS
-0xBAE9	0xBE05	# HANGUL SYLLABLE PIEUP-YU-IEUNG
-0xBAEA	0xBE0C	# HANGUL SYLLABLE PIEUP-EU
-0xBAEB	0xBE0D	# HANGUL SYLLABLE PIEUP-EU-KIYEOK
-0xBAEC	0xBE10	# HANGUL SYLLABLE PIEUP-EU-NIEUN
-0xBAED	0xBE14	# HANGUL SYLLABLE PIEUP-EU-RIEUL
-0xBAEE	0xBE1C	# HANGUL SYLLABLE PIEUP-EU-MIEUM
-0xBAEF	0xBE1D	# HANGUL SYLLABLE PIEUP-EU-PIEUP
-0xBAF0	0xBE1F	# HANGUL SYLLABLE PIEUP-EU-SIOS
-0xBAF1	0xBE44	# HANGUL SYLLABLE PIEUP-I
-0xBAF2	0xBE45	# HANGUL SYLLABLE PIEUP-I-KIYEOK
-0xBAF3	0xBE48	# HANGUL SYLLABLE PIEUP-I-NIEUN
-0xBAF4	0xBE4C	# HANGUL SYLLABLE PIEUP-I-RIEUL
-0xBAF5	0xBE4E	# HANGUL SYLLABLE PIEUP-I-RIEULMIEUM
-0xBAF6	0xBE54	# HANGUL SYLLABLE PIEUP-I-MIEUM
-0xBAF7	0xBE55	# HANGUL SYLLABLE PIEUP-I-PIEUP
-0xBAF8	0xBE57	# HANGUL SYLLABLE PIEUP-I-SIOS
-0xBAF9	0xBE59	# HANGUL SYLLABLE PIEUP-I-IEUNG
-0xBAFA	0xBE5A	# HANGUL SYLLABLE PIEUP-I-CIEUC
-0xBAFB	0xBE5B	# HANGUL SYLLABLE PIEUP-I-CHIEUCH
-0xBAFC	0xBE60	# HANGUL SYLLABLE SSANGPIEUP-A
-0xBAFD	0xBE61	# HANGUL SYLLABLE SSANGPIEUP-A-KIYEOK
-0xBAFE	0xBE64	# HANGUL SYLLABLE SSANGPIEUP-A-NIEUN
-0xBB41	0xD2FB	# HANGUL SYLLABLE THIEUTH-I-RIEULPIEUP
-0xBB42	0xD2FC	# HANGUL SYLLABLE THIEUTH-I-RIEULSIOS
-0xBB43	0xD2FD	# HANGUL SYLLABLE THIEUTH-I-RIEULTHIEUTH
-0xBB44	0xD2FE	# HANGUL SYLLABLE THIEUTH-I-RIEULPHIEUPH
-0xBB45	0xD2FF	# HANGUL SYLLABLE THIEUTH-I-RIEULHIEUH
-0xBB46	0xD302	# HANGUL SYLLABLE THIEUTH-I-PIEUPSIOS
-0xBB47	0xD304	# HANGUL SYLLABLE THIEUTH-I-SSANGSIOS
-0xBB48	0xD306	# HANGUL SYLLABLE THIEUTH-I-CIEUC
-0xBB49	0xD307	# HANGUL SYLLABLE THIEUTH-I-CHIEUCH
-0xBB4A	0xD308	# HANGUL SYLLABLE THIEUTH-I-KHIEUKH
-0xBB4B	0xD309	# HANGUL SYLLABLE THIEUTH-I-THIEUTH
-0xBB4C	0xD30A	# HANGUL SYLLABLE THIEUTH-I-PHIEUPH
-0xBB4D	0xD30B	# HANGUL SYLLABLE THIEUTH-I-HIEUH
-0xBB4E	0xD30F	# HANGUL SYLLABLE PHIEUPH-A-KIYEOKSIOS
-0xBB4F	0xD311	# HANGUL SYLLABLE PHIEUPH-A-NIEUNCIEUC
-0xBB50	0xD312	# HANGUL SYLLABLE PHIEUPH-A-NIEUNHIEUH
-0xBB51	0xD313	# HANGUL SYLLABLE PHIEUPH-A-TIKEUT
-0xBB52	0xD315	# HANGUL SYLLABLE PHIEUPH-A-RIEULKIYEOK
-0xBB53	0xD317	# HANGUL SYLLABLE PHIEUPH-A-RIEULPIEUP
-0xBB54	0xD318	# HANGUL SYLLABLE PHIEUPH-A-RIEULSIOS
-0xBB55	0xD319	# HANGUL SYLLABLE PHIEUPH-A-RIEULTHIEUTH
-0xBB56	0xD31A	# HANGUL SYLLABLE PHIEUPH-A-RIEULPHIEUPH
-0xBB57	0xD31B	# HANGUL SYLLABLE PHIEUPH-A-RIEULHIEUH
-0xBB58	0xD31E	# HANGUL SYLLABLE PHIEUPH-A-PIEUPSIOS
-0xBB59	0xD322	# HANGUL SYLLABLE PHIEUPH-A-CIEUC
-0xBB5A	0xD323	# HANGUL SYLLABLE PHIEUPH-A-CHIEUCH
-0xBB61	0xD324	# HANGUL SYLLABLE PHIEUPH-A-KHIEUKH
-0xBB62	0xD326	# HANGUL SYLLABLE PHIEUPH-A-PHIEUPH
-0xBB63	0xD327	# HANGUL SYLLABLE PHIEUPH-A-HIEUH
-0xBB64	0xD32A	# HANGUL SYLLABLE PHIEUPH-AE-SSANGKIYEOK
-0xBB65	0xD32B	# HANGUL SYLLABLE PHIEUPH-AE-KIYEOKSIOS
-0xBB66	0xD32D	# HANGUL SYLLABLE PHIEUPH-AE-NIEUNCIEUC
-0xBB67	0xD32E	# HANGUL SYLLABLE PHIEUPH-AE-NIEUNHIEUH
-0xBB68	0xD32F	# HANGUL SYLLABLE PHIEUPH-AE-TIKEUT
-0xBB69	0xD331	# HANGUL SYLLABLE PHIEUPH-AE-RIEULKIYEOK
-0xBB6A	0xD332	# HANGUL SYLLABLE PHIEUPH-AE-RIEULMIEUM
-0xBB6B	0xD333	# HANGUL SYLLABLE PHIEUPH-AE-RIEULPIEUP
-0xBB6C	0xD334	# HANGUL SYLLABLE PHIEUPH-AE-RIEULSIOS
-0xBB6D	0xD335	# HANGUL SYLLABLE PHIEUPH-AE-RIEULTHIEUTH
-0xBB6E	0xD336	# HANGUL SYLLABLE PHIEUPH-AE-RIEULPHIEUPH
-0xBB6F	0xD337	# HANGUL SYLLABLE PHIEUPH-AE-RIEULHIEUH
-0xBB70	0xD33A	# HANGUL SYLLABLE PHIEUPH-AE-PIEUPSIOS
-0xBB71	0xD33E	# HANGUL SYLLABLE PHIEUPH-AE-CIEUC
-0xBB72	0xD33F	# HANGUL SYLLABLE PHIEUPH-AE-CHIEUCH
-0xBB73	0xD340	# HANGUL SYLLABLE PHIEUPH-AE-KHIEUKH
-0xBB74	0xD341	# HANGUL SYLLABLE PHIEUPH-AE-THIEUTH
-0xBB75	0xD342	# HANGUL SYLLABLE PHIEUPH-AE-PHIEUPH
-0xBB76	0xD343	# HANGUL SYLLABLE PHIEUPH-AE-HIEUH
-0xBB77	0xD346	# HANGUL SYLLABLE PHIEUPH-YA-SSANGKIYEOK
-0xBB78	0xD347	# HANGUL SYLLABLE PHIEUPH-YA-KIYEOKSIOS
-0xBB79	0xD348	# HANGUL SYLLABLE PHIEUPH-YA-NIEUN
-0xBB7A	0xD349	# HANGUL SYLLABLE PHIEUPH-YA-NIEUNCIEUC
-0xBB81	0xD34A	# HANGUL SYLLABLE PHIEUPH-YA-NIEUNHIEUH
-0xBB82	0xD34B	# HANGUL SYLLABLE PHIEUPH-YA-TIKEUT
-0xBB83	0xD34C	# HANGUL SYLLABLE PHIEUPH-YA-RIEUL
-0xBB84	0xD34D	# HANGUL SYLLABLE PHIEUPH-YA-RIEULKIYEOK
-0xBB85	0xD34E	# HANGUL SYLLABLE PHIEUPH-YA-RIEULMIEUM
-0xBB86	0xD34F	# HANGUL SYLLABLE PHIEUPH-YA-RIEULPIEUP
-0xBB87	0xD350	# HANGUL SYLLABLE PHIEUPH-YA-RIEULSIOS
-0xBB88	0xD351	# HANGUL SYLLABLE PHIEUPH-YA-RIEULTHIEUTH
-0xBB89	0xD352	# HANGUL SYLLABLE PHIEUPH-YA-RIEULPHIEUPH
-0xBB8A	0xD353	# HANGUL SYLLABLE PHIEUPH-YA-RIEULHIEUH
-0xBB8B	0xD354	# HANGUL SYLLABLE PHIEUPH-YA-MIEUM
-0xBB8C	0xD355	# HANGUL SYLLABLE PHIEUPH-YA-PIEUP
-0xBB8D	0xD356	# HANGUL SYLLABLE PHIEUPH-YA-PIEUPSIOS
-0xBB8E	0xD357	# HANGUL SYLLABLE PHIEUPH-YA-SIOS
-0xBB8F	0xD358	# HANGUL SYLLABLE PHIEUPH-YA-SSANGSIOS
-0xBB90	0xD359	# HANGUL SYLLABLE PHIEUPH-YA-IEUNG
-0xBB91	0xD35A	# HANGUL SYLLABLE PHIEUPH-YA-CIEUC
-0xBB92	0xD35B	# HANGUL SYLLABLE PHIEUPH-YA-CHIEUCH
-0xBB93	0xD35C	# HANGUL SYLLABLE PHIEUPH-YA-KHIEUKH
-0xBB94	0xD35D	# HANGUL SYLLABLE PHIEUPH-YA-THIEUTH
-0xBB95	0xD35E	# HANGUL SYLLABLE PHIEUPH-YA-PHIEUPH
-0xBB96	0xD35F	# HANGUL SYLLABLE PHIEUPH-YA-HIEUH
-0xBB97	0xD360	# HANGUL SYLLABLE PHIEUPH-YAE
-0xBB98	0xD361	# HANGUL SYLLABLE PHIEUPH-YAE-KIYEOK
-0xBB99	0xD362	# HANGUL SYLLABLE PHIEUPH-YAE-SSANGKIYEOK
-0xBB9A	0xD363	# HANGUL SYLLABLE PHIEUPH-YAE-KIYEOKSIOS
-0xBB9B	0xD364	# HANGUL SYLLABLE PHIEUPH-YAE-NIEUN
-0xBB9C	0xD365	# HANGUL SYLLABLE PHIEUPH-YAE-NIEUNCIEUC
-0xBB9D	0xD366	# HANGUL SYLLABLE PHIEUPH-YAE-NIEUNHIEUH
-0xBB9E	0xD367	# HANGUL SYLLABLE PHIEUPH-YAE-TIKEUT
-0xBB9F	0xD368	# HANGUL SYLLABLE PHIEUPH-YAE-RIEUL
-0xBBA0	0xD369	# HANGUL SYLLABLE PHIEUPH-YAE-RIEULKIYEOK
-0xBBA1	0xBE68	# HANGUL SYLLABLE SSANGPIEUP-A-RIEUL
-0xBBA2	0xBE6A	# HANGUL SYLLABLE SSANGPIEUP-A-RIEULMIEUM
-0xBBA3	0xBE70	# HANGUL SYLLABLE SSANGPIEUP-A-MIEUM
-0xBBA4	0xBE71	# HANGUL SYLLABLE SSANGPIEUP-A-PIEUP
-0xBBA5	0xBE73	# HANGUL SYLLABLE SSANGPIEUP-A-SIOS
-0xBBA6	0xBE74	# HANGUL SYLLABLE SSANGPIEUP-A-SSANGSIOS
-0xBBA7	0xBE75	# HANGUL SYLLABLE SSANGPIEUP-A-IEUNG
-0xBBA8	0xBE7B	# HANGUL SYLLABLE SSANGPIEUP-A-HIEUH
-0xBBA9	0xBE7C	# HANGUL SYLLABLE SSANGPIEUP-AE
-0xBBAA	0xBE7D	# HANGUL SYLLABLE SSANGPIEUP-AE-KIYEOK
-0xBBAB	0xBE80	# HANGUL SYLLABLE SSANGPIEUP-AE-NIEUN
-0xBBAC	0xBE84	# HANGUL SYLLABLE SSANGPIEUP-AE-RIEUL
-0xBBAD	0xBE8C	# HANGUL SYLLABLE SSANGPIEUP-AE-MIEUM
-0xBBAE	0xBE8D	# HANGUL SYLLABLE SSANGPIEUP-AE-PIEUP
-0xBBAF	0xBE8F	# HANGUL SYLLABLE SSANGPIEUP-AE-SIOS
-0xBBB0	0xBE90	# HANGUL SYLLABLE SSANGPIEUP-AE-SSANGSIOS
-0xBBB1	0xBE91	# HANGUL SYLLABLE SSANGPIEUP-AE-IEUNG
-0xBBB2	0xBE98	# HANGUL SYLLABLE SSANGPIEUP-YA
-0xBBB3	0xBE99	# HANGUL SYLLABLE SSANGPIEUP-YA-KIYEOK
-0xBBB4	0xBEA8	# HANGUL SYLLABLE SSANGPIEUP-YA-MIEUM
-0xBBB5	0xBED0	# HANGUL SYLLABLE SSANGPIEUP-EO
-0xBBB6	0xBED1	# HANGUL SYLLABLE SSANGPIEUP-EO-KIYEOK
-0xBBB7	0xBED4	# HANGUL SYLLABLE SSANGPIEUP-EO-NIEUN
-0xBBB8	0xBED7	# HANGUL SYLLABLE SSANGPIEUP-EO-TIKEUT
-0xBBB9	0xBED8	# HANGUL SYLLABLE SSANGPIEUP-EO-RIEUL
-0xBBBA	0xBEE0	# HANGUL SYLLABLE SSANGPIEUP-EO-MIEUM
-0xBBBB	0xBEE3	# HANGUL SYLLABLE SSANGPIEUP-EO-SIOS
-0xBBBC	0xBEE4	# HANGUL SYLLABLE SSANGPIEUP-EO-SSANGSIOS
-0xBBBD	0xBEE5	# HANGUL SYLLABLE SSANGPIEUP-EO-IEUNG
-0xBBBE	0xBEEC	# HANGUL SYLLABLE SSANGPIEUP-E
-0xBBBF	0xBF01	# HANGUL SYLLABLE SSANGPIEUP-E-IEUNG
-0xBBC0	0xBF08	# HANGUL SYLLABLE SSANGPIEUP-YEO
-0xBBC1	0xBF09	# HANGUL SYLLABLE SSANGPIEUP-YEO-KIYEOK
-0xBBC2	0xBF18	# HANGUL SYLLABLE SSANGPIEUP-YEO-MIEUM
-0xBBC3	0xBF19	# HANGUL SYLLABLE SSANGPIEUP-YEO-PIEUP
-0xBBC4	0xBF1B	# HANGUL SYLLABLE SSANGPIEUP-YEO-SIOS
-0xBBC5	0xBF1C	# HANGUL SYLLABLE SSANGPIEUP-YEO-SSANGSIOS
-0xBBC6	0xBF1D	# HANGUL SYLLABLE SSANGPIEUP-YEO-IEUNG
-0xBBC7	0xBF40	# HANGUL SYLLABLE SSANGPIEUP-O
-0xBBC8	0xBF41	# HANGUL SYLLABLE SSANGPIEUP-O-KIYEOK
-0xBBC9	0xBF44	# HANGUL SYLLABLE SSANGPIEUP-O-NIEUN
-0xBBCA	0xBF48	# HANGUL SYLLABLE SSANGPIEUP-O-RIEUL
-0xBBCB	0xBF50	# HANGUL SYLLABLE SSANGPIEUP-O-MIEUM
-0xBBCC	0xBF51	# HANGUL SYLLABLE SSANGPIEUP-O-PIEUP
-0xBBCD	0xBF55	# HANGUL SYLLABLE SSANGPIEUP-O-IEUNG
-0xBBCE	0xBF94	# HANGUL SYLLABLE SSANGPIEUP-OE
-0xBBCF	0xBFB0	# HANGUL SYLLABLE SSANGPIEUP-YO
-0xBBD0	0xBFC5	# HANGUL SYLLABLE SSANGPIEUP-YO-IEUNG
-0xBBD1	0xBFCC	# HANGUL SYLLABLE SSANGPIEUP-U
-0xBBD2	0xBFCD	# HANGUL SYLLABLE SSANGPIEUP-U-KIYEOK
-0xBBD3	0xBFD0	# HANGUL SYLLABLE SSANGPIEUP-U-NIEUN
-0xBBD4	0xBFD4	# HANGUL SYLLABLE SSANGPIEUP-U-RIEUL
-0xBBD5	0xBFDC	# HANGUL SYLLABLE SSANGPIEUP-U-MIEUM
-0xBBD6	0xBFDF	# HANGUL SYLLABLE SSANGPIEUP-U-SIOS
-0xBBD7	0xBFE1	# HANGUL SYLLABLE SSANGPIEUP-U-IEUNG
-0xBBD8	0xC03C	# HANGUL SYLLABLE SSANGPIEUP-YU
-0xBBD9	0xC051	# HANGUL SYLLABLE SSANGPIEUP-YU-IEUNG
-0xBBDA	0xC058	# HANGUL SYLLABLE SSANGPIEUP-EU
-0xBBDB	0xC05C	# HANGUL SYLLABLE SSANGPIEUP-EU-NIEUN
-0xBBDC	0xC060	# HANGUL SYLLABLE SSANGPIEUP-EU-RIEUL
-0xBBDD	0xC068	# HANGUL SYLLABLE SSANGPIEUP-EU-MIEUM
-0xBBDE	0xC069	# HANGUL SYLLABLE SSANGPIEUP-EU-PIEUP
-0xBBDF	0xC090	# HANGUL SYLLABLE SSANGPIEUP-I
-0xBBE0	0xC091	# HANGUL SYLLABLE SSANGPIEUP-I-KIYEOK
-0xBBE1	0xC094	# HANGUL SYLLABLE SSANGPIEUP-I-NIEUN
-0xBBE2	0xC098	# HANGUL SYLLABLE SSANGPIEUP-I-RIEUL
-0xBBE3	0xC0A0	# HANGUL SYLLABLE SSANGPIEUP-I-MIEUM
-0xBBE4	0xC0A1	# HANGUL SYLLABLE SSANGPIEUP-I-PIEUP
-0xBBE5	0xC0A3	# HANGUL SYLLABLE SSANGPIEUP-I-SIOS
-0xBBE6	0xC0A5	# HANGUL SYLLABLE SSANGPIEUP-I-IEUNG
-0xBBE7	0xC0AC	# HANGUL SYLLABLE SIOS-A
-0xBBE8	0xC0AD	# HANGUL SYLLABLE SIOS-A-KIYEOK
-0xBBE9	0xC0AF	# HANGUL SYLLABLE SIOS-A-KIYEOKSIOS
-0xBBEA	0xC0B0	# HANGUL SYLLABLE SIOS-A-NIEUN
-0xBBEB	0xC0B3	# HANGUL SYLLABLE SIOS-A-TIKEUT
-0xBBEC	0xC0B4	# HANGUL SYLLABLE SIOS-A-RIEUL
-0xBBED	0xC0B5	# HANGUL SYLLABLE SIOS-A-RIEULKIYEOK
-0xBBEE	0xC0B6	# HANGUL SYLLABLE SIOS-A-RIEULMIEUM
-0xBBEF	0xC0BC	# HANGUL SYLLABLE SIOS-A-MIEUM
-0xBBF0	0xC0BD	# HANGUL SYLLABLE SIOS-A-PIEUP
-0xBBF1	0xC0BF	# HANGUL SYLLABLE SIOS-A-SIOS
-0xBBF2	0xC0C0	# HANGUL SYLLABLE SIOS-A-SSANGSIOS
-0xBBF3	0xC0C1	# HANGUL SYLLABLE SIOS-A-IEUNG
-0xBBF4	0xC0C5	# HANGUL SYLLABLE SIOS-A-THIEUTH
-0xBBF5	0xC0C8	# HANGUL SYLLABLE SIOS-AE
-0xBBF6	0xC0C9	# HANGUL SYLLABLE SIOS-AE-KIYEOK
-0xBBF7	0xC0CC	# HANGUL SYLLABLE SIOS-AE-NIEUN
-0xBBF8	0xC0D0	# HANGUL SYLLABLE SIOS-AE-RIEUL
-0xBBF9	0xC0D8	# HANGUL SYLLABLE SIOS-AE-MIEUM
-0xBBFA	0xC0D9	# HANGUL SYLLABLE SIOS-AE-PIEUP
-0xBBFB	0xC0DB	# HANGUL SYLLABLE SIOS-AE-SIOS
-0xBBFC	0xC0DC	# HANGUL SYLLABLE SIOS-AE-SSANGSIOS
-0xBBFD	0xC0DD	# HANGUL SYLLABLE SIOS-AE-IEUNG
-0xBBFE	0xC0E4	# HANGUL SYLLABLE SIOS-YA
-0xBC41	0xD36A	# HANGUL SYLLABLE PHIEUPH-YAE-RIEULMIEUM
-0xBC42	0xD36B	# HANGUL SYLLABLE PHIEUPH-YAE-RIEULPIEUP
-0xBC43	0xD36C	# HANGUL SYLLABLE PHIEUPH-YAE-RIEULSIOS
-0xBC44	0xD36D	# HANGUL SYLLABLE PHIEUPH-YAE-RIEULTHIEUTH
-0xBC45	0xD36E	# HANGUL SYLLABLE PHIEUPH-YAE-RIEULPHIEUPH
-0xBC46	0xD36F	# HANGUL SYLLABLE PHIEUPH-YAE-RIEULHIEUH
-0xBC47	0xD370	# HANGUL SYLLABLE PHIEUPH-YAE-MIEUM
-0xBC48	0xD371	# HANGUL SYLLABLE PHIEUPH-YAE-PIEUP
-0xBC49	0xD372	# HANGUL SYLLABLE PHIEUPH-YAE-PIEUPSIOS
-0xBC4A	0xD373	# HANGUL SYLLABLE PHIEUPH-YAE-SIOS
-0xBC4B	0xD374	# HANGUL SYLLABLE PHIEUPH-YAE-SSANGSIOS
-0xBC4C	0xD375	# HANGUL SYLLABLE PHIEUPH-YAE-IEUNG
-0xBC4D	0xD376	# HANGUL SYLLABLE PHIEUPH-YAE-CIEUC
-0xBC4E	0xD377	# HANGUL SYLLABLE PHIEUPH-YAE-CHIEUCH
-0xBC4F	0xD378	# HANGUL SYLLABLE PHIEUPH-YAE-KHIEUKH
-0xBC50	0xD379	# HANGUL SYLLABLE PHIEUPH-YAE-THIEUTH
-0xBC51	0xD37A	# HANGUL SYLLABLE PHIEUPH-YAE-PHIEUPH
-0xBC52	0xD37B	# HANGUL SYLLABLE PHIEUPH-YAE-HIEUH
-0xBC53	0xD37E	# HANGUL SYLLABLE PHIEUPH-EO-SSANGKIYEOK
-0xBC54	0xD37F	# HANGUL SYLLABLE PHIEUPH-EO-KIYEOKSIOS
-0xBC55	0xD381	# HANGUL SYLLABLE PHIEUPH-EO-NIEUNCIEUC
-0xBC56	0xD382	# HANGUL SYLLABLE PHIEUPH-EO-NIEUNHIEUH
-0xBC57	0xD383	# HANGUL SYLLABLE PHIEUPH-EO-TIKEUT
-0xBC58	0xD385	# HANGUL SYLLABLE PHIEUPH-EO-RIEULKIYEOK
-0xBC59	0xD386	# HANGUL SYLLABLE PHIEUPH-EO-RIEULMIEUM
-0xBC5A	0xD387	# HANGUL SYLLABLE PHIEUPH-EO-RIEULPIEUP
-0xBC61	0xD388	# HANGUL SYLLABLE PHIEUPH-EO-RIEULSIOS
-0xBC62	0xD389	# HANGUL SYLLABLE PHIEUPH-EO-RIEULTHIEUTH
-0xBC63	0xD38A	# HANGUL SYLLABLE PHIEUPH-EO-RIEULPHIEUPH
-0xBC64	0xD38B	# HANGUL SYLLABLE PHIEUPH-EO-RIEULHIEUH
-0xBC65	0xD38E	# HANGUL SYLLABLE PHIEUPH-EO-PIEUPSIOS
-0xBC66	0xD392	# HANGUL SYLLABLE PHIEUPH-EO-CIEUC
-0xBC67	0xD393	# HANGUL SYLLABLE PHIEUPH-EO-CHIEUCH
-0xBC68	0xD394	# HANGUL SYLLABLE PHIEUPH-EO-KHIEUKH
-0xBC69	0xD395	# HANGUL SYLLABLE PHIEUPH-EO-THIEUTH
-0xBC6A	0xD396	# HANGUL SYLLABLE PHIEUPH-EO-PHIEUPH
-0xBC6B	0xD397	# HANGUL SYLLABLE PHIEUPH-EO-HIEUH
-0xBC6C	0xD39A	# HANGUL SYLLABLE PHIEUPH-E-SSANGKIYEOK
-0xBC6D	0xD39B	# HANGUL SYLLABLE PHIEUPH-E-KIYEOKSIOS
-0xBC6E	0xD39D	# HANGUL SYLLABLE PHIEUPH-E-NIEUNCIEUC
-0xBC6F	0xD39E	# HANGUL SYLLABLE PHIEUPH-E-NIEUNHIEUH
-0xBC70	0xD39F	# HANGUL SYLLABLE PHIEUPH-E-TIKEUT
-0xBC71	0xD3A1	# HANGUL SYLLABLE PHIEUPH-E-RIEULKIYEOK
-0xBC72	0xD3A2	# HANGUL SYLLABLE PHIEUPH-E-RIEULMIEUM
-0xBC73	0xD3A3	# HANGUL SYLLABLE PHIEUPH-E-RIEULPIEUP
-0xBC74	0xD3A4	# HANGUL SYLLABLE PHIEUPH-E-RIEULSIOS
-0xBC75	0xD3A5	# HANGUL SYLLABLE PHIEUPH-E-RIEULTHIEUTH
-0xBC76	0xD3A6	# HANGUL SYLLABLE PHIEUPH-E-RIEULPHIEUPH
-0xBC77	0xD3A7	# HANGUL SYLLABLE PHIEUPH-E-RIEULHIEUH
-0xBC78	0xD3AA	# HANGUL SYLLABLE PHIEUPH-E-PIEUPSIOS
-0xBC79	0xD3AC	# HANGUL SYLLABLE PHIEUPH-E-SSANGSIOS
-0xBC7A	0xD3AE	# HANGUL SYLLABLE PHIEUPH-E-CIEUC
-0xBC81	0xD3AF	# HANGUL SYLLABLE PHIEUPH-E-CHIEUCH
-0xBC82	0xD3B0	# HANGUL SYLLABLE PHIEUPH-E-KHIEUKH
-0xBC83	0xD3B1	# HANGUL SYLLABLE PHIEUPH-E-THIEUTH
-0xBC84	0xD3B2	# HANGUL SYLLABLE PHIEUPH-E-PHIEUPH
-0xBC85	0xD3B3	# HANGUL SYLLABLE PHIEUPH-E-HIEUH
-0xBC86	0xD3B5	# HANGUL SYLLABLE PHIEUPH-YEO-KIYEOK
-0xBC87	0xD3B6	# HANGUL SYLLABLE PHIEUPH-YEO-SSANGKIYEOK
-0xBC88	0xD3B7	# HANGUL SYLLABLE PHIEUPH-YEO-KIYEOKSIOS
-0xBC89	0xD3B9	# HANGUL SYLLABLE PHIEUPH-YEO-NIEUNCIEUC
-0xBC8A	0xD3BA	# HANGUL SYLLABLE PHIEUPH-YEO-NIEUNHIEUH
-0xBC8B	0xD3BB	# HANGUL SYLLABLE PHIEUPH-YEO-TIKEUT
-0xBC8C	0xD3BD	# HANGUL SYLLABLE PHIEUPH-YEO-RIEULKIYEOK
-0xBC8D	0xD3BE	# HANGUL SYLLABLE PHIEUPH-YEO-RIEULMIEUM
-0xBC8E	0xD3BF	# HANGUL SYLLABLE PHIEUPH-YEO-RIEULPIEUP
-0xBC8F	0xD3C0	# HANGUL SYLLABLE PHIEUPH-YEO-RIEULSIOS
-0xBC90	0xD3C1	# HANGUL SYLLABLE PHIEUPH-YEO-RIEULTHIEUTH
-0xBC91	0xD3C2	# HANGUL SYLLABLE PHIEUPH-YEO-RIEULPHIEUPH
-0xBC92	0xD3C3	# HANGUL SYLLABLE PHIEUPH-YEO-RIEULHIEUH
-0xBC93	0xD3C6	# HANGUL SYLLABLE PHIEUPH-YEO-PIEUPSIOS
-0xBC94	0xD3C7	# HANGUL SYLLABLE PHIEUPH-YEO-SIOS
-0xBC95	0xD3CA	# HANGUL SYLLABLE PHIEUPH-YEO-CIEUC
-0xBC96	0xD3CB	# HANGUL SYLLABLE PHIEUPH-YEO-CHIEUCH
-0xBC97	0xD3CC	# HANGUL SYLLABLE PHIEUPH-YEO-KHIEUKH
-0xBC98	0xD3CD	# HANGUL SYLLABLE PHIEUPH-YEO-THIEUTH
-0xBC99	0xD3CE	# HANGUL SYLLABLE PHIEUPH-YEO-PHIEUPH
-0xBC9A	0xD3CF	# HANGUL SYLLABLE PHIEUPH-YEO-HIEUH
-0xBC9B	0xD3D1	# HANGUL SYLLABLE PHIEUPH-YE-KIYEOK
-0xBC9C	0xD3D2	# HANGUL SYLLABLE PHIEUPH-YE-SSANGKIYEOK
-0xBC9D	0xD3D3	# HANGUL SYLLABLE PHIEUPH-YE-KIYEOKSIOS
-0xBC9E	0xD3D4	# HANGUL SYLLABLE PHIEUPH-YE-NIEUN
-0xBC9F	0xD3D5	# HANGUL SYLLABLE PHIEUPH-YE-NIEUNCIEUC
-0xBCA0	0xD3D6	# HANGUL SYLLABLE PHIEUPH-YE-NIEUNHIEUH
-0xBCA1	0xC0E5	# HANGUL SYLLABLE SIOS-YA-KIYEOK
-0xBCA2	0xC0E8	# HANGUL SYLLABLE SIOS-YA-NIEUN
-0xBCA3	0xC0EC	# HANGUL SYLLABLE SIOS-YA-RIEUL
-0xBCA4	0xC0F4	# HANGUL SYLLABLE SIOS-YA-MIEUM
-0xBCA5	0xC0F5	# HANGUL SYLLABLE SIOS-YA-PIEUP
-0xBCA6	0xC0F7	# HANGUL SYLLABLE SIOS-YA-SIOS
-0xBCA7	0xC0F9	# HANGUL SYLLABLE SIOS-YA-IEUNG
-0xBCA8	0xC100	# HANGUL SYLLABLE SIOS-YAE
-0xBCA9	0xC104	# HANGUL SYLLABLE SIOS-YAE-NIEUN
-0xBCAA	0xC108	# HANGUL SYLLABLE SIOS-YAE-RIEUL
-0xBCAB	0xC110	# HANGUL SYLLABLE SIOS-YAE-MIEUM
-0xBCAC	0xC115	# HANGUL SYLLABLE SIOS-YAE-IEUNG
-0xBCAD	0xC11C	# HANGUL SYLLABLE SIOS-EO
-0xBCAE	0xC11D	# HANGUL SYLLABLE SIOS-EO-KIYEOK
-0xBCAF	0xC11E	# HANGUL SYLLABLE SIOS-EO-SSANGKIYEOK
-0xBCB0	0xC11F	# HANGUL SYLLABLE SIOS-EO-KIYEOKSIOS
-0xBCB1	0xC120	# HANGUL SYLLABLE SIOS-EO-NIEUN
-0xBCB2	0xC123	# HANGUL SYLLABLE SIOS-EO-TIKEUT
-0xBCB3	0xC124	# HANGUL SYLLABLE SIOS-EO-RIEUL
-0xBCB4	0xC126	# HANGUL SYLLABLE SIOS-EO-RIEULMIEUM
-0xBCB5	0xC127	# HANGUL SYLLABLE SIOS-EO-RIEULPIEUP
-0xBCB6	0xC12C	# HANGUL SYLLABLE SIOS-EO-MIEUM
-0xBCB7	0xC12D	# HANGUL SYLLABLE SIOS-EO-PIEUP
-0xBCB8	0xC12F	# HANGUL SYLLABLE SIOS-EO-SIOS
-0xBCB9	0xC130	# HANGUL SYLLABLE SIOS-EO-SSANGSIOS
-0xBCBA	0xC131	# HANGUL SYLLABLE SIOS-EO-IEUNG
-0xBCBB	0xC136	# HANGUL SYLLABLE SIOS-EO-PHIEUPH
-0xBCBC	0xC138	# HANGUL SYLLABLE SIOS-E
-0xBCBD	0xC139	# HANGUL SYLLABLE SIOS-E-KIYEOK
-0xBCBE	0xC13C	# HANGUL SYLLABLE SIOS-E-NIEUN
-0xBCBF	0xC140	# HANGUL SYLLABLE SIOS-E-RIEUL
-0xBCC0	0xC148	# HANGUL SYLLABLE SIOS-E-MIEUM
-0xBCC1	0xC149	# HANGUL SYLLABLE SIOS-E-PIEUP
-0xBCC2	0xC14B	# HANGUL SYLLABLE SIOS-E-SIOS
-0xBCC3	0xC14C	# HANGUL SYLLABLE SIOS-E-SSANGSIOS
-0xBCC4	0xC14D	# HANGUL SYLLABLE SIOS-E-IEUNG
-0xBCC5	0xC154	# HANGUL SYLLABLE SIOS-YEO
-0xBCC6	0xC155	# HANGUL SYLLABLE SIOS-YEO-KIYEOK
-0xBCC7	0xC158	# HANGUL SYLLABLE SIOS-YEO-NIEUN
-0xBCC8	0xC15C	# HANGUL SYLLABLE SIOS-YEO-RIEUL
-0xBCC9	0xC164	# HANGUL SYLLABLE SIOS-YEO-MIEUM
-0xBCCA	0xC165	# HANGUL SYLLABLE SIOS-YEO-PIEUP
-0xBCCB	0xC167	# HANGUL SYLLABLE SIOS-YEO-SIOS
-0xBCCC	0xC168	# HANGUL SYLLABLE SIOS-YEO-SSANGSIOS
-0xBCCD	0xC169	# HANGUL SYLLABLE SIOS-YEO-IEUNG
-0xBCCE	0xC170	# HANGUL SYLLABLE SIOS-YE
-0xBCCF	0xC174	# HANGUL SYLLABLE SIOS-YE-NIEUN
-0xBCD0	0xC178	# HANGUL SYLLABLE SIOS-YE-RIEUL
-0xBCD1	0xC185	# HANGUL SYLLABLE SIOS-YE-IEUNG
-0xBCD2	0xC18C	# HANGUL SYLLABLE SIOS-O
-0xBCD3	0xC18D	# HANGUL SYLLABLE SIOS-O-KIYEOK
-0xBCD4	0xC18E	# HANGUL SYLLABLE SIOS-O-SSANGKIYEOK
-0xBCD5	0xC190	# HANGUL SYLLABLE SIOS-O-NIEUN
-0xBCD6	0xC194	# HANGUL SYLLABLE SIOS-O-RIEUL
-0xBCD7	0xC196	# HANGUL SYLLABLE SIOS-O-RIEULMIEUM
-0xBCD8	0xC19C	# HANGUL SYLLABLE SIOS-O-MIEUM
-0xBCD9	0xC19D	# HANGUL SYLLABLE SIOS-O-PIEUP
-0xBCDA	0xC19F	# HANGUL SYLLABLE SIOS-O-SIOS
-0xBCDB	0xC1A1	# HANGUL SYLLABLE SIOS-O-IEUNG
-0xBCDC	0xC1A5	# HANGUL SYLLABLE SIOS-O-THIEUTH
-0xBCDD	0xC1A8	# HANGUL SYLLABLE SIOS-WA
-0xBCDE	0xC1A9	# HANGUL SYLLABLE SIOS-WA-KIYEOK
-0xBCDF	0xC1AC	# HANGUL SYLLABLE SIOS-WA-NIEUN
-0xBCE0	0xC1B0	# HANGUL SYLLABLE SIOS-WA-RIEUL
-0xBCE1	0xC1BD	# HANGUL SYLLABLE SIOS-WA-IEUNG
-0xBCE2	0xC1C4	# HANGUL SYLLABLE SIOS-WAE
-0xBCE3	0xC1C8	# HANGUL SYLLABLE SIOS-WAE-NIEUN
-0xBCE4	0xC1CC	# HANGUL SYLLABLE SIOS-WAE-RIEUL
-0xBCE5	0xC1D4	# HANGUL SYLLABLE SIOS-WAE-MIEUM
-0xBCE6	0xC1D7	# HANGUL SYLLABLE SIOS-WAE-SIOS
-0xBCE7	0xC1D8	# HANGUL SYLLABLE SIOS-WAE-SSANGSIOS
-0xBCE8	0xC1E0	# HANGUL SYLLABLE SIOS-OE
-0xBCE9	0xC1E4	# HANGUL SYLLABLE SIOS-OE-NIEUN
-0xBCEA	0xC1E8	# HANGUL SYLLABLE SIOS-OE-RIEUL
-0xBCEB	0xC1F0	# HANGUL SYLLABLE SIOS-OE-MIEUM
-0xBCEC	0xC1F1	# HANGUL SYLLABLE SIOS-OE-PIEUP
-0xBCED	0xC1F3	# HANGUL SYLLABLE SIOS-OE-SIOS
-0xBCEE	0xC1FC	# HANGUL SYLLABLE SIOS-YO
-0xBCEF	0xC1FD	# HANGUL SYLLABLE SIOS-YO-KIYEOK
-0xBCF0	0xC200	# HANGUL SYLLABLE SIOS-YO-NIEUN
-0xBCF1	0xC204	# HANGUL SYLLABLE SIOS-YO-RIEUL
-0xBCF2	0xC20C	# HANGUL SYLLABLE SIOS-YO-MIEUM
-0xBCF3	0xC20D	# HANGUL SYLLABLE SIOS-YO-PIEUP
-0xBCF4	0xC20F	# HANGUL SYLLABLE SIOS-YO-SIOS
-0xBCF5	0xC211	# HANGUL SYLLABLE SIOS-YO-IEUNG
-0xBCF6	0xC218	# HANGUL SYLLABLE SIOS-U
-0xBCF7	0xC219	# HANGUL SYLLABLE SIOS-U-KIYEOK
-0xBCF8	0xC21C	# HANGUL SYLLABLE SIOS-U-NIEUN
-0xBCF9	0xC21F	# HANGUL SYLLABLE SIOS-U-TIKEUT
-0xBCFA	0xC220	# HANGUL SYLLABLE SIOS-U-RIEUL
-0xBCFB	0xC228	# HANGUL SYLLABLE SIOS-U-MIEUM
-0xBCFC	0xC229	# HANGUL SYLLABLE SIOS-U-PIEUP
-0xBCFD	0xC22B	# HANGUL SYLLABLE SIOS-U-SIOS
-0xBCFE	0xC22D	# HANGUL SYLLABLE SIOS-U-IEUNG
-0xBD41	0xD3D7	# HANGUL SYLLABLE PHIEUPH-YE-TIKEUT
-0xBD42	0xD3D9	# HANGUL SYLLABLE PHIEUPH-YE-RIEULKIYEOK
-0xBD43	0xD3DA	# HANGUL SYLLABLE PHIEUPH-YE-RIEULMIEUM
-0xBD44	0xD3DB	# HANGUL SYLLABLE PHIEUPH-YE-RIEULPIEUP
-0xBD45	0xD3DC	# HANGUL SYLLABLE PHIEUPH-YE-RIEULSIOS
-0xBD46	0xD3DD	# HANGUL SYLLABLE PHIEUPH-YE-RIEULTHIEUTH
-0xBD47	0xD3DE	# HANGUL SYLLABLE PHIEUPH-YE-RIEULPHIEUPH
-0xBD48	0xD3DF	# HANGUL SYLLABLE PHIEUPH-YE-RIEULHIEUH
-0xBD49	0xD3E0	# HANGUL SYLLABLE PHIEUPH-YE-MIEUM
-0xBD4A	0xD3E2	# HANGUL SYLLABLE PHIEUPH-YE-PIEUPSIOS
-0xBD4B	0xD3E4	# HANGUL SYLLABLE PHIEUPH-YE-SSANGSIOS
-0xBD4C	0xD3E5	# HANGUL SYLLABLE PHIEUPH-YE-IEUNG
-0xBD4D	0xD3E6	# HANGUL SYLLABLE PHIEUPH-YE-CIEUC
-0xBD4E	0xD3E7	# HANGUL SYLLABLE PHIEUPH-YE-CHIEUCH
-0xBD4F	0xD3E8	# HANGUL SYLLABLE PHIEUPH-YE-KHIEUKH
-0xBD50	0xD3E9	# HANGUL SYLLABLE PHIEUPH-YE-THIEUTH
-0xBD51	0xD3EA	# HANGUL SYLLABLE PHIEUPH-YE-PHIEUPH
-0xBD52	0xD3EB	# HANGUL SYLLABLE PHIEUPH-YE-HIEUH
-0xBD53	0xD3EE	# HANGUL SYLLABLE PHIEUPH-O-SSANGKIYEOK
-0xBD54	0xD3EF	# HANGUL SYLLABLE PHIEUPH-O-KIYEOKSIOS
-0xBD55	0xD3F1	# HANGUL SYLLABLE PHIEUPH-O-NIEUNCIEUC
-0xBD56	0xD3F2	# HANGUL SYLLABLE PHIEUPH-O-NIEUNHIEUH
-0xBD57	0xD3F3	# HANGUL SYLLABLE PHIEUPH-O-TIKEUT
-0xBD58	0xD3F5	# HANGUL SYLLABLE PHIEUPH-O-RIEULKIYEOK
-0xBD59	0xD3F6	# HANGUL SYLLABLE PHIEUPH-O-RIEULMIEUM
-0xBD5A	0xD3F7	# HANGUL SYLLABLE PHIEUPH-O-RIEULPIEUP
-0xBD61	0xD3F8	# HANGUL SYLLABLE PHIEUPH-O-RIEULSIOS
-0xBD62	0xD3F9	# HANGUL SYLLABLE PHIEUPH-O-RIEULTHIEUTH
-0xBD63	0xD3FA	# HANGUL SYLLABLE PHIEUPH-O-RIEULPHIEUPH
-0xBD64	0xD3FB	# HANGUL SYLLABLE PHIEUPH-O-RIEULHIEUH
-0xBD65	0xD3FE	# HANGUL SYLLABLE PHIEUPH-O-PIEUPSIOS
-0xBD66	0xD400	# HANGUL SYLLABLE PHIEUPH-O-SSANGSIOS
-0xBD67	0xD402	# HANGUL SYLLABLE PHIEUPH-O-CIEUC
-0xBD68	0xD403	# HANGUL SYLLABLE PHIEUPH-O-CHIEUCH
-0xBD69	0xD404	# HANGUL SYLLABLE PHIEUPH-O-KHIEUKH
-0xBD6A	0xD405	# HANGUL SYLLABLE PHIEUPH-O-THIEUTH
-0xBD6B	0xD406	# HANGUL SYLLABLE PHIEUPH-O-PHIEUPH
-0xBD6C	0xD407	# HANGUL SYLLABLE PHIEUPH-O-HIEUH
-0xBD6D	0xD409	# HANGUL SYLLABLE PHIEUPH-WA-KIYEOK
-0xBD6E	0xD40A	# HANGUL SYLLABLE PHIEUPH-WA-SSANGKIYEOK
-0xBD6F	0xD40B	# HANGUL SYLLABLE PHIEUPH-WA-KIYEOKSIOS
-0xBD70	0xD40C	# HANGUL SYLLABLE PHIEUPH-WA-NIEUN
-0xBD71	0xD40D	# HANGUL SYLLABLE PHIEUPH-WA-NIEUNCIEUC
-0xBD72	0xD40E	# HANGUL SYLLABLE PHIEUPH-WA-NIEUNHIEUH
-0xBD73	0xD40F	# HANGUL SYLLABLE PHIEUPH-WA-TIKEUT
-0xBD74	0xD410	# HANGUL SYLLABLE PHIEUPH-WA-RIEUL
-0xBD75	0xD411	# HANGUL SYLLABLE PHIEUPH-WA-RIEULKIYEOK
-0xBD76	0xD412	# HANGUL SYLLABLE PHIEUPH-WA-RIEULMIEUM
-0xBD77	0xD413	# HANGUL SYLLABLE PHIEUPH-WA-RIEULPIEUP
-0xBD78	0xD414	# HANGUL SYLLABLE PHIEUPH-WA-RIEULSIOS
-0xBD79	0xD415	# HANGUL SYLLABLE PHIEUPH-WA-RIEULTHIEUTH
-0xBD7A	0xD416	# HANGUL SYLLABLE PHIEUPH-WA-RIEULPHIEUPH
-0xBD81	0xD417	# HANGUL SYLLABLE PHIEUPH-WA-RIEULHIEUH
-0xBD82	0xD418	# HANGUL SYLLABLE PHIEUPH-WA-MIEUM
-0xBD83	0xD419	# HANGUL SYLLABLE PHIEUPH-WA-PIEUP
-0xBD84	0xD41A	# HANGUL SYLLABLE PHIEUPH-WA-PIEUPSIOS
-0xBD85	0xD41B	# HANGUL SYLLABLE PHIEUPH-WA-SIOS
-0xBD86	0xD41C	# HANGUL SYLLABLE PHIEUPH-WA-SSANGSIOS
-0xBD87	0xD41E	# HANGUL SYLLABLE PHIEUPH-WA-CIEUC
-0xBD88	0xD41F	# HANGUL SYLLABLE PHIEUPH-WA-CHIEUCH
-0xBD89	0xD420	# HANGUL SYLLABLE PHIEUPH-WA-KHIEUKH
-0xBD8A	0xD421	# HANGUL SYLLABLE PHIEUPH-WA-THIEUTH
-0xBD8B	0xD422	# HANGUL SYLLABLE PHIEUPH-WA-PHIEUPH
-0xBD8C	0xD423	# HANGUL SYLLABLE PHIEUPH-WA-HIEUH
-0xBD8D	0xD424	# HANGUL SYLLABLE PHIEUPH-WAE
-0xBD8E	0xD425	# HANGUL SYLLABLE PHIEUPH-WAE-KIYEOK
-0xBD8F	0xD426	# HANGUL SYLLABLE PHIEUPH-WAE-SSANGKIYEOK
-0xBD90	0xD427	# HANGUL SYLLABLE PHIEUPH-WAE-KIYEOKSIOS
-0xBD91	0xD428	# HANGUL SYLLABLE PHIEUPH-WAE-NIEUN
-0xBD92	0xD429	# HANGUL SYLLABLE PHIEUPH-WAE-NIEUNCIEUC
-0xBD93	0xD42A	# HANGUL SYLLABLE PHIEUPH-WAE-NIEUNHIEUH
-0xBD94	0xD42B	# HANGUL SYLLABLE PHIEUPH-WAE-TIKEUT
-0xBD95	0xD42C	# HANGUL SYLLABLE PHIEUPH-WAE-RIEUL
-0xBD96	0xD42D	# HANGUL SYLLABLE PHIEUPH-WAE-RIEULKIYEOK
-0xBD97	0xD42E	# HANGUL SYLLABLE PHIEUPH-WAE-RIEULMIEUM
-0xBD98	0xD42F	# HANGUL SYLLABLE PHIEUPH-WAE-RIEULPIEUP
-0xBD99	0xD430	# HANGUL SYLLABLE PHIEUPH-WAE-RIEULSIOS
-0xBD9A	0xD431	# HANGUL SYLLABLE PHIEUPH-WAE-RIEULTHIEUTH
-0xBD9B	0xD432	# HANGUL SYLLABLE PHIEUPH-WAE-RIEULPHIEUPH
-0xBD9C	0xD433	# HANGUL SYLLABLE PHIEUPH-WAE-RIEULHIEUH
-0xBD9D	0xD434	# HANGUL SYLLABLE PHIEUPH-WAE-MIEUM
-0xBD9E	0xD435	# HANGUL SYLLABLE PHIEUPH-WAE-PIEUP
-0xBD9F	0xD436	# HANGUL SYLLABLE PHIEUPH-WAE-PIEUPSIOS
-0xBDA0	0xD437	# HANGUL SYLLABLE PHIEUPH-WAE-SIOS
-0xBDA1	0xC22F	# HANGUL SYLLABLE SIOS-U-CHIEUCH
-0xBDA2	0xC231	# HANGUL SYLLABLE SIOS-U-THIEUTH
-0xBDA3	0xC232	# HANGUL SYLLABLE SIOS-U-PHIEUPH
-0xBDA4	0xC234	# HANGUL SYLLABLE SIOS-WEO
-0xBDA5	0xC248	# HANGUL SYLLABLE SIOS-WEO-SSANGSIOS
-0xBDA6	0xC250	# HANGUL SYLLABLE SIOS-WE
-0xBDA7	0xC251	# HANGUL SYLLABLE SIOS-WE-KIYEOK
-0xBDA8	0xC254	# HANGUL SYLLABLE SIOS-WE-NIEUN
-0xBDA9	0xC258	# HANGUL SYLLABLE SIOS-WE-RIEUL
-0xBDAA	0xC260	# HANGUL SYLLABLE SIOS-WE-MIEUM
-0xBDAB	0xC265	# HANGUL SYLLABLE SIOS-WE-IEUNG
-0xBDAC	0xC26C	# HANGUL SYLLABLE SIOS-WI
-0xBDAD	0xC26D	# HANGUL SYLLABLE SIOS-WI-KIYEOK
-0xBDAE	0xC270	# HANGUL SYLLABLE SIOS-WI-NIEUN
-0xBDAF	0xC274	# HANGUL SYLLABLE SIOS-WI-RIEUL
-0xBDB0	0xC27C	# HANGUL SYLLABLE SIOS-WI-MIEUM
-0xBDB1	0xC27D	# HANGUL SYLLABLE SIOS-WI-PIEUP
-0xBDB2	0xC27F	# HANGUL SYLLABLE SIOS-WI-SIOS
-0xBDB3	0xC281	# HANGUL SYLLABLE SIOS-WI-IEUNG
-0xBDB4	0xC288	# HANGUL SYLLABLE SIOS-YU
-0xBDB5	0xC289	# HANGUL SYLLABLE SIOS-YU-KIYEOK
-0xBDB6	0xC290	# HANGUL SYLLABLE SIOS-YU-RIEUL
-0xBDB7	0xC298	# HANGUL SYLLABLE SIOS-YU-MIEUM
-0xBDB8	0xC29B	# HANGUL SYLLABLE SIOS-YU-SIOS
-0xBDB9	0xC29D	# HANGUL SYLLABLE SIOS-YU-IEUNG
-0xBDBA	0xC2A4	# HANGUL SYLLABLE SIOS-EU
-0xBDBB	0xC2A5	# HANGUL SYLLABLE SIOS-EU-KIYEOK
-0xBDBC	0xC2A8	# HANGUL SYLLABLE SIOS-EU-NIEUN
-0xBDBD	0xC2AC	# HANGUL SYLLABLE SIOS-EU-RIEUL
-0xBDBE	0xC2AD	# HANGUL SYLLABLE SIOS-EU-RIEULKIYEOK
-0xBDBF	0xC2B4	# HANGUL SYLLABLE SIOS-EU-MIEUM
-0xBDC0	0xC2B5	# HANGUL SYLLABLE SIOS-EU-PIEUP
-0xBDC1	0xC2B7	# HANGUL SYLLABLE SIOS-EU-SIOS
-0xBDC2	0xC2B9	# HANGUL SYLLABLE SIOS-EU-IEUNG
-0xBDC3	0xC2DC	# HANGUL SYLLABLE SIOS-I
-0xBDC4	0xC2DD	# HANGUL SYLLABLE SIOS-I-KIYEOK
-0xBDC5	0xC2E0	# HANGUL SYLLABLE SIOS-I-NIEUN
-0xBDC6	0xC2E3	# HANGUL SYLLABLE SIOS-I-TIKEUT
-0xBDC7	0xC2E4	# HANGUL SYLLABLE SIOS-I-RIEUL
-0xBDC8	0xC2EB	# HANGUL SYLLABLE SIOS-I-RIEULHIEUH
-0xBDC9	0xC2EC	# HANGUL SYLLABLE SIOS-I-MIEUM
-0xBDCA	0xC2ED	# HANGUL SYLLABLE SIOS-I-PIEUP
-0xBDCB	0xC2EF	# HANGUL SYLLABLE SIOS-I-SIOS
-0xBDCC	0xC2F1	# HANGUL SYLLABLE SIOS-I-IEUNG
-0xBDCD	0xC2F6	# HANGUL SYLLABLE SIOS-I-PHIEUPH
-0xBDCE	0xC2F8	# HANGUL SYLLABLE SSANGSIOS-A
-0xBDCF	0xC2F9	# HANGUL SYLLABLE SSANGSIOS-A-KIYEOK
-0xBDD0	0xC2FB	# HANGUL SYLLABLE SSANGSIOS-A-KIYEOKSIOS
-0xBDD1	0xC2FC	# HANGUL SYLLABLE SSANGSIOS-A-NIEUN
-0xBDD2	0xC300	# HANGUL SYLLABLE SSANGSIOS-A-RIEUL
-0xBDD3	0xC308	# HANGUL SYLLABLE SSANGSIOS-A-MIEUM
-0xBDD4	0xC309	# HANGUL SYLLABLE SSANGSIOS-A-PIEUP
-0xBDD5	0xC30C	# HANGUL SYLLABLE SSANGSIOS-A-SSANGSIOS
-0xBDD6	0xC30D	# HANGUL SYLLABLE SSANGSIOS-A-IEUNG
-0xBDD7	0xC313	# HANGUL SYLLABLE SSANGSIOS-A-HIEUH
-0xBDD8	0xC314	# HANGUL SYLLABLE SSANGSIOS-AE
-0xBDD9	0xC315	# HANGUL SYLLABLE SSANGSIOS-AE-KIYEOK
-0xBDDA	0xC318	# HANGUL SYLLABLE SSANGSIOS-AE-NIEUN
-0xBDDB	0xC31C	# HANGUL SYLLABLE SSANGSIOS-AE-RIEUL
-0xBDDC	0xC324	# HANGUL SYLLABLE SSANGSIOS-AE-MIEUM
-0xBDDD	0xC325	# HANGUL SYLLABLE SSANGSIOS-AE-PIEUP
-0xBDDE	0xC328	# HANGUL SYLLABLE SSANGSIOS-AE-SSANGSIOS
-0xBDDF	0xC329	# HANGUL SYLLABLE SSANGSIOS-AE-IEUNG
-0xBDE0	0xC345	# HANGUL SYLLABLE SSANGSIOS-YA-IEUNG
-0xBDE1	0xC368	# HANGUL SYLLABLE SSANGSIOS-EO
-0xBDE2	0xC369	# HANGUL SYLLABLE SSANGSIOS-EO-KIYEOK
-0xBDE3	0xC36C	# HANGUL SYLLABLE SSANGSIOS-EO-NIEUN
-0xBDE4	0xC370	# HANGUL SYLLABLE SSANGSIOS-EO-RIEUL
-0xBDE5	0xC372	# HANGUL SYLLABLE SSANGSIOS-EO-RIEULMIEUM
-0xBDE6	0xC378	# HANGUL SYLLABLE SSANGSIOS-EO-MIEUM
-0xBDE7	0xC379	# HANGUL SYLLABLE SSANGSIOS-EO-PIEUP
-0xBDE8	0xC37C	# HANGUL SYLLABLE SSANGSIOS-EO-SSANGSIOS
-0xBDE9	0xC37D	# HANGUL SYLLABLE SSANGSIOS-EO-IEUNG
-0xBDEA	0xC384	# HANGUL SYLLABLE SSANGSIOS-E
-0xBDEB	0xC388	# HANGUL SYLLABLE SSANGSIOS-E-NIEUN
-0xBDEC	0xC38C	# HANGUL SYLLABLE SSANGSIOS-E-RIEUL
-0xBDED	0xC3C0	# HANGUL SYLLABLE SSANGSIOS-YE-NIEUN
-0xBDEE	0xC3D8	# HANGUL SYLLABLE SSANGSIOS-O
-0xBDEF	0xC3D9	# HANGUL SYLLABLE SSANGSIOS-O-KIYEOK
-0xBDF0	0xC3DC	# HANGUL SYLLABLE SSANGSIOS-O-NIEUN
-0xBDF1	0xC3DF	# HANGUL SYLLABLE SSANGSIOS-O-TIKEUT
-0xBDF2	0xC3E0	# HANGUL SYLLABLE SSANGSIOS-O-RIEUL
-0xBDF3	0xC3E2	# HANGUL SYLLABLE SSANGSIOS-O-RIEULMIEUM
-0xBDF4	0xC3E8	# HANGUL SYLLABLE SSANGSIOS-O-MIEUM
-0xBDF5	0xC3E9	# HANGUL SYLLABLE SSANGSIOS-O-PIEUP
-0xBDF6	0xC3ED	# HANGUL SYLLABLE SSANGSIOS-O-IEUNG
-0xBDF7	0xC3F4	# HANGUL SYLLABLE SSANGSIOS-WA
-0xBDF8	0xC3F5	# HANGUL SYLLABLE SSANGSIOS-WA-KIYEOK
-0xBDF9	0xC3F8	# HANGUL SYLLABLE SSANGSIOS-WA-NIEUN
-0xBDFA	0xC408	# HANGUL SYLLABLE SSANGSIOS-WA-SSANGSIOS
-0xBDFB	0xC410	# HANGUL SYLLABLE SSANGSIOS-WAE
-0xBDFC	0xC424	# HANGUL SYLLABLE SSANGSIOS-WAE-SSANGSIOS
-0xBDFD	0xC42C	# HANGUL SYLLABLE SSANGSIOS-OE
-0xBDFE	0xC430	# HANGUL SYLLABLE SSANGSIOS-OE-NIEUN
-0xBE41	0xD438	# HANGUL SYLLABLE PHIEUPH-WAE-SSANGSIOS
-0xBE42	0xD439	# HANGUL SYLLABLE PHIEUPH-WAE-IEUNG
-0xBE43	0xD43A	# HANGUL SYLLABLE PHIEUPH-WAE-CIEUC
-0xBE44	0xD43B	# HANGUL SYLLABLE PHIEUPH-WAE-CHIEUCH
-0xBE45	0xD43C	# HANGUL SYLLABLE PHIEUPH-WAE-KHIEUKH
-0xBE46	0xD43D	# HANGUL SYLLABLE PHIEUPH-WAE-THIEUTH
-0xBE47	0xD43E	# HANGUL SYLLABLE PHIEUPH-WAE-PHIEUPH
-0xBE48	0xD43F	# HANGUL SYLLABLE PHIEUPH-WAE-HIEUH
-0xBE49	0xD441	# HANGUL SYLLABLE PHIEUPH-OE-KIYEOK
-0xBE4A	0xD442	# HANGUL SYLLABLE PHIEUPH-OE-SSANGKIYEOK
-0xBE4B	0xD443	# HANGUL SYLLABLE PHIEUPH-OE-KIYEOKSIOS
-0xBE4C	0xD445	# HANGUL SYLLABLE PHIEUPH-OE-NIEUNCIEUC
-0xBE4D	0xD446	# HANGUL SYLLABLE PHIEUPH-OE-NIEUNHIEUH
-0xBE4E	0xD447	# HANGUL SYLLABLE PHIEUPH-OE-TIKEUT
-0xBE4F	0xD448	# HANGUL SYLLABLE PHIEUPH-OE-RIEUL
-0xBE50	0xD449	# HANGUL SYLLABLE PHIEUPH-OE-RIEULKIYEOK
-0xBE51	0xD44A	# HANGUL SYLLABLE PHIEUPH-OE-RIEULMIEUM
-0xBE52	0xD44B	# HANGUL SYLLABLE PHIEUPH-OE-RIEULPIEUP
-0xBE53	0xD44C	# HANGUL SYLLABLE PHIEUPH-OE-RIEULSIOS
-0xBE54	0xD44D	# HANGUL SYLLABLE PHIEUPH-OE-RIEULTHIEUTH
-0xBE55	0xD44E	# HANGUL SYLLABLE PHIEUPH-OE-RIEULPHIEUPH
-0xBE56	0xD44F	# HANGUL SYLLABLE PHIEUPH-OE-RIEULHIEUH
-0xBE57	0xD450	# HANGUL SYLLABLE PHIEUPH-OE-MIEUM
-0xBE58	0xD451	# HANGUL SYLLABLE PHIEUPH-OE-PIEUP
-0xBE59	0xD452	# HANGUL SYLLABLE PHIEUPH-OE-PIEUPSIOS
-0xBE5A	0xD453	# HANGUL SYLLABLE PHIEUPH-OE-SIOS
-0xBE61	0xD454	# HANGUL SYLLABLE PHIEUPH-OE-SSANGSIOS
-0xBE62	0xD455	# HANGUL SYLLABLE PHIEUPH-OE-IEUNG
-0xBE63	0xD456	# HANGUL SYLLABLE PHIEUPH-OE-CIEUC
-0xBE64	0xD457	# HANGUL SYLLABLE PHIEUPH-OE-CHIEUCH
-0xBE65	0xD458	# HANGUL SYLLABLE PHIEUPH-OE-KHIEUKH
-0xBE66	0xD459	# HANGUL SYLLABLE PHIEUPH-OE-THIEUTH
-0xBE67	0xD45A	# HANGUL SYLLABLE PHIEUPH-OE-PHIEUPH
-0xBE68	0xD45B	# HANGUL SYLLABLE PHIEUPH-OE-HIEUH
-0xBE69	0xD45D	# HANGUL SYLLABLE PHIEUPH-YO-KIYEOK
-0xBE6A	0xD45E	# HANGUL SYLLABLE PHIEUPH-YO-SSANGKIYEOK
-0xBE6B	0xD45F	# HANGUL SYLLABLE PHIEUPH-YO-KIYEOKSIOS
-0xBE6C	0xD461	# HANGUL SYLLABLE PHIEUPH-YO-NIEUNCIEUC
-0xBE6D	0xD462	# HANGUL SYLLABLE PHIEUPH-YO-NIEUNHIEUH
-0xBE6E	0xD463	# HANGUL SYLLABLE PHIEUPH-YO-TIKEUT
-0xBE6F	0xD465	# HANGUL SYLLABLE PHIEUPH-YO-RIEULKIYEOK
-0xBE70	0xD466	# HANGUL SYLLABLE PHIEUPH-YO-RIEULMIEUM
-0xBE71	0xD467	# HANGUL SYLLABLE PHIEUPH-YO-RIEULPIEUP
-0xBE72	0xD468	# HANGUL SYLLABLE PHIEUPH-YO-RIEULSIOS
-0xBE73	0xD469	# HANGUL SYLLABLE PHIEUPH-YO-RIEULTHIEUTH
-0xBE74	0xD46A	# HANGUL SYLLABLE PHIEUPH-YO-RIEULPHIEUPH
-0xBE75	0xD46B	# HANGUL SYLLABLE PHIEUPH-YO-RIEULHIEUH
-0xBE76	0xD46C	# HANGUL SYLLABLE PHIEUPH-YO-MIEUM
-0xBE77	0xD46E	# HANGUL SYLLABLE PHIEUPH-YO-PIEUPSIOS
-0xBE78	0xD470	# HANGUL SYLLABLE PHIEUPH-YO-SSANGSIOS
-0xBE79	0xD471	# HANGUL SYLLABLE PHIEUPH-YO-IEUNG
-0xBE7A	0xD472	# HANGUL SYLLABLE PHIEUPH-YO-CIEUC
-0xBE81	0xD473	# HANGUL SYLLABLE PHIEUPH-YO-CHIEUCH
-0xBE82	0xD474	# HANGUL SYLLABLE PHIEUPH-YO-KHIEUKH
-0xBE83	0xD475	# HANGUL SYLLABLE PHIEUPH-YO-THIEUTH
-0xBE84	0xD476	# HANGUL SYLLABLE PHIEUPH-YO-PHIEUPH
-0xBE85	0xD477	# HANGUL SYLLABLE PHIEUPH-YO-HIEUH
-0xBE86	0xD47A	# HANGUL SYLLABLE PHIEUPH-U-SSANGKIYEOK
-0xBE87	0xD47B	# HANGUL SYLLABLE PHIEUPH-U-KIYEOKSIOS
-0xBE88	0xD47D	# HANGUL SYLLABLE PHIEUPH-U-NIEUNCIEUC
-0xBE89	0xD47E	# HANGUL SYLLABLE PHIEUPH-U-NIEUNHIEUH
-0xBE8A	0xD481	# HANGUL SYLLABLE PHIEUPH-U-RIEULKIYEOK
-0xBE8B	0xD483	# HANGUL SYLLABLE PHIEUPH-U-RIEULPIEUP
-0xBE8C	0xD484	# HANGUL SYLLABLE PHIEUPH-U-RIEULSIOS
-0xBE8D	0xD485	# HANGUL SYLLABLE PHIEUPH-U-RIEULTHIEUTH
-0xBE8E	0xD486	# HANGUL SYLLABLE PHIEUPH-U-RIEULPHIEUPH
-0xBE8F	0xD487	# HANGUL SYLLABLE PHIEUPH-U-RIEULHIEUH
-0xBE90	0xD48A	# HANGUL SYLLABLE PHIEUPH-U-PIEUPSIOS
-0xBE91	0xD48C	# HANGUL SYLLABLE PHIEUPH-U-SSANGSIOS
-0xBE92	0xD48E	# HANGUL SYLLABLE PHIEUPH-U-CIEUC
-0xBE93	0xD48F	# HANGUL SYLLABLE PHIEUPH-U-CHIEUCH
-0xBE94	0xD490	# HANGUL SYLLABLE PHIEUPH-U-KHIEUKH
-0xBE95	0xD491	# HANGUL SYLLABLE PHIEUPH-U-THIEUTH
-0xBE96	0xD492	# HANGUL SYLLABLE PHIEUPH-U-PHIEUPH
-0xBE97	0xD493	# HANGUL SYLLABLE PHIEUPH-U-HIEUH
-0xBE98	0xD495	# HANGUL SYLLABLE PHIEUPH-WEO-KIYEOK
-0xBE99	0xD496	# HANGUL SYLLABLE PHIEUPH-WEO-SSANGKIYEOK
-0xBE9A	0xD497	# HANGUL SYLLABLE PHIEUPH-WEO-KIYEOKSIOS
-0xBE9B	0xD498	# HANGUL SYLLABLE PHIEUPH-WEO-NIEUN
-0xBE9C	0xD499	# HANGUL SYLLABLE PHIEUPH-WEO-NIEUNCIEUC
-0xBE9D	0xD49A	# HANGUL SYLLABLE PHIEUPH-WEO-NIEUNHIEUH
-0xBE9E	0xD49B	# HANGUL SYLLABLE PHIEUPH-WEO-TIKEUT
-0xBE9F	0xD49C	# HANGUL SYLLABLE PHIEUPH-WEO-RIEUL
-0xBEA0	0xD49D	# HANGUL SYLLABLE PHIEUPH-WEO-RIEULKIYEOK
-0xBEA1	0xC434	# HANGUL SYLLABLE SSANGSIOS-OE-RIEUL
-0xBEA2	0xC43C	# HANGUL SYLLABLE SSANGSIOS-OE-MIEUM
-0xBEA3	0xC43D	# HANGUL SYLLABLE SSANGSIOS-OE-PIEUP
-0xBEA4	0xC448	# HANGUL SYLLABLE SSANGSIOS-YO
-0xBEA5	0xC464	# HANGUL SYLLABLE SSANGSIOS-U
-0xBEA6	0xC465	# HANGUL SYLLABLE SSANGSIOS-U-KIYEOK
-0xBEA7	0xC468	# HANGUL SYLLABLE SSANGSIOS-U-NIEUN
-0xBEA8	0xC46C	# HANGUL SYLLABLE SSANGSIOS-U-RIEUL
-0xBEA9	0xC474	# HANGUL SYLLABLE SSANGSIOS-U-MIEUM
-0xBEAA	0xC475	# HANGUL SYLLABLE SSANGSIOS-U-PIEUP
-0xBEAB	0xC479	# HANGUL SYLLABLE SSANGSIOS-U-IEUNG
-0xBEAC	0xC480	# HANGUL SYLLABLE SSANGSIOS-WEO
-0xBEAD	0xC494	# HANGUL SYLLABLE SSANGSIOS-WEO-SSANGSIOS
-0xBEAE	0xC49C	# HANGUL SYLLABLE SSANGSIOS-WE
-0xBEAF	0xC4B8	# HANGUL SYLLABLE SSANGSIOS-WI
-0xBEB0	0xC4BC	# HANGUL SYLLABLE SSANGSIOS-WI-NIEUN
-0xBEB1	0xC4E9	# HANGUL SYLLABLE SSANGSIOS-YU-IEUNG
-0xBEB2	0xC4F0	# HANGUL SYLLABLE SSANGSIOS-EU
-0xBEB3	0xC4F1	# HANGUL SYLLABLE SSANGSIOS-EU-KIYEOK
-0xBEB4	0xC4F4	# HANGUL SYLLABLE SSANGSIOS-EU-NIEUN
-0xBEB5	0xC4F8	# HANGUL SYLLABLE SSANGSIOS-EU-RIEUL
-0xBEB6	0xC4FA	# HANGUL SYLLABLE SSANGSIOS-EU-RIEULMIEUM
-0xBEB7	0xC4FF	# HANGUL SYLLABLE SSANGSIOS-EU-RIEULHIEUH
-0xBEB8	0xC500	# HANGUL SYLLABLE SSANGSIOS-EU-MIEUM
-0xBEB9	0xC501	# HANGUL SYLLABLE SSANGSIOS-EU-PIEUP
-0xBEBA	0xC50C	# HANGUL SYLLABLE SSANGSIOS-YI
-0xBEBB	0xC510	# HANGUL SYLLABLE SSANGSIOS-YI-NIEUN
-0xBEBC	0xC514	# HANGUL SYLLABLE SSANGSIOS-YI-RIEUL
-0xBEBD	0xC51C	# HANGUL SYLLABLE SSANGSIOS-YI-MIEUM
-0xBEBE	0xC528	# HANGUL SYLLABLE SSANGSIOS-I
-0xBEBF	0xC529	# HANGUL SYLLABLE SSANGSIOS-I-KIYEOK
-0xBEC0	0xC52C	# HANGUL SYLLABLE SSANGSIOS-I-NIEUN
-0xBEC1	0xC530	# HANGUL SYLLABLE SSANGSIOS-I-RIEUL
-0xBEC2	0xC538	# HANGUL SYLLABLE SSANGSIOS-I-MIEUM
-0xBEC3	0xC539	# HANGUL SYLLABLE SSANGSIOS-I-PIEUP
-0xBEC4	0xC53B	# HANGUL SYLLABLE SSANGSIOS-I-SIOS
-0xBEC5	0xC53D	# HANGUL SYLLABLE SSANGSIOS-I-IEUNG
-0xBEC6	0xC544	# HANGUL SYLLABLE IEUNG-A
-0xBEC7	0xC545	# HANGUL SYLLABLE IEUNG-A-KIYEOK
-0xBEC8	0xC548	# HANGUL SYLLABLE IEUNG-A-NIEUN
-0xBEC9	0xC549	# HANGUL SYLLABLE IEUNG-A-NIEUNCIEUC
-0xBECA	0xC54A	# HANGUL SYLLABLE IEUNG-A-NIEUNHIEUH
-0xBECB	0xC54C	# HANGUL SYLLABLE IEUNG-A-RIEUL
-0xBECC	0xC54D	# HANGUL SYLLABLE IEUNG-A-RIEULKIYEOK
-0xBECD	0xC54E	# HANGUL SYLLABLE IEUNG-A-RIEULMIEUM
-0xBECE	0xC553	# HANGUL SYLLABLE IEUNG-A-RIEULHIEUH
-0xBECF	0xC554	# HANGUL SYLLABLE IEUNG-A-MIEUM
-0xBED0	0xC555	# HANGUL SYLLABLE IEUNG-A-PIEUP
-0xBED1	0xC557	# HANGUL SYLLABLE IEUNG-A-SIOS
-0xBED2	0xC558	# HANGUL SYLLABLE IEUNG-A-SSANGSIOS
-0xBED3	0xC559	# HANGUL SYLLABLE IEUNG-A-IEUNG
-0xBED4	0xC55D	# HANGUL SYLLABLE IEUNG-A-THIEUTH
-0xBED5	0xC55E	# HANGUL SYLLABLE IEUNG-A-PHIEUPH
-0xBED6	0xC560	# HANGUL SYLLABLE IEUNG-AE
-0xBED7	0xC561	# HANGUL SYLLABLE IEUNG-AE-KIYEOK
-0xBED8	0xC564	# HANGUL SYLLABLE IEUNG-AE-NIEUN
-0xBED9	0xC568	# HANGUL SYLLABLE IEUNG-AE-RIEUL
-0xBEDA	0xC570	# HANGUL SYLLABLE IEUNG-AE-MIEUM
-0xBEDB	0xC571	# HANGUL SYLLABLE IEUNG-AE-PIEUP
-0xBEDC	0xC573	# HANGUL SYLLABLE IEUNG-AE-SIOS
-0xBEDD	0xC574	# HANGUL SYLLABLE IEUNG-AE-SSANGSIOS
-0xBEDE	0xC575	# HANGUL SYLLABLE IEUNG-AE-IEUNG
-0xBEDF	0xC57C	# HANGUL SYLLABLE IEUNG-YA
-0xBEE0	0xC57D	# HANGUL SYLLABLE IEUNG-YA-KIYEOK
-0xBEE1	0xC580	# HANGUL SYLLABLE IEUNG-YA-NIEUN
-0xBEE2	0xC584	# HANGUL SYLLABLE IEUNG-YA-RIEUL
-0xBEE3	0xC587	# HANGUL SYLLABLE IEUNG-YA-RIEULPIEUP
-0xBEE4	0xC58C	# HANGUL SYLLABLE IEUNG-YA-MIEUM
-0xBEE5	0xC58D	# HANGUL SYLLABLE IEUNG-YA-PIEUP
-0xBEE6	0xC58F	# HANGUL SYLLABLE IEUNG-YA-SIOS
-0xBEE7	0xC591	# HANGUL SYLLABLE IEUNG-YA-IEUNG
-0xBEE8	0xC595	# HANGUL SYLLABLE IEUNG-YA-THIEUTH
-0xBEE9	0xC597	# HANGUL SYLLABLE IEUNG-YA-HIEUH
-0xBEEA	0xC598	# HANGUL SYLLABLE IEUNG-YAE
-0xBEEB	0xC59C	# HANGUL SYLLABLE IEUNG-YAE-NIEUN
-0xBEEC	0xC5A0	# HANGUL SYLLABLE IEUNG-YAE-RIEUL
-0xBEED	0xC5A9	# HANGUL SYLLABLE IEUNG-YAE-PIEUP
-0xBEEE	0xC5B4	# HANGUL SYLLABLE IEUNG-EO
-0xBEEF	0xC5B5	# HANGUL SYLLABLE IEUNG-EO-KIYEOK
-0xBEF0	0xC5B8	# HANGUL SYLLABLE IEUNG-EO-NIEUN
-0xBEF1	0xC5B9	# HANGUL SYLLABLE IEUNG-EO-NIEUNCIEUC
-0xBEF2	0xC5BB	# HANGUL SYLLABLE IEUNG-EO-TIKEUT
-0xBEF3	0xC5BC	# HANGUL SYLLABLE IEUNG-EO-RIEUL
-0xBEF4	0xC5BD	# HANGUL SYLLABLE IEUNG-EO-RIEULKIYEOK
-0xBEF5	0xC5BE	# HANGUL SYLLABLE IEUNG-EO-RIEULMIEUM
-0xBEF6	0xC5C4	# HANGUL SYLLABLE IEUNG-EO-MIEUM
-0xBEF7	0xC5C5	# HANGUL SYLLABLE IEUNG-EO-PIEUP
-0xBEF8	0xC5C6	# HANGUL SYLLABLE IEUNG-EO-PIEUPSIOS
-0xBEF9	0xC5C7	# HANGUL SYLLABLE IEUNG-EO-SIOS
-0xBEFA	0xC5C8	# HANGUL SYLLABLE IEUNG-EO-SSANGSIOS
-0xBEFB	0xC5C9	# HANGUL SYLLABLE IEUNG-EO-IEUNG
-0xBEFC	0xC5CA	# HANGUL SYLLABLE IEUNG-EO-CIEUC
-0xBEFD	0xC5CC	# HANGUL SYLLABLE IEUNG-EO-KHIEUKH
-0xBEFE	0xC5CE	# HANGUL SYLLABLE IEUNG-EO-PHIEUPH
-0xBF41	0xD49E	# HANGUL SYLLABLE PHIEUPH-WEO-RIEULMIEUM
-0xBF42	0xD49F	# HANGUL SYLLABLE PHIEUPH-WEO-RIEULPIEUP
-0xBF43	0xD4A0	# HANGUL SYLLABLE PHIEUPH-WEO-RIEULSIOS
-0xBF44	0xD4A1	# HANGUL SYLLABLE PHIEUPH-WEO-RIEULTHIEUTH
-0xBF45	0xD4A2	# HANGUL SYLLABLE PHIEUPH-WEO-RIEULPHIEUPH
-0xBF46	0xD4A3	# HANGUL SYLLABLE PHIEUPH-WEO-RIEULHIEUH
-0xBF47	0xD4A4	# HANGUL SYLLABLE PHIEUPH-WEO-MIEUM
-0xBF48	0xD4A5	# HANGUL SYLLABLE PHIEUPH-WEO-PIEUP
-0xBF49	0xD4A6	# HANGUL SYLLABLE PHIEUPH-WEO-PIEUPSIOS
-0xBF4A	0xD4A7	# HANGUL SYLLABLE PHIEUPH-WEO-SIOS
-0xBF4B	0xD4A8	# HANGUL SYLLABLE PHIEUPH-WEO-SSANGSIOS
-0xBF4C	0xD4AA	# HANGUL SYLLABLE PHIEUPH-WEO-CIEUC
-0xBF4D	0xD4AB	# HANGUL SYLLABLE PHIEUPH-WEO-CHIEUCH
-0xBF4E	0xD4AC	# HANGUL SYLLABLE PHIEUPH-WEO-KHIEUKH
-0xBF4F	0xD4AD	# HANGUL SYLLABLE PHIEUPH-WEO-THIEUTH
-0xBF50	0xD4AE	# HANGUL SYLLABLE PHIEUPH-WEO-PHIEUPH
-0xBF51	0xD4AF	# HANGUL SYLLABLE PHIEUPH-WEO-HIEUH
-0xBF52	0xD4B0	# HANGUL SYLLABLE PHIEUPH-WE
-0xBF53	0xD4B1	# HANGUL SYLLABLE PHIEUPH-WE-KIYEOK
-0xBF54	0xD4B2	# HANGUL SYLLABLE PHIEUPH-WE-SSANGKIYEOK
-0xBF55	0xD4B3	# HANGUL SYLLABLE PHIEUPH-WE-KIYEOKSIOS
-0xBF56	0xD4B4	# HANGUL SYLLABLE PHIEUPH-WE-NIEUN
-0xBF57	0xD4B5	# HANGUL SYLLABLE PHIEUPH-WE-NIEUNCIEUC
-0xBF58	0xD4B6	# HANGUL SYLLABLE PHIEUPH-WE-NIEUNHIEUH
-0xBF59	0xD4B7	# HANGUL SYLLABLE PHIEUPH-WE-TIKEUT
-0xBF5A	0xD4B8	# HANGUL SYLLABLE PHIEUPH-WE-RIEUL
-0xBF61	0xD4B9	# HANGUL SYLLABLE PHIEUPH-WE-RIEULKIYEOK
-0xBF62	0xD4BA	# HANGUL SYLLABLE PHIEUPH-WE-RIEULMIEUM
-0xBF63	0xD4BB	# HANGUL SYLLABLE PHIEUPH-WE-RIEULPIEUP
-0xBF64	0xD4BC	# HANGUL SYLLABLE PHIEUPH-WE-RIEULSIOS
-0xBF65	0xD4BD	# HANGUL SYLLABLE PHIEUPH-WE-RIEULTHIEUTH
-0xBF66	0xD4BE	# HANGUL SYLLABLE PHIEUPH-WE-RIEULPHIEUPH
-0xBF67	0xD4BF	# HANGUL SYLLABLE PHIEUPH-WE-RIEULHIEUH
-0xBF68	0xD4C0	# HANGUL SYLLABLE PHIEUPH-WE-MIEUM
-0xBF69	0xD4C1	# HANGUL SYLLABLE PHIEUPH-WE-PIEUP
-0xBF6A	0xD4C2	# HANGUL SYLLABLE PHIEUPH-WE-PIEUPSIOS
-0xBF6B	0xD4C3	# HANGUL SYLLABLE PHIEUPH-WE-SIOS
-0xBF6C	0xD4C4	# HANGUL SYLLABLE PHIEUPH-WE-SSANGSIOS
-0xBF6D	0xD4C5	# HANGUL SYLLABLE PHIEUPH-WE-IEUNG
-0xBF6E	0xD4C6	# HANGUL SYLLABLE PHIEUPH-WE-CIEUC
-0xBF6F	0xD4C7	# HANGUL SYLLABLE PHIEUPH-WE-CHIEUCH
-0xBF70	0xD4C8	# HANGUL SYLLABLE PHIEUPH-WE-KHIEUKH
-0xBF71	0xD4C9	# HANGUL SYLLABLE PHIEUPH-WE-THIEUTH
-0xBF72	0xD4CA	# HANGUL SYLLABLE PHIEUPH-WE-PHIEUPH
-0xBF73	0xD4CB	# HANGUL SYLLABLE PHIEUPH-WE-HIEUH
-0xBF74	0xD4CD	# HANGUL SYLLABLE PHIEUPH-WI-KIYEOK
-0xBF75	0xD4CE	# HANGUL SYLLABLE PHIEUPH-WI-SSANGKIYEOK
-0xBF76	0xD4CF	# HANGUL SYLLABLE PHIEUPH-WI-KIYEOKSIOS
-0xBF77	0xD4D1	# HANGUL SYLLABLE PHIEUPH-WI-NIEUNCIEUC
-0xBF78	0xD4D2	# HANGUL SYLLABLE PHIEUPH-WI-NIEUNHIEUH
-0xBF79	0xD4D3	# HANGUL SYLLABLE PHIEUPH-WI-TIKEUT
-0xBF7A	0xD4D5	# HANGUL SYLLABLE PHIEUPH-WI-RIEULKIYEOK
-0xBF81	0xD4D6	# HANGUL SYLLABLE PHIEUPH-WI-RIEULMIEUM
-0xBF82	0xD4D7	# HANGUL SYLLABLE PHIEUPH-WI-RIEULPIEUP
-0xBF83	0xD4D8	# HANGUL SYLLABLE PHIEUPH-WI-RIEULSIOS
-0xBF84	0xD4D9	# HANGUL SYLLABLE PHIEUPH-WI-RIEULTHIEUTH
-0xBF85	0xD4DA	# HANGUL SYLLABLE PHIEUPH-WI-RIEULPHIEUPH
-0xBF86	0xD4DB	# HANGUL SYLLABLE PHIEUPH-WI-RIEULHIEUH
-0xBF87	0xD4DD	# HANGUL SYLLABLE PHIEUPH-WI-PIEUP
-0xBF88	0xD4DE	# HANGUL SYLLABLE PHIEUPH-WI-PIEUPSIOS
-0xBF89	0xD4E0	# HANGUL SYLLABLE PHIEUPH-WI-SSANGSIOS
-0xBF8A	0xD4E1	# HANGUL SYLLABLE PHIEUPH-WI-IEUNG
-0xBF8B	0xD4E2	# HANGUL SYLLABLE PHIEUPH-WI-CIEUC
-0xBF8C	0xD4E3	# HANGUL SYLLABLE PHIEUPH-WI-CHIEUCH
-0xBF8D	0xD4E4	# HANGUL SYLLABLE PHIEUPH-WI-KHIEUKH
-0xBF8E	0xD4E5	# HANGUL SYLLABLE PHIEUPH-WI-THIEUTH
-0xBF8F	0xD4E6	# HANGUL SYLLABLE PHIEUPH-WI-PHIEUPH
-0xBF90	0xD4E7	# HANGUL SYLLABLE PHIEUPH-WI-HIEUH
-0xBF91	0xD4E9	# HANGUL SYLLABLE PHIEUPH-YU-KIYEOK
-0xBF92	0xD4EA	# HANGUL SYLLABLE PHIEUPH-YU-SSANGKIYEOK
-0xBF93	0xD4EB	# HANGUL SYLLABLE PHIEUPH-YU-KIYEOKSIOS
-0xBF94	0xD4ED	# HANGUL SYLLABLE PHIEUPH-YU-NIEUNCIEUC
-0xBF95	0xD4EE	# HANGUL SYLLABLE PHIEUPH-YU-NIEUNHIEUH
-0xBF96	0xD4EF	# HANGUL SYLLABLE PHIEUPH-YU-TIKEUT
-0xBF97	0xD4F1	# HANGUL SYLLABLE PHIEUPH-YU-RIEULKIYEOK
-0xBF98	0xD4F2	# HANGUL SYLLABLE PHIEUPH-YU-RIEULMIEUM
-0xBF99	0xD4F3	# HANGUL SYLLABLE PHIEUPH-YU-RIEULPIEUP
-0xBF9A	0xD4F4	# HANGUL SYLLABLE PHIEUPH-YU-RIEULSIOS
-0xBF9B	0xD4F5	# HANGUL SYLLABLE PHIEUPH-YU-RIEULTHIEUTH
-0xBF9C	0xD4F6	# HANGUL SYLLABLE PHIEUPH-YU-RIEULPHIEUPH
-0xBF9D	0xD4F7	# HANGUL SYLLABLE PHIEUPH-YU-RIEULHIEUH
-0xBF9E	0xD4F9	# HANGUL SYLLABLE PHIEUPH-YU-PIEUP
-0xBF9F	0xD4FA	# HANGUL SYLLABLE PHIEUPH-YU-PIEUPSIOS
-0xBFA0	0xD4FC	# HANGUL SYLLABLE PHIEUPH-YU-SSANGSIOS
-0xBFA1	0xC5D0	# HANGUL SYLLABLE IEUNG-E
-0xBFA2	0xC5D1	# HANGUL SYLLABLE IEUNG-E-KIYEOK
-0xBFA3	0xC5D4	# HANGUL SYLLABLE IEUNG-E-NIEUN
-0xBFA4	0xC5D8	# HANGUL SYLLABLE IEUNG-E-RIEUL
-0xBFA5	0xC5E0	# HANGUL SYLLABLE IEUNG-E-MIEUM
-0xBFA6	0xC5E1	# HANGUL SYLLABLE IEUNG-E-PIEUP
-0xBFA7	0xC5E3	# HANGUL SYLLABLE IEUNG-E-SIOS
-0xBFA8	0xC5E5	# HANGUL SYLLABLE IEUNG-E-IEUNG
-0xBFA9	0xC5EC	# HANGUL SYLLABLE IEUNG-YEO
-0xBFAA	0xC5ED	# HANGUL SYLLABLE IEUNG-YEO-KIYEOK
-0xBFAB	0xC5EE	# HANGUL SYLLABLE IEUNG-YEO-SSANGKIYEOK
-0xBFAC	0xC5F0	# HANGUL SYLLABLE IEUNG-YEO-NIEUN
-0xBFAD	0xC5F4	# HANGUL SYLLABLE IEUNG-YEO-RIEUL
-0xBFAE	0xC5F6	# HANGUL SYLLABLE IEUNG-YEO-RIEULMIEUM
-0xBFAF	0xC5F7	# HANGUL SYLLABLE IEUNG-YEO-RIEULPIEUP
-0xBFB0	0xC5FC	# HANGUL SYLLABLE IEUNG-YEO-MIEUM
-0xBFB1	0xC5FD	# HANGUL SYLLABLE IEUNG-YEO-PIEUP
-0xBFB2	0xC5FE	# HANGUL SYLLABLE IEUNG-YEO-PIEUPSIOS
-0xBFB3	0xC5FF	# HANGUL SYLLABLE IEUNG-YEO-SIOS
-0xBFB4	0xC600	# HANGUL SYLLABLE IEUNG-YEO-SSANGSIOS
-0xBFB5	0xC601	# HANGUL SYLLABLE IEUNG-YEO-IEUNG
-0xBFB6	0xC605	# HANGUL SYLLABLE IEUNG-YEO-THIEUTH
-0xBFB7	0xC606	# HANGUL SYLLABLE IEUNG-YEO-PHIEUPH
-0xBFB8	0xC607	# HANGUL SYLLABLE IEUNG-YEO-HIEUH
-0xBFB9	0xC608	# HANGUL SYLLABLE IEUNG-YE
-0xBFBA	0xC60C	# HANGUL SYLLABLE IEUNG-YE-NIEUN
-0xBFBB	0xC610	# HANGUL SYLLABLE IEUNG-YE-RIEUL
-0xBFBC	0xC618	# HANGUL SYLLABLE IEUNG-YE-MIEUM
-0xBFBD	0xC619	# HANGUL SYLLABLE IEUNG-YE-PIEUP
-0xBFBE	0xC61B	# HANGUL SYLLABLE IEUNG-YE-SIOS
-0xBFBF	0xC61C	# HANGUL SYLLABLE IEUNG-YE-SSANGSIOS
-0xBFC0	0xC624	# HANGUL SYLLABLE IEUNG-O
-0xBFC1	0xC625	# HANGUL SYLLABLE IEUNG-O-KIYEOK
-0xBFC2	0xC628	# HANGUL SYLLABLE IEUNG-O-NIEUN
-0xBFC3	0xC62C	# HANGUL SYLLABLE IEUNG-O-RIEUL
-0xBFC4	0xC62D	# HANGUL SYLLABLE IEUNG-O-RIEULKIYEOK
-0xBFC5	0xC62E	# HANGUL SYLLABLE IEUNG-O-RIEULMIEUM
-0xBFC6	0xC630	# HANGUL SYLLABLE IEUNG-O-RIEULSIOS
-0xBFC7	0xC633	# HANGUL SYLLABLE IEUNG-O-RIEULHIEUH
-0xBFC8	0xC634	# HANGUL SYLLABLE IEUNG-O-MIEUM
-0xBFC9	0xC635	# HANGUL SYLLABLE IEUNG-O-PIEUP
-0xBFCA	0xC637	# HANGUL SYLLABLE IEUNG-O-SIOS
-0xBFCB	0xC639	# HANGUL SYLLABLE IEUNG-O-IEUNG
-0xBFCC	0xC63B	# HANGUL SYLLABLE IEUNG-O-CHIEUCH
-0xBFCD	0xC640	# HANGUL SYLLABLE IEUNG-WA
-0xBFCE	0xC641	# HANGUL SYLLABLE IEUNG-WA-KIYEOK
-0xBFCF	0xC644	# HANGUL SYLLABLE IEUNG-WA-NIEUN
-0xBFD0	0xC648	# HANGUL SYLLABLE IEUNG-WA-RIEUL
-0xBFD1	0xC650	# HANGUL SYLLABLE IEUNG-WA-MIEUM
-0xBFD2	0xC651	# HANGUL SYLLABLE IEUNG-WA-PIEUP
-0xBFD3	0xC653	# HANGUL SYLLABLE IEUNG-WA-SIOS
-0xBFD4	0xC654	# HANGUL SYLLABLE IEUNG-WA-SSANGSIOS
-0xBFD5	0xC655	# HANGUL SYLLABLE IEUNG-WA-IEUNG
-0xBFD6	0xC65C	# HANGUL SYLLABLE IEUNG-WAE
-0xBFD7	0xC65D	# HANGUL SYLLABLE IEUNG-WAE-KIYEOK
-0xBFD8	0xC660	# HANGUL SYLLABLE IEUNG-WAE-NIEUN
-0xBFD9	0xC66C	# HANGUL SYLLABLE IEUNG-WAE-MIEUM
-0xBFDA	0xC66F	# HANGUL SYLLABLE IEUNG-WAE-SIOS
-0xBFDB	0xC671	# HANGUL SYLLABLE IEUNG-WAE-IEUNG
-0xBFDC	0xC678	# HANGUL SYLLABLE IEUNG-OE
-0xBFDD	0xC679	# HANGUL SYLLABLE IEUNG-OE-KIYEOK
-0xBFDE	0xC67C	# HANGUL SYLLABLE IEUNG-OE-NIEUN
-0xBFDF	0xC680	# HANGUL SYLLABLE IEUNG-OE-RIEUL
-0xBFE0	0xC688	# HANGUL SYLLABLE IEUNG-OE-MIEUM
-0xBFE1	0xC689	# HANGUL SYLLABLE IEUNG-OE-PIEUP
-0xBFE2	0xC68B	# HANGUL SYLLABLE IEUNG-OE-SIOS
-0xBFE3	0xC68D	# HANGUL SYLLABLE IEUNG-OE-IEUNG
-0xBFE4	0xC694	# HANGUL SYLLABLE IEUNG-YO
-0xBFE5	0xC695	# HANGUL SYLLABLE IEUNG-YO-KIYEOK
-0xBFE6	0xC698	# HANGUL SYLLABLE IEUNG-YO-NIEUN
-0xBFE7	0xC69C	# HANGUL SYLLABLE IEUNG-YO-RIEUL
-0xBFE8	0xC6A4	# HANGUL SYLLABLE IEUNG-YO-MIEUM
-0xBFE9	0xC6A5	# HANGUL SYLLABLE IEUNG-YO-PIEUP
-0xBFEA	0xC6A7	# HANGUL SYLLABLE IEUNG-YO-SIOS
-0xBFEB	0xC6A9	# HANGUL SYLLABLE IEUNG-YO-IEUNG
-0xBFEC	0xC6B0	# HANGUL SYLLABLE IEUNG-U
-0xBFED	0xC6B1	# HANGUL SYLLABLE IEUNG-U-KIYEOK
-0xBFEE	0xC6B4	# HANGUL SYLLABLE IEUNG-U-NIEUN
-0xBFEF	0xC6B8	# HANGUL SYLLABLE IEUNG-U-RIEUL
-0xBFF0	0xC6B9	# HANGUL SYLLABLE IEUNG-U-RIEULKIYEOK
-0xBFF1	0xC6BA	# HANGUL SYLLABLE IEUNG-U-RIEULMIEUM
-0xBFF2	0xC6C0	# HANGUL SYLLABLE IEUNG-U-MIEUM
-0xBFF3	0xC6C1	# HANGUL SYLLABLE IEUNG-U-PIEUP
-0xBFF4	0xC6C3	# HANGUL SYLLABLE IEUNG-U-SIOS
-0xBFF5	0xC6C5	# HANGUL SYLLABLE IEUNG-U-IEUNG
-0xBFF6	0xC6CC	# HANGUL SYLLABLE IEUNG-WEO
-0xBFF7	0xC6CD	# HANGUL SYLLABLE IEUNG-WEO-KIYEOK
-0xBFF8	0xC6D0	# HANGUL SYLLABLE IEUNG-WEO-NIEUN
-0xBFF9	0xC6D4	# HANGUL SYLLABLE IEUNG-WEO-RIEUL
-0xBFFA	0xC6DC	# HANGUL SYLLABLE IEUNG-WEO-MIEUM
-0xBFFB	0xC6DD	# HANGUL SYLLABLE IEUNG-WEO-PIEUP
-0xBFFC	0xC6E0	# HANGUL SYLLABLE IEUNG-WEO-SSANGSIOS
-0xBFFD	0xC6E1	# HANGUL SYLLABLE IEUNG-WEO-IEUNG
-0xBFFE	0xC6E8	# HANGUL SYLLABLE IEUNG-WE
-0xC041	0xD4FE	# HANGUL SYLLABLE PHIEUPH-YU-CIEUC
-0xC042	0xD4FF	# HANGUL SYLLABLE PHIEUPH-YU-CHIEUCH
-0xC043	0xD500	# HANGUL SYLLABLE PHIEUPH-YU-KHIEUKH
-0xC044	0xD501	# HANGUL SYLLABLE PHIEUPH-YU-THIEUTH
-0xC045	0xD502	# HANGUL SYLLABLE PHIEUPH-YU-PHIEUPH
-0xC046	0xD503	# HANGUL SYLLABLE PHIEUPH-YU-HIEUH
-0xC047	0xD505	# HANGUL SYLLABLE PHIEUPH-EU-KIYEOK
-0xC048	0xD506	# HANGUL SYLLABLE PHIEUPH-EU-SSANGKIYEOK
-0xC049	0xD507	# HANGUL SYLLABLE PHIEUPH-EU-KIYEOKSIOS
-0xC04A	0xD509	# HANGUL SYLLABLE PHIEUPH-EU-NIEUNCIEUC
-0xC04B	0xD50A	# HANGUL SYLLABLE PHIEUPH-EU-NIEUNHIEUH
-0xC04C	0xD50B	# HANGUL SYLLABLE PHIEUPH-EU-TIKEUT
-0xC04D	0xD50D	# HANGUL SYLLABLE PHIEUPH-EU-RIEULKIYEOK
-0xC04E	0xD50E	# HANGUL SYLLABLE PHIEUPH-EU-RIEULMIEUM
-0xC04F	0xD50F	# HANGUL SYLLABLE PHIEUPH-EU-RIEULPIEUP
-0xC050	0xD510	# HANGUL SYLLABLE PHIEUPH-EU-RIEULSIOS
-0xC051	0xD511	# HANGUL SYLLABLE PHIEUPH-EU-RIEULTHIEUTH
-0xC052	0xD512	# HANGUL SYLLABLE PHIEUPH-EU-RIEULPHIEUPH
-0xC053	0xD513	# HANGUL SYLLABLE PHIEUPH-EU-RIEULHIEUH
-0xC054	0xD516	# HANGUL SYLLABLE PHIEUPH-EU-PIEUPSIOS
-0xC055	0xD518	# HANGUL SYLLABLE PHIEUPH-EU-SSANGSIOS
-0xC056	0xD519	# HANGUL SYLLABLE PHIEUPH-EU-IEUNG
-0xC057	0xD51A	# HANGUL SYLLABLE PHIEUPH-EU-CIEUC
-0xC058	0xD51B	# HANGUL SYLLABLE PHIEUPH-EU-CHIEUCH
-0xC059	0xD51C	# HANGUL SYLLABLE PHIEUPH-EU-KHIEUKH
-0xC05A	0xD51D	# HANGUL SYLLABLE PHIEUPH-EU-THIEUTH
-0xC061	0xD51E	# HANGUL SYLLABLE PHIEUPH-EU-PHIEUPH
-0xC062	0xD51F	# HANGUL SYLLABLE PHIEUPH-EU-HIEUH
-0xC063	0xD520	# HANGUL SYLLABLE PHIEUPH-YI
-0xC064	0xD521	# HANGUL SYLLABLE PHIEUPH-YI-KIYEOK
-0xC065	0xD522	# HANGUL SYLLABLE PHIEUPH-YI-SSANGKIYEOK
-0xC066	0xD523	# HANGUL SYLLABLE PHIEUPH-YI-KIYEOKSIOS
-0xC067	0xD524	# HANGUL SYLLABLE PHIEUPH-YI-NIEUN
-0xC068	0xD525	# HANGUL SYLLABLE PHIEUPH-YI-NIEUNCIEUC
-0xC069	0xD526	# HANGUL SYLLABLE PHIEUPH-YI-NIEUNHIEUH
-0xC06A	0xD527	# HANGUL SYLLABLE PHIEUPH-YI-TIKEUT
-0xC06B	0xD528	# HANGUL SYLLABLE PHIEUPH-YI-RIEUL
-0xC06C	0xD529	# HANGUL SYLLABLE PHIEUPH-YI-RIEULKIYEOK
-0xC06D	0xD52A	# HANGUL SYLLABLE PHIEUPH-YI-RIEULMIEUM
-0xC06E	0xD52B	# HANGUL SYLLABLE PHIEUPH-YI-RIEULPIEUP
-0xC06F	0xD52C	# HANGUL SYLLABLE PHIEUPH-YI-RIEULSIOS
-0xC070	0xD52D	# HANGUL SYLLABLE PHIEUPH-YI-RIEULTHIEUTH
-0xC071	0xD52E	# HANGUL SYLLABLE PHIEUPH-YI-RIEULPHIEUPH
-0xC072	0xD52F	# HANGUL SYLLABLE PHIEUPH-YI-RIEULHIEUH
-0xC073	0xD530	# HANGUL SYLLABLE PHIEUPH-YI-MIEUM
-0xC074	0xD531	# HANGUL SYLLABLE PHIEUPH-YI-PIEUP
-0xC075	0xD532	# HANGUL SYLLABLE PHIEUPH-YI-PIEUPSIOS
-0xC076	0xD533	# HANGUL SYLLABLE PHIEUPH-YI-SIOS
-0xC077	0xD534	# HANGUL SYLLABLE PHIEUPH-YI-SSANGSIOS
-0xC078	0xD535	# HANGUL SYLLABLE PHIEUPH-YI-IEUNG
-0xC079	0xD536	# HANGUL SYLLABLE PHIEUPH-YI-CIEUC
-0xC07A	0xD537	# HANGUL SYLLABLE PHIEUPH-YI-CHIEUCH
-0xC081	0xD538	# HANGUL SYLLABLE PHIEUPH-YI-KHIEUKH
-0xC082	0xD539	# HANGUL SYLLABLE PHIEUPH-YI-THIEUTH
-0xC083	0xD53A	# HANGUL SYLLABLE PHIEUPH-YI-PHIEUPH
-0xC084	0xD53B	# HANGUL SYLLABLE PHIEUPH-YI-HIEUH
-0xC085	0xD53E	# HANGUL SYLLABLE PHIEUPH-I-SSANGKIYEOK
-0xC086	0xD53F	# HANGUL SYLLABLE PHIEUPH-I-KIYEOKSIOS
-0xC087	0xD541	# HANGUL SYLLABLE PHIEUPH-I-NIEUNCIEUC
-0xC088	0xD542	# HANGUL SYLLABLE PHIEUPH-I-NIEUNHIEUH
-0xC089	0xD543	# HANGUL SYLLABLE PHIEUPH-I-TIKEUT
-0xC08A	0xD545	# HANGUL SYLLABLE PHIEUPH-I-RIEULKIYEOK
-0xC08B	0xD546	# HANGUL SYLLABLE PHIEUPH-I-RIEULMIEUM
-0xC08C	0xD547	# HANGUL SYLLABLE PHIEUPH-I-RIEULPIEUP
-0xC08D	0xD548	# HANGUL SYLLABLE PHIEUPH-I-RIEULSIOS
-0xC08E	0xD549	# HANGUL SYLLABLE PHIEUPH-I-RIEULTHIEUTH
-0xC08F	0xD54A	# HANGUL SYLLABLE PHIEUPH-I-RIEULPHIEUPH
-0xC090	0xD54B	# HANGUL SYLLABLE PHIEUPH-I-RIEULHIEUH
-0xC091	0xD54E	# HANGUL SYLLABLE PHIEUPH-I-PIEUPSIOS
-0xC092	0xD550	# HANGUL SYLLABLE PHIEUPH-I-SSANGSIOS
-0xC093	0xD552	# HANGUL SYLLABLE PHIEUPH-I-CIEUC
-0xC094	0xD553	# HANGUL SYLLABLE PHIEUPH-I-CHIEUCH
-0xC095	0xD554	# HANGUL SYLLABLE PHIEUPH-I-KHIEUKH
-0xC096	0xD555	# HANGUL SYLLABLE PHIEUPH-I-THIEUTH
-0xC097	0xD556	# HANGUL SYLLABLE PHIEUPH-I-PHIEUPH
-0xC098	0xD557	# HANGUL SYLLABLE PHIEUPH-I-HIEUH
-0xC099	0xD55A	# HANGUL SYLLABLE HIEUH-A-SSANGKIYEOK
-0xC09A	0xD55B	# HANGUL SYLLABLE HIEUH-A-KIYEOKSIOS
-0xC09B	0xD55D	# HANGUL SYLLABLE HIEUH-A-NIEUNCIEUC
-0xC09C	0xD55E	# HANGUL SYLLABLE HIEUH-A-NIEUNHIEUH
-0xC09D	0xD55F	# HANGUL SYLLABLE HIEUH-A-TIKEUT
-0xC09E	0xD561	# HANGUL SYLLABLE HIEUH-A-RIEULKIYEOK
-0xC09F	0xD562	# HANGUL SYLLABLE HIEUH-A-RIEULMIEUM
-0xC0A0	0xD563	# HANGUL SYLLABLE HIEUH-A-RIEULPIEUP
-0xC0A1	0xC6E9	# HANGUL SYLLABLE IEUNG-WE-KIYEOK
-0xC0A2	0xC6EC	# HANGUL SYLLABLE IEUNG-WE-NIEUN
-0xC0A3	0xC6F0	# HANGUL SYLLABLE IEUNG-WE-RIEUL
-0xC0A4	0xC6F8	# HANGUL SYLLABLE IEUNG-WE-MIEUM
-0xC0A5	0xC6F9	# HANGUL SYLLABLE IEUNG-WE-PIEUP
-0xC0A6	0xC6FD	# HANGUL SYLLABLE IEUNG-WE-IEUNG
-0xC0A7	0xC704	# HANGUL SYLLABLE IEUNG-WI
-0xC0A8	0xC705	# HANGUL SYLLABLE IEUNG-WI-KIYEOK
-0xC0A9	0xC708	# HANGUL SYLLABLE IEUNG-WI-NIEUN
-0xC0AA	0xC70C	# HANGUL SYLLABLE IEUNG-WI-RIEUL
-0xC0AB	0xC714	# HANGUL SYLLABLE IEUNG-WI-MIEUM
-0xC0AC	0xC715	# HANGUL SYLLABLE IEUNG-WI-PIEUP
-0xC0AD	0xC717	# HANGUL SYLLABLE IEUNG-WI-SIOS
-0xC0AE	0xC719	# HANGUL SYLLABLE IEUNG-WI-IEUNG
-0xC0AF	0xC720	# HANGUL SYLLABLE IEUNG-YU
-0xC0B0	0xC721	# HANGUL SYLLABLE IEUNG-YU-KIYEOK
-0xC0B1	0xC724	# HANGUL SYLLABLE IEUNG-YU-NIEUN
-0xC0B2	0xC728	# HANGUL SYLLABLE IEUNG-YU-RIEUL
-0xC0B3	0xC730	# HANGUL SYLLABLE IEUNG-YU-MIEUM
-0xC0B4	0xC731	# HANGUL SYLLABLE IEUNG-YU-PIEUP
-0xC0B5	0xC733	# HANGUL SYLLABLE IEUNG-YU-SIOS
-0xC0B6	0xC735	# HANGUL SYLLABLE IEUNG-YU-IEUNG
-0xC0B7	0xC737	# HANGUL SYLLABLE IEUNG-YU-CHIEUCH
-0xC0B8	0xC73C	# HANGUL SYLLABLE IEUNG-EU
-0xC0B9	0xC73D	# HANGUL SYLLABLE IEUNG-EU-KIYEOK
-0xC0BA	0xC740	# HANGUL SYLLABLE IEUNG-EU-NIEUN
-0xC0BB	0xC744	# HANGUL SYLLABLE IEUNG-EU-RIEUL
-0xC0BC	0xC74A	# HANGUL SYLLABLE IEUNG-EU-RIEULPHIEUPH
-0xC0BD	0xC74C	# HANGUL SYLLABLE IEUNG-EU-MIEUM
-0xC0BE	0xC74D	# HANGUL SYLLABLE IEUNG-EU-PIEUP
-0xC0BF	0xC74F	# HANGUL SYLLABLE IEUNG-EU-SIOS
-0xC0C0	0xC751	# HANGUL SYLLABLE IEUNG-EU-IEUNG
-0xC0C1	0xC752	# HANGUL SYLLABLE IEUNG-EU-CIEUC
-0xC0C2	0xC753	# HANGUL SYLLABLE IEUNG-EU-CHIEUCH
-0xC0C3	0xC754	# HANGUL SYLLABLE IEUNG-EU-KHIEUKH
-0xC0C4	0xC755	# HANGUL SYLLABLE IEUNG-EU-THIEUTH
-0xC0C5	0xC756	# HANGUL SYLLABLE IEUNG-EU-PHIEUPH
-0xC0C6	0xC757	# HANGUL SYLLABLE IEUNG-EU-HIEUH
-0xC0C7	0xC758	# HANGUL SYLLABLE IEUNG-YI
-0xC0C8	0xC75C	# HANGUL SYLLABLE IEUNG-YI-NIEUN
-0xC0C9	0xC760	# HANGUL SYLLABLE IEUNG-YI-RIEUL
-0xC0CA	0xC768	# HANGUL SYLLABLE IEUNG-YI-MIEUM
-0xC0CB	0xC76B	# HANGUL SYLLABLE IEUNG-YI-SIOS
-0xC0CC	0xC774	# HANGUL SYLLABLE IEUNG-I
-0xC0CD	0xC775	# HANGUL SYLLABLE IEUNG-I-KIYEOK
-0xC0CE	0xC778	# HANGUL SYLLABLE IEUNG-I-NIEUN
-0xC0CF	0xC77C	# HANGUL SYLLABLE IEUNG-I-RIEUL
-0xC0D0	0xC77D	# HANGUL SYLLABLE IEUNG-I-RIEULKIYEOK
-0xC0D1	0xC77E	# HANGUL SYLLABLE IEUNG-I-RIEULMIEUM
-0xC0D2	0xC783	# HANGUL SYLLABLE IEUNG-I-RIEULHIEUH
-0xC0D3	0xC784	# HANGUL SYLLABLE IEUNG-I-MIEUM
-0xC0D4	0xC785	# HANGUL SYLLABLE IEUNG-I-PIEUP
-0xC0D5	0xC787	# HANGUL SYLLABLE IEUNG-I-SIOS
-0xC0D6	0xC788	# HANGUL SYLLABLE IEUNG-I-SSANGSIOS
-0xC0D7	0xC789	# HANGUL SYLLABLE IEUNG-I-IEUNG
-0xC0D8	0xC78A	# HANGUL SYLLABLE IEUNG-I-CIEUC
-0xC0D9	0xC78E	# HANGUL SYLLABLE IEUNG-I-PHIEUPH
-0xC0DA	0xC790	# HANGUL SYLLABLE CIEUC-A
-0xC0DB	0xC791	# HANGUL SYLLABLE CIEUC-A-KIYEOK
-0xC0DC	0xC794	# HANGUL SYLLABLE CIEUC-A-NIEUN
-0xC0DD	0xC796	# HANGUL SYLLABLE CIEUC-A-NIEUNHIEUH
-0xC0DE	0xC797	# HANGUL SYLLABLE CIEUC-A-TIKEUT
-0xC0DF	0xC798	# HANGUL SYLLABLE CIEUC-A-RIEUL
-0xC0E0	0xC79A	# HANGUL SYLLABLE CIEUC-A-RIEULMIEUM
-0xC0E1	0xC7A0	# HANGUL SYLLABLE CIEUC-A-MIEUM
-0xC0E2	0xC7A1	# HANGUL SYLLABLE CIEUC-A-PIEUP
-0xC0E3	0xC7A3	# HANGUL SYLLABLE CIEUC-A-SIOS
-0xC0E4	0xC7A4	# HANGUL SYLLABLE CIEUC-A-SSANGSIOS
-0xC0E5	0xC7A5	# HANGUL SYLLABLE CIEUC-A-IEUNG
-0xC0E6	0xC7A6	# HANGUL SYLLABLE CIEUC-A-CIEUC
-0xC0E7	0xC7AC	# HANGUL SYLLABLE CIEUC-AE
-0xC0E8	0xC7AD	# HANGUL SYLLABLE CIEUC-AE-KIYEOK
-0xC0E9	0xC7B0	# HANGUL SYLLABLE CIEUC-AE-NIEUN
-0xC0EA	0xC7B4	# HANGUL SYLLABLE CIEUC-AE-RIEUL
-0xC0EB	0xC7BC	# HANGUL SYLLABLE CIEUC-AE-MIEUM
-0xC0EC	0xC7BD	# HANGUL SYLLABLE CIEUC-AE-PIEUP
-0xC0ED	0xC7BF	# HANGUL SYLLABLE CIEUC-AE-SIOS
-0xC0EE	0xC7C0	# HANGUL SYLLABLE CIEUC-AE-SSANGSIOS
-0xC0EF	0xC7C1	# HANGUL SYLLABLE CIEUC-AE-IEUNG
-0xC0F0	0xC7C8	# HANGUL SYLLABLE CIEUC-YA
-0xC0F1	0xC7C9	# HANGUL SYLLABLE CIEUC-YA-KIYEOK
-0xC0F2	0xC7CC	# HANGUL SYLLABLE CIEUC-YA-NIEUN
-0xC0F3	0xC7CE	# HANGUL SYLLABLE CIEUC-YA-NIEUNHIEUH
-0xC0F4	0xC7D0	# HANGUL SYLLABLE CIEUC-YA-RIEUL
-0xC0F5	0xC7D8	# HANGUL SYLLABLE CIEUC-YA-MIEUM
-0xC0F6	0xC7DD	# HANGUL SYLLABLE CIEUC-YA-IEUNG
-0xC0F7	0xC7E4	# HANGUL SYLLABLE CIEUC-YAE
-0xC0F8	0xC7E8	# HANGUL SYLLABLE CIEUC-YAE-NIEUN
-0xC0F9	0xC7EC	# HANGUL SYLLABLE CIEUC-YAE-RIEUL
-0xC0FA	0xC800	# HANGUL SYLLABLE CIEUC-EO
-0xC0FB	0xC801	# HANGUL SYLLABLE CIEUC-EO-KIYEOK
-0xC0FC	0xC804	# HANGUL SYLLABLE CIEUC-EO-NIEUN
-0xC0FD	0xC808	# HANGUL SYLLABLE CIEUC-EO-RIEUL
-0xC0FE	0xC80A	# HANGUL SYLLABLE CIEUC-EO-RIEULMIEUM
-0xC141	0xD564	# HANGUL SYLLABLE HIEUH-A-RIEULSIOS
-0xC142	0xD566	# HANGUL SYLLABLE HIEUH-A-RIEULPHIEUPH
-0xC143	0xD567	# HANGUL SYLLABLE HIEUH-A-RIEULHIEUH
-0xC144	0xD56A	# HANGUL SYLLABLE HIEUH-A-PIEUPSIOS
-0xC145	0xD56C	# HANGUL SYLLABLE HIEUH-A-SSANGSIOS
-0xC146	0xD56E	# HANGUL SYLLABLE HIEUH-A-CIEUC
-0xC147	0xD56F	# HANGUL SYLLABLE HIEUH-A-CHIEUCH
-0xC148	0xD570	# HANGUL SYLLABLE HIEUH-A-KHIEUKH
-0xC149	0xD571	# HANGUL SYLLABLE HIEUH-A-THIEUTH
-0xC14A	0xD572	# HANGUL SYLLABLE HIEUH-A-PHIEUPH
-0xC14B	0xD573	# HANGUL SYLLABLE HIEUH-A-HIEUH
-0xC14C	0xD576	# HANGUL SYLLABLE HIEUH-AE-SSANGKIYEOK
-0xC14D	0xD577	# HANGUL SYLLABLE HIEUH-AE-KIYEOKSIOS
-0xC14E	0xD579	# HANGUL SYLLABLE HIEUH-AE-NIEUNCIEUC
-0xC14F	0xD57A	# HANGUL SYLLABLE HIEUH-AE-NIEUNHIEUH
-0xC150	0xD57B	# HANGUL SYLLABLE HIEUH-AE-TIKEUT
-0xC151	0xD57D	# HANGUL SYLLABLE HIEUH-AE-RIEULKIYEOK
-0xC152	0xD57E	# HANGUL SYLLABLE HIEUH-AE-RIEULMIEUM
-0xC153	0xD57F	# HANGUL SYLLABLE HIEUH-AE-RIEULPIEUP
-0xC154	0xD580	# HANGUL SYLLABLE HIEUH-AE-RIEULSIOS
-0xC155	0xD581	# HANGUL SYLLABLE HIEUH-AE-RIEULTHIEUTH
-0xC156	0xD582	# HANGUL SYLLABLE HIEUH-AE-RIEULPHIEUPH
-0xC157	0xD583	# HANGUL SYLLABLE HIEUH-AE-RIEULHIEUH
-0xC158	0xD586	# HANGUL SYLLABLE HIEUH-AE-PIEUPSIOS
-0xC159	0xD58A	# HANGUL SYLLABLE HIEUH-AE-CIEUC
-0xC15A	0xD58B	# HANGUL SYLLABLE HIEUH-AE-CHIEUCH
-0xC161	0xD58C	# HANGUL SYLLABLE HIEUH-AE-KHIEUKH
-0xC162	0xD58D	# HANGUL SYLLABLE HIEUH-AE-THIEUTH
-0xC163	0xD58E	# HANGUL SYLLABLE HIEUH-AE-PHIEUPH
-0xC164	0xD58F	# HANGUL SYLLABLE HIEUH-AE-HIEUH
-0xC165	0xD591	# HANGUL SYLLABLE HIEUH-YA-KIYEOK
-0xC166	0xD592	# HANGUL SYLLABLE HIEUH-YA-SSANGKIYEOK
-0xC167	0xD593	# HANGUL SYLLABLE HIEUH-YA-KIYEOKSIOS
-0xC168	0xD594	# HANGUL SYLLABLE HIEUH-YA-NIEUN
-0xC169	0xD595	# HANGUL SYLLABLE HIEUH-YA-NIEUNCIEUC
-0xC16A	0xD596	# HANGUL SYLLABLE HIEUH-YA-NIEUNHIEUH
-0xC16B	0xD597	# HANGUL SYLLABLE HIEUH-YA-TIKEUT
-0xC16C	0xD598	# HANGUL SYLLABLE HIEUH-YA-RIEUL
-0xC16D	0xD599	# HANGUL SYLLABLE HIEUH-YA-RIEULKIYEOK
-0xC16E	0xD59A	# HANGUL SYLLABLE HIEUH-YA-RIEULMIEUM
-0xC16F	0xD59B	# HANGUL SYLLABLE HIEUH-YA-RIEULPIEUP
-0xC170	0xD59C	# HANGUL SYLLABLE HIEUH-YA-RIEULSIOS
-0xC171	0xD59D	# HANGUL SYLLABLE HIEUH-YA-RIEULTHIEUTH
-0xC172	0xD59E	# HANGUL SYLLABLE HIEUH-YA-RIEULPHIEUPH
-0xC173	0xD59F	# HANGUL SYLLABLE HIEUH-YA-RIEULHIEUH
-0xC174	0xD5A0	# HANGUL SYLLABLE HIEUH-YA-MIEUM
-0xC175	0xD5A1	# HANGUL SYLLABLE HIEUH-YA-PIEUP
-0xC176	0xD5A2	# HANGUL SYLLABLE HIEUH-YA-PIEUPSIOS
-0xC177	0xD5A3	# HANGUL SYLLABLE HIEUH-YA-SIOS
-0xC178	0xD5A4	# HANGUL SYLLABLE HIEUH-YA-SSANGSIOS
-0xC179	0xD5A6	# HANGUL SYLLABLE HIEUH-YA-CIEUC
-0xC17A	0xD5A7	# HANGUL SYLLABLE HIEUH-YA-CHIEUCH
-0xC181	0xD5A8	# HANGUL SYLLABLE HIEUH-YA-KHIEUKH
-0xC182	0xD5A9	# HANGUL SYLLABLE HIEUH-YA-THIEUTH
-0xC183	0xD5AA	# HANGUL SYLLABLE HIEUH-YA-PHIEUPH
-0xC184	0xD5AB	# HANGUL SYLLABLE HIEUH-YA-HIEUH
-0xC185	0xD5AC	# HANGUL SYLLABLE HIEUH-YAE
-0xC186	0xD5AD	# HANGUL SYLLABLE HIEUH-YAE-KIYEOK
-0xC187	0xD5AE	# HANGUL SYLLABLE HIEUH-YAE-SSANGKIYEOK
-0xC188	0xD5AF	# HANGUL SYLLABLE HIEUH-YAE-KIYEOKSIOS
-0xC189	0xD5B0	# HANGUL SYLLABLE HIEUH-YAE-NIEUN
-0xC18A	0xD5B1	# HANGUL SYLLABLE HIEUH-YAE-NIEUNCIEUC
-0xC18B	0xD5B2	# HANGUL SYLLABLE HIEUH-YAE-NIEUNHIEUH
-0xC18C	0xD5B3	# HANGUL SYLLABLE HIEUH-YAE-TIKEUT
-0xC18D	0xD5B4	# HANGUL SYLLABLE HIEUH-YAE-RIEUL
-0xC18E	0xD5B5	# HANGUL SYLLABLE HIEUH-YAE-RIEULKIYEOK
-0xC18F	0xD5B6	# HANGUL SYLLABLE HIEUH-YAE-RIEULMIEUM
-0xC190	0xD5B7	# HANGUL SYLLABLE HIEUH-YAE-RIEULPIEUP
-0xC191	0xD5B8	# HANGUL SYLLABLE HIEUH-YAE-RIEULSIOS
-0xC192	0xD5B9	# HANGUL SYLLABLE HIEUH-YAE-RIEULTHIEUTH
-0xC193	0xD5BA	# HANGUL SYLLABLE HIEUH-YAE-RIEULPHIEUPH
-0xC194	0xD5BB	# HANGUL SYLLABLE HIEUH-YAE-RIEULHIEUH
-0xC195	0xD5BC	# HANGUL SYLLABLE HIEUH-YAE-MIEUM
-0xC196	0xD5BD	# HANGUL SYLLABLE HIEUH-YAE-PIEUP
-0xC197	0xD5BE	# HANGUL SYLLABLE HIEUH-YAE-PIEUPSIOS
-0xC198	0xD5BF	# HANGUL SYLLABLE HIEUH-YAE-SIOS
-0xC199	0xD5C0	# HANGUL SYLLABLE HIEUH-YAE-SSANGSIOS
-0xC19A	0xD5C1	# HANGUL SYLLABLE HIEUH-YAE-IEUNG
-0xC19B	0xD5C2	# HANGUL SYLLABLE HIEUH-YAE-CIEUC
-0xC19C	0xD5C3	# HANGUL SYLLABLE HIEUH-YAE-CHIEUCH
-0xC19D	0xD5C4	# HANGUL SYLLABLE HIEUH-YAE-KHIEUKH
-0xC19E	0xD5C5	# HANGUL SYLLABLE HIEUH-YAE-THIEUTH
-0xC19F	0xD5C6	# HANGUL SYLLABLE HIEUH-YAE-PHIEUPH
-0xC1A0	0xD5C7	# HANGUL SYLLABLE HIEUH-YAE-HIEUH
-0xC1A1	0xC810	# HANGUL SYLLABLE CIEUC-EO-MIEUM
-0xC1A2	0xC811	# HANGUL SYLLABLE CIEUC-EO-PIEUP
-0xC1A3	0xC813	# HANGUL SYLLABLE CIEUC-EO-SIOS
-0xC1A4	0xC815	# HANGUL SYLLABLE CIEUC-EO-IEUNG
-0xC1A5	0xC816	# HANGUL SYLLABLE CIEUC-EO-CIEUC
-0xC1A6	0xC81C	# HANGUL SYLLABLE CIEUC-E
-0xC1A7	0xC81D	# HANGUL SYLLABLE CIEUC-E-KIYEOK
-0xC1A8	0xC820	# HANGUL SYLLABLE CIEUC-E-NIEUN
-0xC1A9	0xC824	# HANGUL SYLLABLE CIEUC-E-RIEUL
-0xC1AA	0xC82C	# HANGUL SYLLABLE CIEUC-E-MIEUM
-0xC1AB	0xC82D	# HANGUL SYLLABLE CIEUC-E-PIEUP
-0xC1AC	0xC82F	# HANGUL SYLLABLE CIEUC-E-SIOS
-0xC1AD	0xC831	# HANGUL SYLLABLE CIEUC-E-IEUNG
-0xC1AE	0xC838	# HANGUL SYLLABLE CIEUC-YEO
-0xC1AF	0xC83C	# HANGUL SYLLABLE CIEUC-YEO-NIEUN
-0xC1B0	0xC840	# HANGUL SYLLABLE CIEUC-YEO-RIEUL
-0xC1B1	0xC848	# HANGUL SYLLABLE CIEUC-YEO-MIEUM
-0xC1B2	0xC849	# HANGUL SYLLABLE CIEUC-YEO-PIEUP
-0xC1B3	0xC84C	# HANGUL SYLLABLE CIEUC-YEO-SSANGSIOS
-0xC1B4	0xC84D	# HANGUL SYLLABLE CIEUC-YEO-IEUNG
-0xC1B5	0xC854	# HANGUL SYLLABLE CIEUC-YE
-0xC1B6	0xC870	# HANGUL SYLLABLE CIEUC-O
-0xC1B7	0xC871	# HANGUL SYLLABLE CIEUC-O-KIYEOK
-0xC1B8	0xC874	# HANGUL SYLLABLE CIEUC-O-NIEUN
-0xC1B9	0xC878	# HANGUL SYLLABLE CIEUC-O-RIEUL
-0xC1BA	0xC87A	# HANGUL SYLLABLE CIEUC-O-RIEULMIEUM
-0xC1BB	0xC880	# HANGUL SYLLABLE CIEUC-O-MIEUM
-0xC1BC	0xC881	# HANGUL SYLLABLE CIEUC-O-PIEUP
-0xC1BD	0xC883	# HANGUL SYLLABLE CIEUC-O-SIOS
-0xC1BE	0xC885	# HANGUL SYLLABLE CIEUC-O-IEUNG
-0xC1BF	0xC886	# HANGUL SYLLABLE CIEUC-O-CIEUC
-0xC1C0	0xC887	# HANGUL SYLLABLE CIEUC-O-CHIEUCH
-0xC1C1	0xC88B	# HANGUL SYLLABLE CIEUC-O-HIEUH
-0xC1C2	0xC88C	# HANGUL SYLLABLE CIEUC-WA
-0xC1C3	0xC88D	# HANGUL SYLLABLE CIEUC-WA-KIYEOK
-0xC1C4	0xC894	# HANGUL SYLLABLE CIEUC-WA-RIEUL
-0xC1C5	0xC89D	# HANGUL SYLLABLE CIEUC-WA-PIEUP
-0xC1C6	0xC89F	# HANGUL SYLLABLE CIEUC-WA-SIOS
-0xC1C7	0xC8A1	# HANGUL SYLLABLE CIEUC-WA-IEUNG
-0xC1C8	0xC8A8	# HANGUL SYLLABLE CIEUC-WAE
-0xC1C9	0xC8BC	# HANGUL SYLLABLE CIEUC-WAE-SSANGSIOS
-0xC1CA	0xC8BD	# HANGUL SYLLABLE CIEUC-WAE-IEUNG
-0xC1CB	0xC8C4	# HANGUL SYLLABLE CIEUC-OE
-0xC1CC	0xC8C8	# HANGUL SYLLABLE CIEUC-OE-NIEUN
-0xC1CD	0xC8CC	# HANGUL SYLLABLE CIEUC-OE-RIEUL
-0xC1CE	0xC8D4	# HANGUL SYLLABLE CIEUC-OE-MIEUM
-0xC1CF	0xC8D5	# HANGUL SYLLABLE CIEUC-OE-PIEUP
-0xC1D0	0xC8D7	# HANGUL SYLLABLE CIEUC-OE-SIOS
-0xC1D1	0xC8D9	# HANGUL SYLLABLE CIEUC-OE-IEUNG
-0xC1D2	0xC8E0	# HANGUL SYLLABLE CIEUC-YO
-0xC1D3	0xC8E1	# HANGUL SYLLABLE CIEUC-YO-KIYEOK
-0xC1D4	0xC8E4	# HANGUL SYLLABLE CIEUC-YO-NIEUN
-0xC1D5	0xC8F5	# HANGUL SYLLABLE CIEUC-YO-IEUNG
-0xC1D6	0xC8FC	# HANGUL SYLLABLE CIEUC-U
-0xC1D7	0xC8FD	# HANGUL SYLLABLE CIEUC-U-KIYEOK
-0xC1D8	0xC900	# HANGUL SYLLABLE CIEUC-U-NIEUN
-0xC1D9	0xC904	# HANGUL SYLLABLE CIEUC-U-RIEUL
-0xC1DA	0xC905	# HANGUL SYLLABLE CIEUC-U-RIEULKIYEOK
-0xC1DB	0xC906	# HANGUL SYLLABLE CIEUC-U-RIEULMIEUM
-0xC1DC	0xC90C	# HANGUL SYLLABLE CIEUC-U-MIEUM
-0xC1DD	0xC90D	# HANGUL SYLLABLE CIEUC-U-PIEUP
-0xC1DE	0xC90F	# HANGUL SYLLABLE CIEUC-U-SIOS
-0xC1DF	0xC911	# HANGUL SYLLABLE CIEUC-U-IEUNG
-0xC1E0	0xC918	# HANGUL SYLLABLE CIEUC-WEO
-0xC1E1	0xC92C	# HANGUL SYLLABLE CIEUC-WEO-SSANGSIOS
-0xC1E2	0xC934	# HANGUL SYLLABLE CIEUC-WE
-0xC1E3	0xC950	# HANGUL SYLLABLE CIEUC-WI
-0xC1E4	0xC951	# HANGUL SYLLABLE CIEUC-WI-KIYEOK
-0xC1E5	0xC954	# HANGUL SYLLABLE CIEUC-WI-NIEUN
-0xC1E6	0xC958	# HANGUL SYLLABLE CIEUC-WI-RIEUL
-0xC1E7	0xC960	# HANGUL SYLLABLE CIEUC-WI-MIEUM
-0xC1E8	0xC961	# HANGUL SYLLABLE CIEUC-WI-PIEUP
-0xC1E9	0xC963	# HANGUL SYLLABLE CIEUC-WI-SIOS
-0xC1EA	0xC96C	# HANGUL SYLLABLE CIEUC-YU
-0xC1EB	0xC970	# HANGUL SYLLABLE CIEUC-YU-NIEUN
-0xC1EC	0xC974	# HANGUL SYLLABLE CIEUC-YU-RIEUL
-0xC1ED	0xC97C	# HANGUL SYLLABLE CIEUC-YU-MIEUM
-0xC1EE	0xC988	# HANGUL SYLLABLE CIEUC-EU
-0xC1EF	0xC989	# HANGUL SYLLABLE CIEUC-EU-KIYEOK
-0xC1F0	0xC98C	# HANGUL SYLLABLE CIEUC-EU-NIEUN
-0xC1F1	0xC990	# HANGUL SYLLABLE CIEUC-EU-RIEUL
-0xC1F2	0xC998	# HANGUL SYLLABLE CIEUC-EU-MIEUM
-0xC1F3	0xC999	# HANGUL SYLLABLE CIEUC-EU-PIEUP
-0xC1F4	0xC99B	# HANGUL SYLLABLE CIEUC-EU-SIOS
-0xC1F5	0xC99D	# HANGUL SYLLABLE CIEUC-EU-IEUNG
-0xC1F6	0xC9C0	# HANGUL SYLLABLE CIEUC-I
-0xC1F7	0xC9C1	# HANGUL SYLLABLE CIEUC-I-KIYEOK
-0xC1F8	0xC9C4	# HANGUL SYLLABLE CIEUC-I-NIEUN
-0xC1F9	0xC9C7	# HANGUL SYLLABLE CIEUC-I-TIKEUT
-0xC1FA	0xC9C8	# HANGUL SYLLABLE CIEUC-I-RIEUL
-0xC1FB	0xC9CA	# HANGUL SYLLABLE CIEUC-I-RIEULMIEUM
-0xC1FC	0xC9D0	# HANGUL SYLLABLE CIEUC-I-MIEUM
-0xC1FD	0xC9D1	# HANGUL SYLLABLE CIEUC-I-PIEUP
-0xC1FE	0xC9D3	# HANGUL SYLLABLE CIEUC-I-SIOS
-0xC241	0xD5CA	# HANGUL SYLLABLE HIEUH-EO-SSANGKIYEOK
-0xC242	0xD5CB	# HANGUL SYLLABLE HIEUH-EO-KIYEOKSIOS
-0xC243	0xD5CD	# HANGUL SYLLABLE HIEUH-EO-NIEUNCIEUC
-0xC244	0xD5CE	# HANGUL SYLLABLE HIEUH-EO-NIEUNHIEUH
-0xC245	0xD5CF	# HANGUL SYLLABLE HIEUH-EO-TIKEUT
-0xC246	0xD5D1	# HANGUL SYLLABLE HIEUH-EO-RIEULKIYEOK
-0xC247	0xD5D3	# HANGUL SYLLABLE HIEUH-EO-RIEULPIEUP
-0xC248	0xD5D4	# HANGUL SYLLABLE HIEUH-EO-RIEULSIOS
-0xC249	0xD5D5	# HANGUL SYLLABLE HIEUH-EO-RIEULTHIEUTH
-0xC24A	0xD5D6	# HANGUL SYLLABLE HIEUH-EO-RIEULPHIEUPH
-0xC24B	0xD5D7	# HANGUL SYLLABLE HIEUH-EO-RIEULHIEUH
-0xC24C	0xD5DA	# HANGUL SYLLABLE HIEUH-EO-PIEUPSIOS
-0xC24D	0xD5DC	# HANGUL SYLLABLE HIEUH-EO-SSANGSIOS
-0xC24E	0xD5DE	# HANGUL SYLLABLE HIEUH-EO-CIEUC
-0xC24F	0xD5DF	# HANGUL SYLLABLE HIEUH-EO-CHIEUCH
-0xC250	0xD5E0	# HANGUL SYLLABLE HIEUH-EO-KHIEUKH
-0xC251	0xD5E1	# HANGUL SYLLABLE HIEUH-EO-THIEUTH
-0xC252	0xD5E2	# HANGUL SYLLABLE HIEUH-EO-PHIEUPH
-0xC253	0xD5E3	# HANGUL SYLLABLE HIEUH-EO-HIEUH
-0xC254	0xD5E6	# HANGUL SYLLABLE HIEUH-E-SSANGKIYEOK
-0xC255	0xD5E7	# HANGUL SYLLABLE HIEUH-E-KIYEOKSIOS
-0xC256	0xD5E9	# HANGUL SYLLABLE HIEUH-E-NIEUNCIEUC
-0xC257	0xD5EA	# HANGUL SYLLABLE HIEUH-E-NIEUNHIEUH
-0xC258	0xD5EB	# HANGUL SYLLABLE HIEUH-E-TIKEUT
-0xC259	0xD5ED	# HANGUL SYLLABLE HIEUH-E-RIEULKIYEOK
-0xC25A	0xD5EE	# HANGUL SYLLABLE HIEUH-E-RIEULMIEUM
-0xC261	0xD5EF	# HANGUL SYLLABLE HIEUH-E-RIEULPIEUP
-0xC262	0xD5F0	# HANGUL SYLLABLE HIEUH-E-RIEULSIOS
-0xC263	0xD5F1	# HANGUL SYLLABLE HIEUH-E-RIEULTHIEUTH
-0xC264	0xD5F2	# HANGUL SYLLABLE HIEUH-E-RIEULPHIEUPH
-0xC265	0xD5F3	# HANGUL SYLLABLE HIEUH-E-RIEULHIEUH
-0xC266	0xD5F6	# HANGUL SYLLABLE HIEUH-E-PIEUPSIOS
-0xC267	0xD5F8	# HANGUL SYLLABLE HIEUH-E-SSANGSIOS
-0xC268	0xD5FA	# HANGUL SYLLABLE HIEUH-E-CIEUC
-0xC269	0xD5FB	# HANGUL SYLLABLE HIEUH-E-CHIEUCH
-0xC26A	0xD5FC	# HANGUL SYLLABLE HIEUH-E-KHIEUKH
-0xC26B	0xD5FD	# HANGUL SYLLABLE HIEUH-E-THIEUTH
-0xC26C	0xD5FE	# HANGUL SYLLABLE HIEUH-E-PHIEUPH
-0xC26D	0xD5FF	# HANGUL SYLLABLE HIEUH-E-HIEUH
-0xC26E	0xD602	# HANGUL SYLLABLE HIEUH-YEO-SSANGKIYEOK
-0xC26F	0xD603	# HANGUL SYLLABLE HIEUH-YEO-KIYEOKSIOS
-0xC270	0xD605	# HANGUL SYLLABLE HIEUH-YEO-NIEUNCIEUC
-0xC271	0xD606	# HANGUL SYLLABLE HIEUH-YEO-NIEUNHIEUH
-0xC272	0xD607	# HANGUL SYLLABLE HIEUH-YEO-TIKEUT
-0xC273	0xD609	# HANGUL SYLLABLE HIEUH-YEO-RIEULKIYEOK
-0xC274	0xD60A	# HANGUL SYLLABLE HIEUH-YEO-RIEULMIEUM
-0xC275	0xD60B	# HANGUL SYLLABLE HIEUH-YEO-RIEULPIEUP
-0xC276	0xD60C	# HANGUL SYLLABLE HIEUH-YEO-RIEULSIOS
-0xC277	0xD60D	# HANGUL SYLLABLE HIEUH-YEO-RIEULTHIEUTH
-0xC278	0xD60E	# HANGUL SYLLABLE HIEUH-YEO-RIEULPHIEUPH
-0xC279	0xD60F	# HANGUL SYLLABLE HIEUH-YEO-RIEULHIEUH
-0xC27A	0xD612	# HANGUL SYLLABLE HIEUH-YEO-PIEUPSIOS
-0xC281	0xD616	# HANGUL SYLLABLE HIEUH-YEO-CIEUC
-0xC282	0xD617	# HANGUL SYLLABLE HIEUH-YEO-CHIEUCH
-0xC283	0xD618	# HANGUL SYLLABLE HIEUH-YEO-KHIEUKH
-0xC284	0xD619	# HANGUL SYLLABLE HIEUH-YEO-THIEUTH
-0xC285	0xD61A	# HANGUL SYLLABLE HIEUH-YEO-PHIEUPH
-0xC286	0xD61B	# HANGUL SYLLABLE HIEUH-YEO-HIEUH
-0xC287	0xD61D	# HANGUL SYLLABLE HIEUH-YE-KIYEOK
-0xC288	0xD61E	# HANGUL SYLLABLE HIEUH-YE-SSANGKIYEOK
-0xC289	0xD61F	# HANGUL SYLLABLE HIEUH-YE-KIYEOKSIOS
-0xC28A	0xD621	# HANGUL SYLLABLE HIEUH-YE-NIEUNCIEUC
-0xC28B	0xD622	# HANGUL SYLLABLE HIEUH-YE-NIEUNHIEUH
-0xC28C	0xD623	# HANGUL SYLLABLE HIEUH-YE-TIKEUT
-0xC28D	0xD625	# HANGUL SYLLABLE HIEUH-YE-RIEULKIYEOK
-0xC28E	0xD626	# HANGUL SYLLABLE HIEUH-YE-RIEULMIEUM
-0xC28F	0xD627	# HANGUL SYLLABLE HIEUH-YE-RIEULPIEUP
-0xC290	0xD628	# HANGUL SYLLABLE HIEUH-YE-RIEULSIOS
-0xC291	0xD629	# HANGUL SYLLABLE HIEUH-YE-RIEULTHIEUTH
-0xC292	0xD62A	# HANGUL SYLLABLE HIEUH-YE-RIEULPHIEUPH
-0xC293	0xD62B	# HANGUL SYLLABLE HIEUH-YE-RIEULHIEUH
-0xC294	0xD62C	# HANGUL SYLLABLE HIEUH-YE-MIEUM
-0xC295	0xD62E	# HANGUL SYLLABLE HIEUH-YE-PIEUPSIOS
-0xC296	0xD62F	# HANGUL SYLLABLE HIEUH-YE-SIOS
-0xC297	0xD630	# HANGUL SYLLABLE HIEUH-YE-SSANGSIOS
-0xC298	0xD631	# HANGUL SYLLABLE HIEUH-YE-IEUNG
-0xC299	0xD632	# HANGUL SYLLABLE HIEUH-YE-CIEUC
-0xC29A	0xD633	# HANGUL SYLLABLE HIEUH-YE-CHIEUCH
-0xC29B	0xD634	# HANGUL SYLLABLE HIEUH-YE-KHIEUKH
-0xC29C	0xD635	# HANGUL SYLLABLE HIEUH-YE-THIEUTH
-0xC29D	0xD636	# HANGUL SYLLABLE HIEUH-YE-PHIEUPH
-0xC29E	0xD637	# HANGUL SYLLABLE HIEUH-YE-HIEUH
-0xC29F	0xD63A	# HANGUL SYLLABLE HIEUH-O-SSANGKIYEOK
-0xC2A0	0xD63B	# HANGUL SYLLABLE HIEUH-O-KIYEOKSIOS
-0xC2A1	0xC9D5	# HANGUL SYLLABLE CIEUC-I-IEUNG
-0xC2A2	0xC9D6	# HANGUL SYLLABLE CIEUC-I-CIEUC
-0xC2A3	0xC9D9	# HANGUL SYLLABLE CIEUC-I-THIEUTH
-0xC2A4	0xC9DA	# HANGUL SYLLABLE CIEUC-I-PHIEUPH
-0xC2A5	0xC9DC	# HANGUL SYLLABLE SSANGCIEUC-A
-0xC2A6	0xC9DD	# HANGUL SYLLABLE SSANGCIEUC-A-KIYEOK
-0xC2A7	0xC9E0	# HANGUL SYLLABLE SSANGCIEUC-A-NIEUN
-0xC2A8	0xC9E2	# HANGUL SYLLABLE SSANGCIEUC-A-NIEUNHIEUH
-0xC2A9	0xC9E4	# HANGUL SYLLABLE SSANGCIEUC-A-RIEUL
-0xC2AA	0xC9E7	# HANGUL SYLLABLE SSANGCIEUC-A-RIEULPIEUP
-0xC2AB	0xC9EC	# HANGUL SYLLABLE SSANGCIEUC-A-MIEUM
-0xC2AC	0xC9ED	# HANGUL SYLLABLE SSANGCIEUC-A-PIEUP
-0xC2AD	0xC9EF	# HANGUL SYLLABLE SSANGCIEUC-A-SIOS
-0xC2AE	0xC9F0	# HANGUL SYLLABLE SSANGCIEUC-A-SSANGSIOS
-0xC2AF	0xC9F1	# HANGUL SYLLABLE SSANGCIEUC-A-IEUNG
-0xC2B0	0xC9F8	# HANGUL SYLLABLE SSANGCIEUC-AE
-0xC2B1	0xC9F9	# HANGUL SYLLABLE SSANGCIEUC-AE-KIYEOK
-0xC2B2	0xC9FC	# HANGUL SYLLABLE SSANGCIEUC-AE-NIEUN
-0xC2B3	0xCA00	# HANGUL SYLLABLE SSANGCIEUC-AE-RIEUL
-0xC2B4	0xCA08	# HANGUL SYLLABLE SSANGCIEUC-AE-MIEUM
-0xC2B5	0xCA09	# HANGUL SYLLABLE SSANGCIEUC-AE-PIEUP
-0xC2B6	0xCA0B	# HANGUL SYLLABLE SSANGCIEUC-AE-SIOS
-0xC2B7	0xCA0C	# HANGUL SYLLABLE SSANGCIEUC-AE-SSANGSIOS
-0xC2B8	0xCA0D	# HANGUL SYLLABLE SSANGCIEUC-AE-IEUNG
-0xC2B9	0xCA14	# HANGUL SYLLABLE SSANGCIEUC-YA
-0xC2BA	0xCA18	# HANGUL SYLLABLE SSANGCIEUC-YA-NIEUN
-0xC2BB	0xCA29	# HANGUL SYLLABLE SSANGCIEUC-YA-IEUNG
-0xC2BC	0xCA4C	# HANGUL SYLLABLE SSANGCIEUC-EO
-0xC2BD	0xCA4D	# HANGUL SYLLABLE SSANGCIEUC-EO-KIYEOK
-0xC2BE	0xCA50	# HANGUL SYLLABLE SSANGCIEUC-EO-NIEUN
-0xC2BF	0xCA54	# HANGUL SYLLABLE SSANGCIEUC-EO-RIEUL
-0xC2C0	0xCA5C	# HANGUL SYLLABLE SSANGCIEUC-EO-MIEUM
-0xC2C1	0xCA5D	# HANGUL SYLLABLE SSANGCIEUC-EO-PIEUP
-0xC2C2	0xCA5F	# HANGUL SYLLABLE SSANGCIEUC-EO-SIOS
-0xC2C3	0xCA60	# HANGUL SYLLABLE SSANGCIEUC-EO-SSANGSIOS
-0xC2C4	0xCA61	# HANGUL SYLLABLE SSANGCIEUC-EO-IEUNG
-0xC2C5	0xCA68	# HANGUL SYLLABLE SSANGCIEUC-E
-0xC2C6	0xCA7D	# HANGUL SYLLABLE SSANGCIEUC-E-IEUNG
-0xC2C7	0xCA84	# HANGUL SYLLABLE SSANGCIEUC-YEO
-0xC2C8	0xCA98	# HANGUL SYLLABLE SSANGCIEUC-YEO-SSANGSIOS
-0xC2C9	0xCABC	# HANGUL SYLLABLE SSANGCIEUC-O
-0xC2CA	0xCABD	# HANGUL SYLLABLE SSANGCIEUC-O-KIYEOK
-0xC2CB	0xCAC0	# HANGUL SYLLABLE SSANGCIEUC-O-NIEUN
-0xC2CC	0xCAC4	# HANGUL SYLLABLE SSANGCIEUC-O-RIEUL
-0xC2CD	0xCACC	# HANGUL SYLLABLE SSANGCIEUC-O-MIEUM
-0xC2CE	0xCACD	# HANGUL SYLLABLE SSANGCIEUC-O-PIEUP
-0xC2CF	0xCACF	# HANGUL SYLLABLE SSANGCIEUC-O-SIOS
-0xC2D0	0xCAD1	# HANGUL SYLLABLE SSANGCIEUC-O-IEUNG
-0xC2D1	0xCAD3	# HANGUL SYLLABLE SSANGCIEUC-O-CHIEUCH
-0xC2D2	0xCAD8	# HANGUL SYLLABLE SSANGCIEUC-WA
-0xC2D3	0xCAD9	# HANGUL SYLLABLE SSANGCIEUC-WA-KIYEOK
-0xC2D4	0xCAE0	# HANGUL SYLLABLE SSANGCIEUC-WA-RIEUL
-0xC2D5	0xCAEC	# HANGUL SYLLABLE SSANGCIEUC-WA-SSANGSIOS
-0xC2D6	0xCAF4	# HANGUL SYLLABLE SSANGCIEUC-WAE
-0xC2D7	0xCB08	# HANGUL SYLLABLE SSANGCIEUC-WAE-SSANGSIOS
-0xC2D8	0xCB10	# HANGUL SYLLABLE SSANGCIEUC-OE
-0xC2D9	0xCB14	# HANGUL SYLLABLE SSANGCIEUC-OE-NIEUN
-0xC2DA	0xCB18	# HANGUL SYLLABLE SSANGCIEUC-OE-RIEUL
-0xC2DB	0xCB20	# HANGUL SYLLABLE SSANGCIEUC-OE-MIEUM
-0xC2DC	0xCB21	# HANGUL SYLLABLE SSANGCIEUC-OE-PIEUP
-0xC2DD	0xCB41	# HANGUL SYLLABLE SSANGCIEUC-YO-IEUNG
-0xC2DE	0xCB48	# HANGUL SYLLABLE SSANGCIEUC-U
-0xC2DF	0xCB49	# HANGUL SYLLABLE SSANGCIEUC-U-KIYEOK
-0xC2E0	0xCB4C	# HANGUL SYLLABLE SSANGCIEUC-U-NIEUN
-0xC2E1	0xCB50	# HANGUL SYLLABLE SSANGCIEUC-U-RIEUL
-0xC2E2	0xCB58	# HANGUL SYLLABLE SSANGCIEUC-U-MIEUM
-0xC2E3	0xCB59	# HANGUL SYLLABLE SSANGCIEUC-U-PIEUP
-0xC2E4	0xCB5D	# HANGUL SYLLABLE SSANGCIEUC-U-IEUNG
-0xC2E5	0xCB64	# HANGUL SYLLABLE SSANGCIEUC-WEO
-0xC2E6	0xCB78	# HANGUL SYLLABLE SSANGCIEUC-WEO-SSANGSIOS
-0xC2E7	0xCB79	# HANGUL SYLLABLE SSANGCIEUC-WEO-IEUNG
-0xC2E8	0xCB9C	# HANGUL SYLLABLE SSANGCIEUC-WI
-0xC2E9	0xCBB8	# HANGUL SYLLABLE SSANGCIEUC-YU
-0xC2EA	0xCBD4	# HANGUL SYLLABLE SSANGCIEUC-EU
-0xC2EB	0xCBE4	# HANGUL SYLLABLE SSANGCIEUC-EU-MIEUM
-0xC2EC	0xCBE7	# HANGUL SYLLABLE SSANGCIEUC-EU-SIOS
-0xC2ED	0xCBE9	# HANGUL SYLLABLE SSANGCIEUC-EU-IEUNG
-0xC2EE	0xCC0C	# HANGUL SYLLABLE SSANGCIEUC-I
-0xC2EF	0xCC0D	# HANGUL SYLLABLE SSANGCIEUC-I-KIYEOK
-0xC2F0	0xCC10	# HANGUL SYLLABLE SSANGCIEUC-I-NIEUN
-0xC2F1	0xCC14	# HANGUL SYLLABLE SSANGCIEUC-I-RIEUL
-0xC2F2	0xCC1C	# HANGUL SYLLABLE SSANGCIEUC-I-MIEUM
-0xC2F3	0xCC1D	# HANGUL SYLLABLE SSANGCIEUC-I-PIEUP
-0xC2F4	0xCC21	# HANGUL SYLLABLE SSANGCIEUC-I-IEUNG
-0xC2F5	0xCC22	# HANGUL SYLLABLE SSANGCIEUC-I-CIEUC
-0xC2F6	0xCC27	# HANGUL SYLLABLE SSANGCIEUC-I-HIEUH
-0xC2F7	0xCC28	# HANGUL SYLLABLE CHIEUCH-A
-0xC2F8	0xCC29	# HANGUL SYLLABLE CHIEUCH-A-KIYEOK
-0xC2F9	0xCC2C	# HANGUL SYLLABLE CHIEUCH-A-NIEUN
-0xC2FA	0xCC2E	# HANGUL SYLLABLE CHIEUCH-A-NIEUNHIEUH
-0xC2FB	0xCC30	# HANGUL SYLLABLE CHIEUCH-A-RIEUL
-0xC2FC	0xCC38	# HANGUL SYLLABLE CHIEUCH-A-MIEUM
-0xC2FD	0xCC39	# HANGUL SYLLABLE CHIEUCH-A-PIEUP
-0xC2FE	0xCC3B	# HANGUL SYLLABLE CHIEUCH-A-SIOS
-0xC341	0xD63D	# HANGUL SYLLABLE HIEUH-O-NIEUNCIEUC
-0xC342	0xD63E	# HANGUL SYLLABLE HIEUH-O-NIEUNHIEUH
-0xC343	0xD63F	# HANGUL SYLLABLE HIEUH-O-TIKEUT
-0xC344	0xD641	# HANGUL SYLLABLE HIEUH-O-RIEULKIYEOK
-0xC345	0xD642	# HANGUL SYLLABLE HIEUH-O-RIEULMIEUM
-0xC346	0xD643	# HANGUL SYLLABLE HIEUH-O-RIEULPIEUP
-0xC347	0xD644	# HANGUL SYLLABLE HIEUH-O-RIEULSIOS
-0xC348	0xD646	# HANGUL SYLLABLE HIEUH-O-RIEULPHIEUPH
-0xC349	0xD647	# HANGUL SYLLABLE HIEUH-O-RIEULHIEUH
-0xC34A	0xD64A	# HANGUL SYLLABLE HIEUH-O-PIEUPSIOS
-0xC34B	0xD64C	# HANGUL SYLLABLE HIEUH-O-SSANGSIOS
-0xC34C	0xD64E	# HANGUL SYLLABLE HIEUH-O-CIEUC
-0xC34D	0xD64F	# HANGUL SYLLABLE HIEUH-O-CHIEUCH
-0xC34E	0xD650	# HANGUL SYLLABLE HIEUH-O-KHIEUKH
-0xC34F	0xD652	# HANGUL SYLLABLE HIEUH-O-PHIEUPH
-0xC350	0xD653	# HANGUL SYLLABLE HIEUH-O-HIEUH
-0xC351	0xD656	# HANGUL SYLLABLE HIEUH-WA-SSANGKIYEOK
-0xC352	0xD657	# HANGUL SYLLABLE HIEUH-WA-KIYEOKSIOS
-0xC353	0xD659	# HANGUL SYLLABLE HIEUH-WA-NIEUNCIEUC
-0xC354	0xD65A	# HANGUL SYLLABLE HIEUH-WA-NIEUNHIEUH
-0xC355	0xD65B	# HANGUL SYLLABLE HIEUH-WA-TIKEUT
-0xC356	0xD65D	# HANGUL SYLLABLE HIEUH-WA-RIEULKIYEOK
-0xC357	0xD65E	# HANGUL SYLLABLE HIEUH-WA-RIEULMIEUM
-0xC358	0xD65F	# HANGUL SYLLABLE HIEUH-WA-RIEULPIEUP
-0xC359	0xD660	# HANGUL SYLLABLE HIEUH-WA-RIEULSIOS
-0xC35A	0xD661	# HANGUL SYLLABLE HIEUH-WA-RIEULTHIEUTH
-0xC361	0xD662	# HANGUL SYLLABLE HIEUH-WA-RIEULPHIEUPH
-0xC362	0xD663	# HANGUL SYLLABLE HIEUH-WA-RIEULHIEUH
-0xC363	0xD664	# HANGUL SYLLABLE HIEUH-WA-MIEUM
-0xC364	0xD665	# HANGUL SYLLABLE HIEUH-WA-PIEUP
-0xC365	0xD666	# HANGUL SYLLABLE HIEUH-WA-PIEUPSIOS
-0xC366	0xD668	# HANGUL SYLLABLE HIEUH-WA-SSANGSIOS
-0xC367	0xD66A	# HANGUL SYLLABLE HIEUH-WA-CIEUC
-0xC368	0xD66B	# HANGUL SYLLABLE HIEUH-WA-CHIEUCH
-0xC369	0xD66C	# HANGUL SYLLABLE HIEUH-WA-KHIEUKH
-0xC36A	0xD66D	# HANGUL SYLLABLE HIEUH-WA-THIEUTH
-0xC36B	0xD66E	# HANGUL SYLLABLE HIEUH-WA-PHIEUPH
-0xC36C	0xD66F	# HANGUL SYLLABLE HIEUH-WA-HIEUH
-0xC36D	0xD672	# HANGUL SYLLABLE HIEUH-WAE-SSANGKIYEOK
-0xC36E	0xD673	# HANGUL SYLLABLE HIEUH-WAE-KIYEOKSIOS
-0xC36F	0xD675	# HANGUL SYLLABLE HIEUH-WAE-NIEUNCIEUC
-0xC370	0xD676	# HANGUL SYLLABLE HIEUH-WAE-NIEUNHIEUH
-0xC371	0xD677	# HANGUL SYLLABLE HIEUH-WAE-TIKEUT
-0xC372	0xD678	# HANGUL SYLLABLE HIEUH-WAE-RIEUL
-0xC373	0xD679	# HANGUL SYLLABLE HIEUH-WAE-RIEULKIYEOK
-0xC374	0xD67A	# HANGUL SYLLABLE HIEUH-WAE-RIEULMIEUM
-0xC375	0xD67B	# HANGUL SYLLABLE HIEUH-WAE-RIEULPIEUP
-0xC376	0xD67C	# HANGUL SYLLABLE HIEUH-WAE-RIEULSIOS
-0xC377	0xD67D	# HANGUL SYLLABLE HIEUH-WAE-RIEULTHIEUTH
-0xC378	0xD67E	# HANGUL SYLLABLE HIEUH-WAE-RIEULPHIEUPH
-0xC379	0xD67F	# HANGUL SYLLABLE HIEUH-WAE-RIEULHIEUH
-0xC37A	0xD680	# HANGUL SYLLABLE HIEUH-WAE-MIEUM
-0xC381	0xD681	# HANGUL SYLLABLE HIEUH-WAE-PIEUP
-0xC382	0xD682	# HANGUL SYLLABLE HIEUH-WAE-PIEUPSIOS
-0xC383	0xD684	# HANGUL SYLLABLE HIEUH-WAE-SSANGSIOS
-0xC384	0xD686	# HANGUL SYLLABLE HIEUH-WAE-CIEUC
-0xC385	0xD687	# HANGUL SYLLABLE HIEUH-WAE-CHIEUCH
-0xC386	0xD688	# HANGUL SYLLABLE HIEUH-WAE-KHIEUKH
-0xC387	0xD689	# HANGUL SYLLABLE HIEUH-WAE-THIEUTH
-0xC388	0xD68A	# HANGUL SYLLABLE HIEUH-WAE-PHIEUPH
-0xC389	0xD68B	# HANGUL SYLLABLE HIEUH-WAE-HIEUH
-0xC38A	0xD68E	# HANGUL SYLLABLE HIEUH-OE-SSANGKIYEOK
-0xC38B	0xD68F	# HANGUL SYLLABLE HIEUH-OE-KIYEOKSIOS
-0xC38C	0xD691	# HANGUL SYLLABLE HIEUH-OE-NIEUNCIEUC
-0xC38D	0xD692	# HANGUL SYLLABLE HIEUH-OE-NIEUNHIEUH
-0xC38E	0xD693	# HANGUL SYLLABLE HIEUH-OE-TIKEUT
-0xC38F	0xD695	# HANGUL SYLLABLE HIEUH-OE-RIEULKIYEOK
-0xC390	0xD696	# HANGUL SYLLABLE HIEUH-OE-RIEULMIEUM
-0xC391	0xD697	# HANGUL SYLLABLE HIEUH-OE-RIEULPIEUP
-0xC392	0xD698	# HANGUL SYLLABLE HIEUH-OE-RIEULSIOS
-0xC393	0xD699	# HANGUL SYLLABLE HIEUH-OE-RIEULTHIEUTH
-0xC394	0xD69A	# HANGUL SYLLABLE HIEUH-OE-RIEULPHIEUPH
-0xC395	0xD69B	# HANGUL SYLLABLE HIEUH-OE-RIEULHIEUH
-0xC396	0xD69C	# HANGUL SYLLABLE HIEUH-OE-MIEUM
-0xC397	0xD69E	# HANGUL SYLLABLE HIEUH-OE-PIEUPSIOS
-0xC398	0xD6A0	# HANGUL SYLLABLE HIEUH-OE-SSANGSIOS
-0xC399	0xD6A2	# HANGUL SYLLABLE HIEUH-OE-CIEUC
-0xC39A	0xD6A3	# HANGUL SYLLABLE HIEUH-OE-CHIEUCH
-0xC39B	0xD6A4	# HANGUL SYLLABLE HIEUH-OE-KHIEUKH
-0xC39C	0xD6A5	# HANGUL SYLLABLE HIEUH-OE-THIEUTH
-0xC39D	0xD6A6	# HANGUL SYLLABLE HIEUH-OE-PHIEUPH
-0xC39E	0xD6A7	# HANGUL SYLLABLE HIEUH-OE-HIEUH
-0xC39F	0xD6A9	# HANGUL SYLLABLE HIEUH-YO-KIYEOK
-0xC3A0	0xD6AA	# HANGUL SYLLABLE HIEUH-YO-SSANGKIYEOK
-0xC3A1	0xCC3C	# HANGUL SYLLABLE CHIEUCH-A-SSANGSIOS
-0xC3A2	0xCC3D	# HANGUL SYLLABLE CHIEUCH-A-IEUNG
-0xC3A3	0xCC3E	# HANGUL SYLLABLE CHIEUCH-A-CIEUC
-0xC3A4	0xCC44	# HANGUL SYLLABLE CHIEUCH-AE
-0xC3A5	0xCC45	# HANGUL SYLLABLE CHIEUCH-AE-KIYEOK
-0xC3A6	0xCC48	# HANGUL SYLLABLE CHIEUCH-AE-NIEUN
-0xC3A7	0xCC4C	# HANGUL SYLLABLE CHIEUCH-AE-RIEUL
-0xC3A8	0xCC54	# HANGUL SYLLABLE CHIEUCH-AE-MIEUM
-0xC3A9	0xCC55	# HANGUL SYLLABLE CHIEUCH-AE-PIEUP
-0xC3AA	0xCC57	# HANGUL SYLLABLE CHIEUCH-AE-SIOS
-0xC3AB	0xCC58	# HANGUL SYLLABLE CHIEUCH-AE-SSANGSIOS
-0xC3AC	0xCC59	# HANGUL SYLLABLE CHIEUCH-AE-IEUNG
-0xC3AD	0xCC60	# HANGUL SYLLABLE CHIEUCH-YA
-0xC3AE	0xCC64	# HANGUL SYLLABLE CHIEUCH-YA-NIEUN
-0xC3AF	0xCC66	# HANGUL SYLLABLE CHIEUCH-YA-NIEUNHIEUH
-0xC3B0	0xCC68	# HANGUL SYLLABLE CHIEUCH-YA-RIEUL
-0xC3B1	0xCC70	# HANGUL SYLLABLE CHIEUCH-YA-MIEUM
-0xC3B2	0xCC75	# HANGUL SYLLABLE CHIEUCH-YA-IEUNG
-0xC3B3	0xCC98	# HANGUL SYLLABLE CHIEUCH-EO
-0xC3B4	0xCC99	# HANGUL SYLLABLE CHIEUCH-EO-KIYEOK
-0xC3B5	0xCC9C	# HANGUL SYLLABLE CHIEUCH-EO-NIEUN
-0xC3B6	0xCCA0	# HANGUL SYLLABLE CHIEUCH-EO-RIEUL
-0xC3B7	0xCCA8	# HANGUL SYLLABLE CHIEUCH-EO-MIEUM
-0xC3B8	0xCCA9	# HANGUL SYLLABLE CHIEUCH-EO-PIEUP
-0xC3B9	0xCCAB	# HANGUL SYLLABLE CHIEUCH-EO-SIOS
-0xC3BA	0xCCAC	# HANGUL SYLLABLE CHIEUCH-EO-SSANGSIOS
-0xC3BB	0xCCAD	# HANGUL SYLLABLE CHIEUCH-EO-IEUNG
-0xC3BC	0xCCB4	# HANGUL SYLLABLE CHIEUCH-E
-0xC3BD	0xCCB5	# HANGUL SYLLABLE CHIEUCH-E-KIYEOK
-0xC3BE	0xCCB8	# HANGUL SYLLABLE CHIEUCH-E-NIEUN
-0xC3BF	0xCCBC	# HANGUL SYLLABLE CHIEUCH-E-RIEUL
-0xC3C0	0xCCC4	# HANGUL SYLLABLE CHIEUCH-E-MIEUM
-0xC3C1	0xCCC5	# HANGUL SYLLABLE CHIEUCH-E-PIEUP
-0xC3C2	0xCCC7	# HANGUL SYLLABLE CHIEUCH-E-SIOS
-0xC3C3	0xCCC9	# HANGUL SYLLABLE CHIEUCH-E-IEUNG
-0xC3C4	0xCCD0	# HANGUL SYLLABLE CHIEUCH-YEO
-0xC3C5	0xCCD4	# HANGUL SYLLABLE CHIEUCH-YEO-NIEUN
-0xC3C6	0xCCE4	# HANGUL SYLLABLE CHIEUCH-YEO-SSANGSIOS
-0xC3C7	0xCCEC	# HANGUL SYLLABLE CHIEUCH-YE
-0xC3C8	0xCCF0	# HANGUL SYLLABLE CHIEUCH-YE-NIEUN
-0xC3C9	0xCD01	# HANGUL SYLLABLE CHIEUCH-YE-IEUNG
-0xC3CA	0xCD08	# HANGUL SYLLABLE CHIEUCH-O
-0xC3CB	0xCD09	# HANGUL SYLLABLE CHIEUCH-O-KIYEOK
-0xC3CC	0xCD0C	# HANGUL SYLLABLE CHIEUCH-O-NIEUN
-0xC3CD	0xCD10	# HANGUL SYLLABLE CHIEUCH-O-RIEUL
-0xC3CE	0xCD18	# HANGUL SYLLABLE CHIEUCH-O-MIEUM
-0xC3CF	0xCD19	# HANGUL SYLLABLE CHIEUCH-O-PIEUP
-0xC3D0	0xCD1B	# HANGUL SYLLABLE CHIEUCH-O-SIOS
-0xC3D1	0xCD1D	# HANGUL SYLLABLE CHIEUCH-O-IEUNG
-0xC3D2	0xCD24	# HANGUL SYLLABLE CHIEUCH-WA
-0xC3D3	0xCD28	# HANGUL SYLLABLE CHIEUCH-WA-NIEUN
-0xC3D4	0xCD2C	# HANGUL SYLLABLE CHIEUCH-WA-RIEUL
-0xC3D5	0xCD39	# HANGUL SYLLABLE CHIEUCH-WA-IEUNG
-0xC3D6	0xCD5C	# HANGUL SYLLABLE CHIEUCH-OE
-0xC3D7	0xCD60	# HANGUL SYLLABLE CHIEUCH-OE-NIEUN
-0xC3D8	0xCD64	# HANGUL SYLLABLE CHIEUCH-OE-RIEUL
-0xC3D9	0xCD6C	# HANGUL SYLLABLE CHIEUCH-OE-MIEUM
-0xC3DA	0xCD6D	# HANGUL SYLLABLE CHIEUCH-OE-PIEUP
-0xC3DB	0xCD6F	# HANGUL SYLLABLE CHIEUCH-OE-SIOS
-0xC3DC	0xCD71	# HANGUL SYLLABLE CHIEUCH-OE-IEUNG
-0xC3DD	0xCD78	# HANGUL SYLLABLE CHIEUCH-YO
-0xC3DE	0xCD88	# HANGUL SYLLABLE CHIEUCH-YO-MIEUM
-0xC3DF	0xCD94	# HANGUL SYLLABLE CHIEUCH-U
-0xC3E0	0xCD95	# HANGUL SYLLABLE CHIEUCH-U-KIYEOK
-0xC3E1	0xCD98	# HANGUL SYLLABLE CHIEUCH-U-NIEUN
-0xC3E2	0xCD9C	# HANGUL SYLLABLE CHIEUCH-U-RIEUL
-0xC3E3	0xCDA4	# HANGUL SYLLABLE CHIEUCH-U-MIEUM
-0xC3E4	0xCDA5	# HANGUL SYLLABLE CHIEUCH-U-PIEUP
-0xC3E5	0xCDA7	# HANGUL SYLLABLE CHIEUCH-U-SIOS
-0xC3E6	0xCDA9	# HANGUL SYLLABLE CHIEUCH-U-IEUNG
-0xC3E7	0xCDB0	# HANGUL SYLLABLE CHIEUCH-WEO
-0xC3E8	0xCDC4	# HANGUL SYLLABLE CHIEUCH-WEO-SSANGSIOS
-0xC3E9	0xCDCC	# HANGUL SYLLABLE CHIEUCH-WE
-0xC3EA	0xCDD0	# HANGUL SYLLABLE CHIEUCH-WE-NIEUN
-0xC3EB	0xCDE8	# HANGUL SYLLABLE CHIEUCH-WI
-0xC3EC	0xCDEC	# HANGUL SYLLABLE CHIEUCH-WI-NIEUN
-0xC3ED	0xCDF0	# HANGUL SYLLABLE CHIEUCH-WI-RIEUL
-0xC3EE	0xCDF8	# HANGUL SYLLABLE CHIEUCH-WI-MIEUM
-0xC3EF	0xCDF9	# HANGUL SYLLABLE CHIEUCH-WI-PIEUP
-0xC3F0	0xCDFB	# HANGUL SYLLABLE CHIEUCH-WI-SIOS
-0xC3F1	0xCDFD	# HANGUL SYLLABLE CHIEUCH-WI-IEUNG
-0xC3F2	0xCE04	# HANGUL SYLLABLE CHIEUCH-YU
-0xC3F3	0xCE08	# HANGUL SYLLABLE CHIEUCH-YU-NIEUN
-0xC3F4	0xCE0C	# HANGUL SYLLABLE CHIEUCH-YU-RIEUL
-0xC3F5	0xCE14	# HANGUL SYLLABLE CHIEUCH-YU-MIEUM
-0xC3F6	0xCE19	# HANGUL SYLLABLE CHIEUCH-YU-IEUNG
-0xC3F7	0xCE20	# HANGUL SYLLABLE CHIEUCH-EU
-0xC3F8	0xCE21	# HANGUL SYLLABLE CHIEUCH-EU-KIYEOK
-0xC3F9	0xCE24	# HANGUL SYLLABLE CHIEUCH-EU-NIEUN
-0xC3FA	0xCE28	# HANGUL SYLLABLE CHIEUCH-EU-RIEUL
-0xC3FB	0xCE30	# HANGUL SYLLABLE CHIEUCH-EU-MIEUM
-0xC3FC	0xCE31	# HANGUL SYLLABLE CHIEUCH-EU-PIEUP
-0xC3FD	0xCE33	# HANGUL SYLLABLE CHIEUCH-EU-SIOS
-0xC3FE	0xCE35	# HANGUL SYLLABLE CHIEUCH-EU-IEUNG
-0xC441	0xD6AB	# HANGUL SYLLABLE HIEUH-YO-KIYEOKSIOS
-0xC442	0xD6AD	# HANGUL SYLLABLE HIEUH-YO-NIEUNCIEUC
-0xC443	0xD6AE	# HANGUL SYLLABLE HIEUH-YO-NIEUNHIEUH
-0xC444	0xD6AF	# HANGUL SYLLABLE HIEUH-YO-TIKEUT
-0xC445	0xD6B1	# HANGUL SYLLABLE HIEUH-YO-RIEULKIYEOK
-0xC446	0xD6B2	# HANGUL SYLLABLE HIEUH-YO-RIEULMIEUM
-0xC447	0xD6B3	# HANGUL SYLLABLE HIEUH-YO-RIEULPIEUP
-0xC448	0xD6B4	# HANGUL SYLLABLE HIEUH-YO-RIEULSIOS
-0xC449	0xD6B5	# HANGUL SYLLABLE HIEUH-YO-RIEULTHIEUTH
-0xC44A	0xD6B6	# HANGUL SYLLABLE HIEUH-YO-RIEULPHIEUPH
-0xC44B	0xD6B7	# HANGUL SYLLABLE HIEUH-YO-RIEULHIEUH
-0xC44C	0xD6B8	# HANGUL SYLLABLE HIEUH-YO-MIEUM
-0xC44D	0xD6BA	# HANGUL SYLLABLE HIEUH-YO-PIEUPSIOS
-0xC44E	0xD6BC	# HANGUL SYLLABLE HIEUH-YO-SSANGSIOS
-0xC44F	0xD6BD	# HANGUL SYLLABLE HIEUH-YO-IEUNG
-0xC450	0xD6BE	# HANGUL SYLLABLE HIEUH-YO-CIEUC
-0xC451	0xD6BF	# HANGUL SYLLABLE HIEUH-YO-CHIEUCH
-0xC452	0xD6C0	# HANGUL SYLLABLE HIEUH-YO-KHIEUKH
-0xC453	0xD6C1	# HANGUL SYLLABLE HIEUH-YO-THIEUTH
-0xC454	0xD6C2	# HANGUL SYLLABLE HIEUH-YO-PHIEUPH
-0xC455	0xD6C3	# HANGUL SYLLABLE HIEUH-YO-HIEUH
-0xC456	0xD6C6	# HANGUL SYLLABLE HIEUH-U-SSANGKIYEOK
-0xC457	0xD6C7	# HANGUL SYLLABLE HIEUH-U-KIYEOKSIOS
-0xC458	0xD6C9	# HANGUL SYLLABLE HIEUH-U-NIEUNCIEUC
-0xC459	0xD6CA	# HANGUL SYLLABLE HIEUH-U-NIEUNHIEUH
-0xC45A	0xD6CB	# HANGUL SYLLABLE HIEUH-U-TIKEUT
-0xC461	0xD6CD	# HANGUL SYLLABLE HIEUH-U-RIEULKIYEOK
-0xC462	0xD6CE	# HANGUL SYLLABLE HIEUH-U-RIEULMIEUM
-0xC463	0xD6CF	# HANGUL SYLLABLE HIEUH-U-RIEULPIEUP
-0xC464	0xD6D0	# HANGUL SYLLABLE HIEUH-U-RIEULSIOS
-0xC465	0xD6D2	# HANGUL SYLLABLE HIEUH-U-RIEULPHIEUPH
-0xC466	0xD6D3	# HANGUL SYLLABLE HIEUH-U-RIEULHIEUH
-0xC467	0xD6D5	# HANGUL SYLLABLE HIEUH-U-PIEUP
-0xC468	0xD6D6	# HANGUL SYLLABLE HIEUH-U-PIEUPSIOS
-0xC469	0xD6D8	# HANGUL SYLLABLE HIEUH-U-SSANGSIOS
-0xC46A	0xD6DA	# HANGUL SYLLABLE HIEUH-U-CIEUC
-0xC46B	0xD6DB	# HANGUL SYLLABLE HIEUH-U-CHIEUCH
-0xC46C	0xD6DC	# HANGUL SYLLABLE HIEUH-U-KHIEUKH
-0xC46D	0xD6DD	# HANGUL SYLLABLE HIEUH-U-THIEUTH
-0xC46E	0xD6DE	# HANGUL SYLLABLE HIEUH-U-PHIEUPH
-0xC46F	0xD6DF	# HANGUL SYLLABLE HIEUH-U-HIEUH
-0xC470	0xD6E1	# HANGUL SYLLABLE HIEUH-WEO-KIYEOK
-0xC471	0xD6E2	# HANGUL SYLLABLE HIEUH-WEO-SSANGKIYEOK
-0xC472	0xD6E3	# HANGUL SYLLABLE HIEUH-WEO-KIYEOKSIOS
-0xC473	0xD6E5	# HANGUL SYLLABLE HIEUH-WEO-NIEUNCIEUC
-0xC474	0xD6E6	# HANGUL SYLLABLE HIEUH-WEO-NIEUNHIEUH
-0xC475	0xD6E7	# HANGUL SYLLABLE HIEUH-WEO-TIKEUT
-0xC476	0xD6E9	# HANGUL SYLLABLE HIEUH-WEO-RIEULKIYEOK
-0xC477	0xD6EA	# HANGUL SYLLABLE HIEUH-WEO-RIEULMIEUM
-0xC478	0xD6EB	# HANGUL SYLLABLE HIEUH-WEO-RIEULPIEUP
-0xC479	0xD6EC	# HANGUL SYLLABLE HIEUH-WEO-RIEULSIOS
-0xC47A	0xD6ED	# HANGUL SYLLABLE HIEUH-WEO-RIEULTHIEUTH
-0xC481	0xD6EE	# HANGUL SYLLABLE HIEUH-WEO-RIEULPHIEUPH
-0xC482	0xD6EF	# HANGUL SYLLABLE HIEUH-WEO-RIEULHIEUH
-0xC483	0xD6F1	# HANGUL SYLLABLE HIEUH-WEO-PIEUP
-0xC484	0xD6F2	# HANGUL SYLLABLE HIEUH-WEO-PIEUPSIOS
-0xC485	0xD6F3	# HANGUL SYLLABLE HIEUH-WEO-SIOS
-0xC486	0xD6F4	# HANGUL SYLLABLE HIEUH-WEO-SSANGSIOS
-0xC487	0xD6F6	# HANGUL SYLLABLE HIEUH-WEO-CIEUC
-0xC488	0xD6F7	# HANGUL SYLLABLE HIEUH-WEO-CHIEUCH
-0xC489	0xD6F8	# HANGUL SYLLABLE HIEUH-WEO-KHIEUKH
-0xC48A	0xD6F9	# HANGUL SYLLABLE HIEUH-WEO-THIEUTH
-0xC48B	0xD6FA	# HANGUL SYLLABLE HIEUH-WEO-PHIEUPH
-0xC48C	0xD6FB	# HANGUL SYLLABLE HIEUH-WEO-HIEUH
-0xC48D	0xD6FE	# HANGUL SYLLABLE HIEUH-WE-SSANGKIYEOK
-0xC48E	0xD6FF	# HANGUL SYLLABLE HIEUH-WE-KIYEOKSIOS
-0xC48F	0xD701	# HANGUL SYLLABLE HIEUH-WE-NIEUNCIEUC
-0xC490	0xD702	# HANGUL SYLLABLE HIEUH-WE-NIEUNHIEUH
-0xC491	0xD703	# HANGUL SYLLABLE HIEUH-WE-TIKEUT
-0xC492	0xD705	# HANGUL SYLLABLE HIEUH-WE-RIEULKIYEOK
-0xC493	0xD706	# HANGUL SYLLABLE HIEUH-WE-RIEULMIEUM
-0xC494	0xD707	# HANGUL SYLLABLE HIEUH-WE-RIEULPIEUP
-0xC495	0xD708	# HANGUL SYLLABLE HIEUH-WE-RIEULSIOS
-0xC496	0xD709	# HANGUL SYLLABLE HIEUH-WE-RIEULTHIEUTH
-0xC497	0xD70A	# HANGUL SYLLABLE HIEUH-WE-RIEULPHIEUPH
-0xC498	0xD70B	# HANGUL SYLLABLE HIEUH-WE-RIEULHIEUH
-0xC499	0xD70C	# HANGUL SYLLABLE HIEUH-WE-MIEUM
-0xC49A	0xD70D	# HANGUL SYLLABLE HIEUH-WE-PIEUP
-0xC49B	0xD70E	# HANGUL SYLLABLE HIEUH-WE-PIEUPSIOS
-0xC49C	0xD70F	# HANGUL SYLLABLE HIEUH-WE-SIOS
-0xC49D	0xD710	# HANGUL SYLLABLE HIEUH-WE-SSANGSIOS
-0xC49E	0xD712	# HANGUL SYLLABLE HIEUH-WE-CIEUC
-0xC49F	0xD713	# HANGUL SYLLABLE HIEUH-WE-CHIEUCH
-0xC4A0	0xD714	# HANGUL SYLLABLE HIEUH-WE-KHIEUKH
-0xC4A1	0xCE58	# HANGUL SYLLABLE CHIEUCH-I
-0xC4A2	0xCE59	# HANGUL SYLLABLE CHIEUCH-I-KIYEOK
-0xC4A3	0xCE5C	# HANGUL SYLLABLE CHIEUCH-I-NIEUN
-0xC4A4	0xCE5F	# HANGUL SYLLABLE CHIEUCH-I-TIKEUT
-0xC4A5	0xCE60	# HANGUL SYLLABLE CHIEUCH-I-RIEUL
-0xC4A6	0xCE61	# HANGUL SYLLABLE CHIEUCH-I-RIEULKIYEOK
-0xC4A7	0xCE68	# HANGUL SYLLABLE CHIEUCH-I-MIEUM
-0xC4A8	0xCE69	# HANGUL SYLLABLE CHIEUCH-I-PIEUP
-0xC4A9	0xCE6B	# HANGUL SYLLABLE CHIEUCH-I-SIOS
-0xC4AA	0xCE6D	# HANGUL SYLLABLE CHIEUCH-I-IEUNG
-0xC4AB	0xCE74	# HANGUL SYLLABLE KHIEUKH-A
-0xC4AC	0xCE75	# HANGUL SYLLABLE KHIEUKH-A-KIYEOK
-0xC4AD	0xCE78	# HANGUL SYLLABLE KHIEUKH-A-NIEUN
-0xC4AE	0xCE7C	# HANGUL SYLLABLE KHIEUKH-A-RIEUL
-0xC4AF	0xCE84	# HANGUL SYLLABLE KHIEUKH-A-MIEUM
-0xC4B0	0xCE85	# HANGUL SYLLABLE KHIEUKH-A-PIEUP
-0xC4B1	0xCE87	# HANGUL SYLLABLE KHIEUKH-A-SIOS
-0xC4B2	0xCE89	# HANGUL SYLLABLE KHIEUKH-A-IEUNG
-0xC4B3	0xCE90	# HANGUL SYLLABLE KHIEUKH-AE
-0xC4B4	0xCE91	# HANGUL SYLLABLE KHIEUKH-AE-KIYEOK
-0xC4B5	0xCE94	# HANGUL SYLLABLE KHIEUKH-AE-NIEUN
-0xC4B6	0xCE98	# HANGUL SYLLABLE KHIEUKH-AE-RIEUL
-0xC4B7	0xCEA0	# HANGUL SYLLABLE KHIEUKH-AE-MIEUM
-0xC4B8	0xCEA1	# HANGUL SYLLABLE KHIEUKH-AE-PIEUP
-0xC4B9	0xCEA3	# HANGUL SYLLABLE KHIEUKH-AE-SIOS
-0xC4BA	0xCEA4	# HANGUL SYLLABLE KHIEUKH-AE-SSANGSIOS
-0xC4BB	0xCEA5	# HANGUL SYLLABLE KHIEUKH-AE-IEUNG
-0xC4BC	0xCEAC	# HANGUL SYLLABLE KHIEUKH-YA
-0xC4BD	0xCEAD	# HANGUL SYLLABLE KHIEUKH-YA-KIYEOK
-0xC4BE	0xCEC1	# HANGUL SYLLABLE KHIEUKH-YA-IEUNG
-0xC4BF	0xCEE4	# HANGUL SYLLABLE KHIEUKH-EO
-0xC4C0	0xCEE5	# HANGUL SYLLABLE KHIEUKH-EO-KIYEOK
-0xC4C1	0xCEE8	# HANGUL SYLLABLE KHIEUKH-EO-NIEUN
-0xC4C2	0xCEEB	# HANGUL SYLLABLE KHIEUKH-EO-TIKEUT
-0xC4C3	0xCEEC	# HANGUL SYLLABLE KHIEUKH-EO-RIEUL
-0xC4C4	0xCEF4	# HANGUL SYLLABLE KHIEUKH-EO-MIEUM
-0xC4C5	0xCEF5	# HANGUL SYLLABLE KHIEUKH-EO-PIEUP
-0xC4C6	0xCEF7	# HANGUL SYLLABLE KHIEUKH-EO-SIOS
-0xC4C7	0xCEF8	# HANGUL SYLLABLE KHIEUKH-EO-SSANGSIOS
-0xC4C8	0xCEF9	# HANGUL SYLLABLE KHIEUKH-EO-IEUNG
-0xC4C9	0xCF00	# HANGUL SYLLABLE KHIEUKH-E
-0xC4CA	0xCF01	# HANGUL SYLLABLE KHIEUKH-E-KIYEOK
-0xC4CB	0xCF04	# HANGUL SYLLABLE KHIEUKH-E-NIEUN
-0xC4CC	0xCF08	# HANGUL SYLLABLE KHIEUKH-E-RIEUL
-0xC4CD	0xCF10	# HANGUL SYLLABLE KHIEUKH-E-MIEUM
-0xC4CE	0xCF11	# HANGUL SYLLABLE KHIEUKH-E-PIEUP
-0xC4CF	0xCF13	# HANGUL SYLLABLE KHIEUKH-E-SIOS
-0xC4D0	0xCF15	# HANGUL SYLLABLE KHIEUKH-E-IEUNG
-0xC4D1	0xCF1C	# HANGUL SYLLABLE KHIEUKH-YEO
-0xC4D2	0xCF20	# HANGUL SYLLABLE KHIEUKH-YEO-NIEUN
-0xC4D3	0xCF24	# HANGUL SYLLABLE KHIEUKH-YEO-RIEUL
-0xC4D4	0xCF2C	# HANGUL SYLLABLE KHIEUKH-YEO-MIEUM
-0xC4D5	0xCF2D	# HANGUL SYLLABLE KHIEUKH-YEO-PIEUP
-0xC4D6	0xCF2F	# HANGUL SYLLABLE KHIEUKH-YEO-SIOS
-0xC4D7	0xCF30	# HANGUL SYLLABLE KHIEUKH-YEO-SSANGSIOS
-0xC4D8	0xCF31	# HANGUL SYLLABLE KHIEUKH-YEO-IEUNG
-0xC4D9	0xCF38	# HANGUL SYLLABLE KHIEUKH-YE
-0xC4DA	0xCF54	# HANGUL SYLLABLE KHIEUKH-O
-0xC4DB	0xCF55	# HANGUL SYLLABLE KHIEUKH-O-KIYEOK
-0xC4DC	0xCF58	# HANGUL SYLLABLE KHIEUKH-O-NIEUN
-0xC4DD	0xCF5C	# HANGUL SYLLABLE KHIEUKH-O-RIEUL
-0xC4DE	0xCF64	# HANGUL SYLLABLE KHIEUKH-O-MIEUM
-0xC4DF	0xCF65	# HANGUL SYLLABLE KHIEUKH-O-PIEUP
-0xC4E0	0xCF67	# HANGUL SYLLABLE KHIEUKH-O-SIOS
-0xC4E1	0xCF69	# HANGUL SYLLABLE KHIEUKH-O-IEUNG
-0xC4E2	0xCF70	# HANGUL SYLLABLE KHIEUKH-WA
-0xC4E3	0xCF71	# HANGUL SYLLABLE KHIEUKH-WA-KIYEOK
-0xC4E4	0xCF74	# HANGUL SYLLABLE KHIEUKH-WA-NIEUN
-0xC4E5	0xCF78	# HANGUL SYLLABLE KHIEUKH-WA-RIEUL
-0xC4E6	0xCF80	# HANGUL SYLLABLE KHIEUKH-WA-MIEUM
-0xC4E7	0xCF85	# HANGUL SYLLABLE KHIEUKH-WA-IEUNG
-0xC4E8	0xCF8C	# HANGUL SYLLABLE KHIEUKH-WAE
-0xC4E9	0xCFA1	# HANGUL SYLLABLE KHIEUKH-WAE-IEUNG
-0xC4EA	0xCFA8	# HANGUL SYLLABLE KHIEUKH-OE
-0xC4EB	0xCFB0	# HANGUL SYLLABLE KHIEUKH-OE-RIEUL
-0xC4EC	0xCFC4	# HANGUL SYLLABLE KHIEUKH-YO
-0xC4ED	0xCFE0	# HANGUL SYLLABLE KHIEUKH-U
-0xC4EE	0xCFE1	# HANGUL SYLLABLE KHIEUKH-U-KIYEOK
-0xC4EF	0xCFE4	# HANGUL SYLLABLE KHIEUKH-U-NIEUN
-0xC4F0	0xCFE8	# HANGUL SYLLABLE KHIEUKH-U-RIEUL
-0xC4F1	0xCFF0	# HANGUL SYLLABLE KHIEUKH-U-MIEUM
-0xC4F2	0xCFF1	# HANGUL SYLLABLE KHIEUKH-U-PIEUP
-0xC4F3	0xCFF3	# HANGUL SYLLABLE KHIEUKH-U-SIOS
-0xC4F4	0xCFF5	# HANGUL SYLLABLE KHIEUKH-U-IEUNG
-0xC4F5	0xCFFC	# HANGUL SYLLABLE KHIEUKH-WEO
-0xC4F6	0xD000	# HANGUL SYLLABLE KHIEUKH-WEO-NIEUN
-0xC4F7	0xD004	# HANGUL SYLLABLE KHIEUKH-WEO-RIEUL
-0xC4F8	0xD011	# HANGUL SYLLABLE KHIEUKH-WEO-IEUNG
-0xC4F9	0xD018	# HANGUL SYLLABLE KHIEUKH-WE
-0xC4FA	0xD02D	# HANGUL SYLLABLE KHIEUKH-WE-IEUNG
-0xC4FB	0xD034	# HANGUL SYLLABLE KHIEUKH-WI
-0xC4FC	0xD035	# HANGUL SYLLABLE KHIEUKH-WI-KIYEOK
-0xC4FD	0xD038	# HANGUL SYLLABLE KHIEUKH-WI-NIEUN
-0xC4FE	0xD03C	# HANGUL SYLLABLE KHIEUKH-WI-RIEUL
-0xC541	0xD715	# HANGUL SYLLABLE HIEUH-WE-THIEUTH
-0xC542	0xD716	# HANGUL SYLLABLE HIEUH-WE-PHIEUPH
-0xC543	0xD717	# HANGUL SYLLABLE HIEUH-WE-HIEUH
-0xC544	0xD71A	# HANGUL SYLLABLE HIEUH-WI-SSANGKIYEOK
-0xC545	0xD71B	# HANGUL SYLLABLE HIEUH-WI-KIYEOKSIOS
-0xC546	0xD71D	# HANGUL SYLLABLE HIEUH-WI-NIEUNCIEUC
-0xC547	0xD71E	# HANGUL SYLLABLE HIEUH-WI-NIEUNHIEUH
-0xC548	0xD71F	# HANGUL SYLLABLE HIEUH-WI-TIKEUT
-0xC549	0xD721	# HANGUL SYLLABLE HIEUH-WI-RIEULKIYEOK
-0xC54A	0xD722	# HANGUL SYLLABLE HIEUH-WI-RIEULMIEUM
-0xC54B	0xD723	# HANGUL SYLLABLE HIEUH-WI-RIEULPIEUP
-0xC54C	0xD724	# HANGUL SYLLABLE HIEUH-WI-RIEULSIOS
-0xC54D	0xD725	# HANGUL SYLLABLE HIEUH-WI-RIEULTHIEUTH
-0xC54E	0xD726	# HANGUL SYLLABLE HIEUH-WI-RIEULPHIEUPH
-0xC54F	0xD727	# HANGUL SYLLABLE HIEUH-WI-RIEULHIEUH
-0xC550	0xD72A	# HANGUL SYLLABLE HIEUH-WI-PIEUPSIOS
-0xC551	0xD72C	# HANGUL SYLLABLE HIEUH-WI-SSANGSIOS
-0xC552	0xD72E	# HANGUL SYLLABLE HIEUH-WI-CIEUC
-0xC553	0xD72F	# HANGUL SYLLABLE HIEUH-WI-CHIEUCH
-0xC554	0xD730	# HANGUL SYLLABLE HIEUH-WI-KHIEUKH
-0xC555	0xD731	# HANGUL SYLLABLE HIEUH-WI-THIEUTH
-0xC556	0xD732	# HANGUL SYLLABLE HIEUH-WI-PHIEUPH
-0xC557	0xD733	# HANGUL SYLLABLE HIEUH-WI-HIEUH
-0xC558	0xD736	# HANGUL SYLLABLE HIEUH-YU-SSANGKIYEOK
-0xC559	0xD737	# HANGUL SYLLABLE HIEUH-YU-KIYEOKSIOS
-0xC55A	0xD739	# HANGUL SYLLABLE HIEUH-YU-NIEUNCIEUC
-0xC561	0xD73A	# HANGUL SYLLABLE HIEUH-YU-NIEUNHIEUH
-0xC562	0xD73B	# HANGUL SYLLABLE HIEUH-YU-TIKEUT
-0xC563	0xD73D	# HANGUL SYLLABLE HIEUH-YU-RIEULKIYEOK
-0xC564	0xD73E	# HANGUL SYLLABLE HIEUH-YU-RIEULMIEUM
-0xC565	0xD73F	# HANGUL SYLLABLE HIEUH-YU-RIEULPIEUP
-0xC566	0xD740	# HANGUL SYLLABLE HIEUH-YU-RIEULSIOS
-0xC567	0xD741	# HANGUL SYLLABLE HIEUH-YU-RIEULTHIEUTH
-0xC568	0xD742	# HANGUL SYLLABLE HIEUH-YU-RIEULPHIEUPH
-0xC569	0xD743	# HANGUL SYLLABLE HIEUH-YU-RIEULHIEUH
-0xC56A	0xD745	# HANGUL SYLLABLE HIEUH-YU-PIEUP
-0xC56B	0xD746	# HANGUL SYLLABLE HIEUH-YU-PIEUPSIOS
-0xC56C	0xD748	# HANGUL SYLLABLE HIEUH-YU-SSANGSIOS
-0xC56D	0xD74A	# HANGUL SYLLABLE HIEUH-YU-CIEUC
-0xC56E	0xD74B	# HANGUL SYLLABLE HIEUH-YU-CHIEUCH
-0xC56F	0xD74C	# HANGUL SYLLABLE HIEUH-YU-KHIEUKH
-0xC570	0xD74D	# HANGUL SYLLABLE HIEUH-YU-THIEUTH
-0xC571	0xD74E	# HANGUL SYLLABLE HIEUH-YU-PHIEUPH
-0xC572	0xD74F	# HANGUL SYLLABLE HIEUH-YU-HIEUH
-0xC573	0xD752	# HANGUL SYLLABLE HIEUH-EU-SSANGKIYEOK
-0xC574	0xD753	# HANGUL SYLLABLE HIEUH-EU-KIYEOKSIOS
-0xC575	0xD755	# HANGUL SYLLABLE HIEUH-EU-NIEUNCIEUC
-0xC576	0xD75A	# HANGUL SYLLABLE HIEUH-EU-RIEULMIEUM
-0xC577	0xD75B	# HANGUL SYLLABLE HIEUH-EU-RIEULPIEUP
-0xC578	0xD75C	# HANGUL SYLLABLE HIEUH-EU-RIEULSIOS
-0xC579	0xD75D	# HANGUL SYLLABLE HIEUH-EU-RIEULTHIEUTH
-0xC57A	0xD75E	# HANGUL SYLLABLE HIEUH-EU-RIEULPHIEUPH
-0xC581	0xD75F	# HANGUL SYLLABLE HIEUH-EU-RIEULHIEUH
-0xC582	0xD762	# HANGUL SYLLABLE HIEUH-EU-PIEUPSIOS
-0xC583	0xD764	# HANGUL SYLLABLE HIEUH-EU-SSANGSIOS
-0xC584	0xD766	# HANGUL SYLLABLE HIEUH-EU-CIEUC
-0xC585	0xD767	# HANGUL SYLLABLE HIEUH-EU-CHIEUCH
-0xC586	0xD768	# HANGUL SYLLABLE HIEUH-EU-KHIEUKH
-0xC587	0xD76A	# HANGUL SYLLABLE HIEUH-EU-PHIEUPH
-0xC588	0xD76B	# HANGUL SYLLABLE HIEUH-EU-HIEUH
-0xC589	0xD76D	# HANGUL SYLLABLE HIEUH-YI-KIYEOK
-0xC58A	0xD76E	# HANGUL SYLLABLE HIEUH-YI-SSANGKIYEOK
-0xC58B	0xD76F	# HANGUL SYLLABLE HIEUH-YI-KIYEOKSIOS
-0xC58C	0xD771	# HANGUL SYLLABLE HIEUH-YI-NIEUNCIEUC
-0xC58D	0xD772	# HANGUL SYLLABLE HIEUH-YI-NIEUNHIEUH
-0xC58E	0xD773	# HANGUL SYLLABLE HIEUH-YI-TIKEUT
-0xC58F	0xD775	# HANGUL SYLLABLE HIEUH-YI-RIEULKIYEOK
-0xC590	0xD776	# HANGUL SYLLABLE HIEUH-YI-RIEULMIEUM
-0xC591	0xD777	# HANGUL SYLLABLE HIEUH-YI-RIEULPIEUP
-0xC592	0xD778	# HANGUL SYLLABLE HIEUH-YI-RIEULSIOS
-0xC593	0xD779	# HANGUL SYLLABLE HIEUH-YI-RIEULTHIEUTH
-0xC594	0xD77A	# HANGUL SYLLABLE HIEUH-YI-RIEULPHIEUPH
-0xC595	0xD77B	# HANGUL SYLLABLE HIEUH-YI-RIEULHIEUH
-0xC596	0xD77E	# HANGUL SYLLABLE HIEUH-YI-PIEUPSIOS
-0xC597	0xD77F	# HANGUL SYLLABLE HIEUH-YI-SIOS
-0xC598	0xD780	# HANGUL SYLLABLE HIEUH-YI-SSANGSIOS
-0xC599	0xD782	# HANGUL SYLLABLE HIEUH-YI-CIEUC
-0xC59A	0xD783	# HANGUL SYLLABLE HIEUH-YI-CHIEUCH
-0xC59B	0xD784	# HANGUL SYLLABLE HIEUH-YI-KHIEUKH
-0xC59C	0xD785	# HANGUL SYLLABLE HIEUH-YI-THIEUTH
-0xC59D	0xD786	# HANGUL SYLLABLE HIEUH-YI-PHIEUPH
-0xC59E	0xD787	# HANGUL SYLLABLE HIEUH-YI-HIEUH
-0xC59F	0xD78A	# HANGUL SYLLABLE HIEUH-I-SSANGKIYEOK
-0xC5A0	0xD78B	# HANGUL SYLLABLE HIEUH-I-KIYEOKSIOS
-0xC5A1	0xD044	# HANGUL SYLLABLE KHIEUKH-WI-MIEUM
-0xC5A2	0xD045	# HANGUL SYLLABLE KHIEUKH-WI-PIEUP
-0xC5A3	0xD047	# HANGUL SYLLABLE KHIEUKH-WI-SIOS
-0xC5A4	0xD049	# HANGUL SYLLABLE KHIEUKH-WI-IEUNG
-0xC5A5	0xD050	# HANGUL SYLLABLE KHIEUKH-YU
-0xC5A6	0xD054	# HANGUL SYLLABLE KHIEUKH-YU-NIEUN
-0xC5A7	0xD058	# HANGUL SYLLABLE KHIEUKH-YU-RIEUL
-0xC5A8	0xD060	# HANGUL SYLLABLE KHIEUKH-YU-MIEUM
-0xC5A9	0xD06C	# HANGUL SYLLABLE KHIEUKH-EU
-0xC5AA	0xD06D	# HANGUL SYLLABLE KHIEUKH-EU-KIYEOK
-0xC5AB	0xD070	# HANGUL SYLLABLE KHIEUKH-EU-NIEUN
-0xC5AC	0xD074	# HANGUL SYLLABLE KHIEUKH-EU-RIEUL
-0xC5AD	0xD07C	# HANGUL SYLLABLE KHIEUKH-EU-MIEUM
-0xC5AE	0xD07D	# HANGUL SYLLABLE KHIEUKH-EU-PIEUP
-0xC5AF	0xD081	# HANGUL SYLLABLE KHIEUKH-EU-IEUNG
-0xC5B0	0xD0A4	# HANGUL SYLLABLE KHIEUKH-I
-0xC5B1	0xD0A5	# HANGUL SYLLABLE KHIEUKH-I-KIYEOK
-0xC5B2	0xD0A8	# HANGUL SYLLABLE KHIEUKH-I-NIEUN
-0xC5B3	0xD0AC	# HANGUL SYLLABLE KHIEUKH-I-RIEUL
-0xC5B4	0xD0B4	# HANGUL SYLLABLE KHIEUKH-I-MIEUM
-0xC5B5	0xD0B5	# HANGUL SYLLABLE KHIEUKH-I-PIEUP
-0xC5B6	0xD0B7	# HANGUL SYLLABLE KHIEUKH-I-SIOS
-0xC5B7	0xD0B9	# HANGUL SYLLABLE KHIEUKH-I-IEUNG
-0xC5B8	0xD0C0	# HANGUL SYLLABLE THIEUTH-A
-0xC5B9	0xD0C1	# HANGUL SYLLABLE THIEUTH-A-KIYEOK
-0xC5BA	0xD0C4	# HANGUL SYLLABLE THIEUTH-A-NIEUN
-0xC5BB	0xD0C8	# HANGUL SYLLABLE THIEUTH-A-RIEUL
-0xC5BC	0xD0C9	# HANGUL SYLLABLE THIEUTH-A-RIEULKIYEOK
-0xC5BD	0xD0D0	# HANGUL SYLLABLE THIEUTH-A-MIEUM
-0xC5BE	0xD0D1	# HANGUL SYLLABLE THIEUTH-A-PIEUP
-0xC5BF	0xD0D3	# HANGUL SYLLABLE THIEUTH-A-SIOS
-0xC5C0	0xD0D4	# HANGUL SYLLABLE THIEUTH-A-SSANGSIOS
-0xC5C1	0xD0D5	# HANGUL SYLLABLE THIEUTH-A-IEUNG
-0xC5C2	0xD0DC	# HANGUL SYLLABLE THIEUTH-AE
-0xC5C3	0xD0DD	# HANGUL SYLLABLE THIEUTH-AE-KIYEOK
-0xC5C4	0xD0E0	# HANGUL SYLLABLE THIEUTH-AE-NIEUN
-0xC5C5	0xD0E4	# HANGUL SYLLABLE THIEUTH-AE-RIEUL
-0xC5C6	0xD0EC	# HANGUL SYLLABLE THIEUTH-AE-MIEUM
-0xC5C7	0xD0ED	# HANGUL SYLLABLE THIEUTH-AE-PIEUP
-0xC5C8	0xD0EF	# HANGUL SYLLABLE THIEUTH-AE-SIOS
-0xC5C9	0xD0F0	# HANGUL SYLLABLE THIEUTH-AE-SSANGSIOS
-0xC5CA	0xD0F1	# HANGUL SYLLABLE THIEUTH-AE-IEUNG
-0xC5CB	0xD0F8	# HANGUL SYLLABLE THIEUTH-YA
-0xC5CC	0xD10D	# HANGUL SYLLABLE THIEUTH-YA-IEUNG
-0xC5CD	0xD130	# HANGUL SYLLABLE THIEUTH-EO
-0xC5CE	0xD131	# HANGUL SYLLABLE THIEUTH-EO-KIYEOK
-0xC5CF	0xD134	# HANGUL SYLLABLE THIEUTH-EO-NIEUN
-0xC5D0	0xD138	# HANGUL SYLLABLE THIEUTH-EO-RIEUL
-0xC5D1	0xD13A	# HANGUL SYLLABLE THIEUTH-EO-RIEULMIEUM
-0xC5D2	0xD140	# HANGUL SYLLABLE THIEUTH-EO-MIEUM
-0xC5D3	0xD141	# HANGUL SYLLABLE THIEUTH-EO-PIEUP
-0xC5D4	0xD143	# HANGUL SYLLABLE THIEUTH-EO-SIOS
-0xC5D5	0xD144	# HANGUL SYLLABLE THIEUTH-EO-SSANGSIOS
-0xC5D6	0xD145	# HANGUL SYLLABLE THIEUTH-EO-IEUNG
-0xC5D7	0xD14C	# HANGUL SYLLABLE THIEUTH-E
-0xC5D8	0xD14D	# HANGUL SYLLABLE THIEUTH-E-KIYEOK
-0xC5D9	0xD150	# HANGUL SYLLABLE THIEUTH-E-NIEUN
-0xC5DA	0xD154	# HANGUL SYLLABLE THIEUTH-E-RIEUL
-0xC5DB	0xD15C	# HANGUL SYLLABLE THIEUTH-E-MIEUM
-0xC5DC	0xD15D	# HANGUL SYLLABLE THIEUTH-E-PIEUP
-0xC5DD	0xD15F	# HANGUL SYLLABLE THIEUTH-E-SIOS
-0xC5DE	0xD161	# HANGUL SYLLABLE THIEUTH-E-IEUNG
-0xC5DF	0xD168	# HANGUL SYLLABLE THIEUTH-YEO
-0xC5E0	0xD16C	# HANGUL SYLLABLE THIEUTH-YEO-NIEUN
-0xC5E1	0xD17C	# HANGUL SYLLABLE THIEUTH-YEO-SSANGSIOS
-0xC5E2	0xD184	# HANGUL SYLLABLE THIEUTH-YE
-0xC5E3	0xD188	# HANGUL SYLLABLE THIEUTH-YE-NIEUN
-0xC5E4	0xD1A0	# HANGUL SYLLABLE THIEUTH-O
-0xC5E5	0xD1A1	# HANGUL SYLLABLE THIEUTH-O-KIYEOK
-0xC5E6	0xD1A4	# HANGUL SYLLABLE THIEUTH-O-NIEUN
-0xC5E7	0xD1A8	# HANGUL SYLLABLE THIEUTH-O-RIEUL
-0xC5E8	0xD1B0	# HANGUL SYLLABLE THIEUTH-O-MIEUM
-0xC5E9	0xD1B1	# HANGUL SYLLABLE THIEUTH-O-PIEUP
-0xC5EA	0xD1B3	# HANGUL SYLLABLE THIEUTH-O-SIOS
-0xC5EB	0xD1B5	# HANGUL SYLLABLE THIEUTH-O-IEUNG
-0xC5EC	0xD1BA	# HANGUL SYLLABLE THIEUTH-O-PHIEUPH
-0xC5ED	0xD1BC	# HANGUL SYLLABLE THIEUTH-WA
-0xC5EE	0xD1C0	# HANGUL SYLLABLE THIEUTH-WA-NIEUN
-0xC5EF	0xD1D8	# HANGUL SYLLABLE THIEUTH-WAE
-0xC5F0	0xD1F4	# HANGUL SYLLABLE THIEUTH-OE
-0xC5F1	0xD1F8	# HANGUL SYLLABLE THIEUTH-OE-NIEUN
-0xC5F2	0xD207	# HANGUL SYLLABLE THIEUTH-OE-SIOS
-0xC5F3	0xD209	# HANGUL SYLLABLE THIEUTH-OE-IEUNG
-0xC5F4	0xD210	# HANGUL SYLLABLE THIEUTH-YO
-0xC5F5	0xD22C	# HANGUL SYLLABLE THIEUTH-U
-0xC5F6	0xD22D	# HANGUL SYLLABLE THIEUTH-U-KIYEOK
-0xC5F7	0xD230	# HANGUL SYLLABLE THIEUTH-U-NIEUN
-0xC5F8	0xD234	# HANGUL SYLLABLE THIEUTH-U-RIEUL
-0xC5F9	0xD23C	# HANGUL SYLLABLE THIEUTH-U-MIEUM
-0xC5FA	0xD23D	# HANGUL SYLLABLE THIEUTH-U-PIEUP
-0xC5FB	0xD23F	# HANGUL SYLLABLE THIEUTH-U-SIOS
-0xC5FC	0xD241	# HANGUL SYLLABLE THIEUTH-U-IEUNG
-0xC5FD	0xD248	# HANGUL SYLLABLE THIEUTH-WEO
-0xC5FE	0xD25C	# HANGUL SYLLABLE THIEUTH-WEO-SSANGSIOS
-0xC641	0xD78D	# HANGUL SYLLABLE HIEUH-I-NIEUNCIEUC
-0xC642	0xD78E	# HANGUL SYLLABLE HIEUH-I-NIEUNHIEUH
-0xC643	0xD78F	# HANGUL SYLLABLE HIEUH-I-TIKEUT
-0xC644	0xD791	# HANGUL SYLLABLE HIEUH-I-RIEULKIYEOK
-0xC645	0xD792	# HANGUL SYLLABLE HIEUH-I-RIEULMIEUM
-0xC646	0xD793	# HANGUL SYLLABLE HIEUH-I-RIEULPIEUP
-0xC647	0xD794	# HANGUL SYLLABLE HIEUH-I-RIEULSIOS
-0xC648	0xD795	# HANGUL SYLLABLE HIEUH-I-RIEULTHIEUTH
-0xC649	0xD796	# HANGUL SYLLABLE HIEUH-I-RIEULPHIEUPH
-0xC64A	0xD797	# HANGUL SYLLABLE HIEUH-I-RIEULHIEUH
-0xC64B	0xD79A	# HANGUL SYLLABLE HIEUH-I-PIEUPSIOS
-0xC64C	0xD79C	# HANGUL SYLLABLE HIEUH-I-SSANGSIOS
-0xC64D	0xD79E	# HANGUL SYLLABLE HIEUH-I-CIEUC
-0xC64E	0xD79F	# HANGUL SYLLABLE HIEUH-I-CHIEUCH
-0xC64F	0xD7A0	# HANGUL SYLLABLE HIEUH-I-KHIEUKH
-0xC650	0xD7A1	# HANGUL SYLLABLE HIEUH-I-THIEUTH
-0xC651	0xD7A2	# HANGUL SYLLABLE HIEUH-I-PHIEUPH
-0xC652	0xD7A3	# HANGUL SYLLABLE HIEUH-I-HIEUH
-0xC6A1	0xD264	# HANGUL SYLLABLE THIEUTH-WE
-0xC6A2	0xD280	# HANGUL SYLLABLE THIEUTH-WI
-0xC6A3	0xD281	# HANGUL SYLLABLE THIEUTH-WI-KIYEOK
-0xC6A4	0xD284	# HANGUL SYLLABLE THIEUTH-WI-NIEUN
-0xC6A5	0xD288	# HANGUL SYLLABLE THIEUTH-WI-RIEUL
-0xC6A6	0xD290	# HANGUL SYLLABLE THIEUTH-WI-MIEUM
-0xC6A7	0xD291	# HANGUL SYLLABLE THIEUTH-WI-PIEUP
-0xC6A8	0xD295	# HANGUL SYLLABLE THIEUTH-WI-IEUNG
-0xC6A9	0xD29C	# HANGUL SYLLABLE THIEUTH-YU
-0xC6AA	0xD2A0	# HANGUL SYLLABLE THIEUTH-YU-NIEUN
-0xC6AB	0xD2A4	# HANGUL SYLLABLE THIEUTH-YU-RIEUL
-0xC6AC	0xD2AC	# HANGUL SYLLABLE THIEUTH-YU-MIEUM
-0xC6AD	0xD2B1	# HANGUL SYLLABLE THIEUTH-YU-IEUNG
-0xC6AE	0xD2B8	# HANGUL SYLLABLE THIEUTH-EU
-0xC6AF	0xD2B9	# HANGUL SYLLABLE THIEUTH-EU-KIYEOK
-0xC6B0	0xD2BC	# HANGUL SYLLABLE THIEUTH-EU-NIEUN
-0xC6B1	0xD2BF	# HANGUL SYLLABLE THIEUTH-EU-TIKEUT
-0xC6B2	0xD2C0	# HANGUL SYLLABLE THIEUTH-EU-RIEUL
-0xC6B3	0xD2C2	# HANGUL SYLLABLE THIEUTH-EU-RIEULMIEUM
-0xC6B4	0xD2C8	# HANGUL SYLLABLE THIEUTH-EU-MIEUM
-0xC6B5	0xD2C9	# HANGUL SYLLABLE THIEUTH-EU-PIEUP
-0xC6B6	0xD2CB	# HANGUL SYLLABLE THIEUTH-EU-SIOS
-0xC6B7	0xD2D4	# HANGUL SYLLABLE THIEUTH-YI
-0xC6B8	0xD2D8	# HANGUL SYLLABLE THIEUTH-YI-NIEUN
-0xC6B9	0xD2DC	# HANGUL SYLLABLE THIEUTH-YI-RIEUL
-0xC6BA	0xD2E4	# HANGUL SYLLABLE THIEUTH-YI-MIEUM
-0xC6BB	0xD2E5	# HANGUL SYLLABLE THIEUTH-YI-PIEUP
-0xC6BC	0xD2F0	# HANGUL SYLLABLE THIEUTH-I
-0xC6BD	0xD2F1	# HANGUL SYLLABLE THIEUTH-I-KIYEOK
-0xC6BE	0xD2F4	# HANGUL SYLLABLE THIEUTH-I-NIEUN
-0xC6BF	0xD2F8	# HANGUL SYLLABLE THIEUTH-I-RIEUL
-0xC6C0	0xD300	# HANGUL SYLLABLE THIEUTH-I-MIEUM
-0xC6C1	0xD301	# HANGUL SYLLABLE THIEUTH-I-PIEUP
-0xC6C2	0xD303	# HANGUL SYLLABLE THIEUTH-I-SIOS
-0xC6C3	0xD305	# HANGUL SYLLABLE THIEUTH-I-IEUNG
-0xC6C4	0xD30C	# HANGUL SYLLABLE PHIEUPH-A
-0xC6C5	0xD30D	# HANGUL SYLLABLE PHIEUPH-A-KIYEOK
-0xC6C6	0xD30E	# HANGUL SYLLABLE PHIEUPH-A-SSANGKIYEOK
-0xC6C7	0xD310	# HANGUL SYLLABLE PHIEUPH-A-NIEUN
-0xC6C8	0xD314	# HANGUL SYLLABLE PHIEUPH-A-RIEUL
-0xC6C9	0xD316	# HANGUL SYLLABLE PHIEUPH-A-RIEULMIEUM
-0xC6CA	0xD31C	# HANGUL SYLLABLE PHIEUPH-A-MIEUM
-0xC6CB	0xD31D	# HANGUL SYLLABLE PHIEUPH-A-PIEUP
-0xC6CC	0xD31F	# HANGUL SYLLABLE PHIEUPH-A-SIOS
-0xC6CD	0xD320	# HANGUL SYLLABLE PHIEUPH-A-SSANGSIOS
-0xC6CE	0xD321	# HANGUL SYLLABLE PHIEUPH-A-IEUNG
-0xC6CF	0xD325	# HANGUL SYLLABLE PHIEUPH-A-THIEUTH
-0xC6D0	0xD328	# HANGUL SYLLABLE PHIEUPH-AE
-0xC6D1	0xD329	# HANGUL SYLLABLE PHIEUPH-AE-KIYEOK
-0xC6D2	0xD32C	# HANGUL SYLLABLE PHIEUPH-AE-NIEUN
-0xC6D3	0xD330	# HANGUL SYLLABLE PHIEUPH-AE-RIEUL
-0xC6D4	0xD338	# HANGUL SYLLABLE PHIEUPH-AE-MIEUM
-0xC6D5	0xD339	# HANGUL SYLLABLE PHIEUPH-AE-PIEUP
-0xC6D6	0xD33B	# HANGUL SYLLABLE PHIEUPH-AE-SIOS
-0xC6D7	0xD33C	# HANGUL SYLLABLE PHIEUPH-AE-SSANGSIOS
-0xC6D8	0xD33D	# HANGUL SYLLABLE PHIEUPH-AE-IEUNG
-0xC6D9	0xD344	# HANGUL SYLLABLE PHIEUPH-YA
-0xC6DA	0xD345	# HANGUL SYLLABLE PHIEUPH-YA-KIYEOK
-0xC6DB	0xD37C	# HANGUL SYLLABLE PHIEUPH-EO
-0xC6DC	0xD37D	# HANGUL SYLLABLE PHIEUPH-EO-KIYEOK
-0xC6DD	0xD380	# HANGUL SYLLABLE PHIEUPH-EO-NIEUN
-0xC6DE	0xD384	# HANGUL SYLLABLE PHIEUPH-EO-RIEUL
-0xC6DF	0xD38C	# HANGUL SYLLABLE PHIEUPH-EO-MIEUM
-0xC6E0	0xD38D	# HANGUL SYLLABLE PHIEUPH-EO-PIEUP
-0xC6E1	0xD38F	# HANGUL SYLLABLE PHIEUPH-EO-SIOS
-0xC6E2	0xD390	# HANGUL SYLLABLE PHIEUPH-EO-SSANGSIOS
-0xC6E3	0xD391	# HANGUL SYLLABLE PHIEUPH-EO-IEUNG
-0xC6E4	0xD398	# HANGUL SYLLABLE PHIEUPH-E
-0xC6E5	0xD399	# HANGUL SYLLABLE PHIEUPH-E-KIYEOK
-0xC6E6	0xD39C	# HANGUL SYLLABLE PHIEUPH-E-NIEUN
-0xC6E7	0xD3A0	# HANGUL SYLLABLE PHIEUPH-E-RIEUL
-0xC6E8	0xD3A8	# HANGUL SYLLABLE PHIEUPH-E-MIEUM
-0xC6E9	0xD3A9	# HANGUL SYLLABLE PHIEUPH-E-PIEUP
-0xC6EA	0xD3AB	# HANGUL SYLLABLE PHIEUPH-E-SIOS
-0xC6EB	0xD3AD	# HANGUL SYLLABLE PHIEUPH-E-IEUNG
-0xC6EC	0xD3B4	# HANGUL SYLLABLE PHIEUPH-YEO
-0xC6ED	0xD3B8	# HANGUL SYLLABLE PHIEUPH-YEO-NIEUN
-0xC6EE	0xD3BC	# HANGUL SYLLABLE PHIEUPH-YEO-RIEUL
-0xC6EF	0xD3C4	# HANGUL SYLLABLE PHIEUPH-YEO-MIEUM
-0xC6F0	0xD3C5	# HANGUL SYLLABLE PHIEUPH-YEO-PIEUP
-0xC6F1	0xD3C8	# HANGUL SYLLABLE PHIEUPH-YEO-SSANGSIOS
-0xC6F2	0xD3C9	# HANGUL SYLLABLE PHIEUPH-YEO-IEUNG
-0xC6F3	0xD3D0	# HANGUL SYLLABLE PHIEUPH-YE
-0xC6F4	0xD3D8	# HANGUL SYLLABLE PHIEUPH-YE-RIEUL
-0xC6F5	0xD3E1	# HANGUL SYLLABLE PHIEUPH-YE-PIEUP
-0xC6F6	0xD3E3	# HANGUL SYLLABLE PHIEUPH-YE-SIOS
-0xC6F7	0xD3EC	# HANGUL SYLLABLE PHIEUPH-O
-0xC6F8	0xD3ED	# HANGUL SYLLABLE PHIEUPH-O-KIYEOK
-0xC6F9	0xD3F0	# HANGUL SYLLABLE PHIEUPH-O-NIEUN
-0xC6FA	0xD3F4	# HANGUL SYLLABLE PHIEUPH-O-RIEUL
-0xC6FB	0xD3FC	# HANGUL SYLLABLE PHIEUPH-O-MIEUM
-0xC6FC	0xD3FD	# HANGUL SYLLABLE PHIEUPH-O-PIEUP
-0xC6FD	0xD3FF	# HANGUL SYLLABLE PHIEUPH-O-SIOS
-0xC6FE	0xD401	# HANGUL SYLLABLE PHIEUPH-O-IEUNG
-0xC7A1	0xD408	# HANGUL SYLLABLE PHIEUPH-WA
-0xC7A2	0xD41D	# HANGUL SYLLABLE PHIEUPH-WA-IEUNG
-0xC7A3	0xD440	# HANGUL SYLLABLE PHIEUPH-OE
-0xC7A4	0xD444	# HANGUL SYLLABLE PHIEUPH-OE-NIEUN
-0xC7A5	0xD45C	# HANGUL SYLLABLE PHIEUPH-YO
-0xC7A6	0xD460	# HANGUL SYLLABLE PHIEUPH-YO-NIEUN
-0xC7A7	0xD464	# HANGUL SYLLABLE PHIEUPH-YO-RIEUL
-0xC7A8	0xD46D	# HANGUL SYLLABLE PHIEUPH-YO-PIEUP
-0xC7A9	0xD46F	# HANGUL SYLLABLE PHIEUPH-YO-SIOS
-0xC7AA	0xD478	# HANGUL SYLLABLE PHIEUPH-U
-0xC7AB	0xD479	# HANGUL SYLLABLE PHIEUPH-U-KIYEOK
-0xC7AC	0xD47C	# HANGUL SYLLABLE PHIEUPH-U-NIEUN
-0xC7AD	0xD47F	# HANGUL SYLLABLE PHIEUPH-U-TIKEUT
-0xC7AE	0xD480	# HANGUL SYLLABLE PHIEUPH-U-RIEUL
-0xC7AF	0xD482	# HANGUL SYLLABLE PHIEUPH-U-RIEULMIEUM
-0xC7B0	0xD488	# HANGUL SYLLABLE PHIEUPH-U-MIEUM
-0xC7B1	0xD489	# HANGUL SYLLABLE PHIEUPH-U-PIEUP
-0xC7B2	0xD48B	# HANGUL SYLLABLE PHIEUPH-U-SIOS
-0xC7B3	0xD48D	# HANGUL SYLLABLE PHIEUPH-U-IEUNG
-0xC7B4	0xD494	# HANGUL SYLLABLE PHIEUPH-WEO
-0xC7B5	0xD4A9	# HANGUL SYLLABLE PHIEUPH-WEO-IEUNG
-0xC7B6	0xD4CC	# HANGUL SYLLABLE PHIEUPH-WI
-0xC7B7	0xD4D0	# HANGUL SYLLABLE PHIEUPH-WI-NIEUN
-0xC7B8	0xD4D4	# HANGUL SYLLABLE PHIEUPH-WI-RIEUL
-0xC7B9	0xD4DC	# HANGUL SYLLABLE PHIEUPH-WI-MIEUM
-0xC7BA	0xD4DF	# HANGUL SYLLABLE PHIEUPH-WI-SIOS
-0xC7BB	0xD4E8	# HANGUL SYLLABLE PHIEUPH-YU
-0xC7BC	0xD4EC	# HANGUL SYLLABLE PHIEUPH-YU-NIEUN
-0xC7BD	0xD4F0	# HANGUL SYLLABLE PHIEUPH-YU-RIEUL
-0xC7BE	0xD4F8	# HANGUL SYLLABLE PHIEUPH-YU-MIEUM
-0xC7BF	0xD4FB	# HANGUL SYLLABLE PHIEUPH-YU-SIOS
-0xC7C0	0xD4FD	# HANGUL SYLLABLE PHIEUPH-YU-IEUNG
-0xC7C1	0xD504	# HANGUL SYLLABLE PHIEUPH-EU
-0xC7C2	0xD508	# HANGUL SYLLABLE PHIEUPH-EU-NIEUN
-0xC7C3	0xD50C	# HANGUL SYLLABLE PHIEUPH-EU-RIEUL
-0xC7C4	0xD514	# HANGUL SYLLABLE PHIEUPH-EU-MIEUM
-0xC7C5	0xD515	# HANGUL SYLLABLE PHIEUPH-EU-PIEUP
-0xC7C6	0xD517	# HANGUL SYLLABLE PHIEUPH-EU-SIOS
-0xC7C7	0xD53C	# HANGUL SYLLABLE PHIEUPH-I
-0xC7C8	0xD53D	# HANGUL SYLLABLE PHIEUPH-I-KIYEOK
-0xC7C9	0xD540	# HANGUL SYLLABLE PHIEUPH-I-NIEUN
-0xC7CA	0xD544	# HANGUL SYLLABLE PHIEUPH-I-RIEUL
-0xC7CB	0xD54C	# HANGUL SYLLABLE PHIEUPH-I-MIEUM
-0xC7CC	0xD54D	# HANGUL SYLLABLE PHIEUPH-I-PIEUP
-0xC7CD	0xD54F	# HANGUL SYLLABLE PHIEUPH-I-SIOS
-0xC7CE	0xD551	# HANGUL SYLLABLE PHIEUPH-I-IEUNG
-0xC7CF	0xD558	# HANGUL SYLLABLE HIEUH-A
-0xC7D0	0xD559	# HANGUL SYLLABLE HIEUH-A-KIYEOK
-0xC7D1	0xD55C	# HANGUL SYLLABLE HIEUH-A-NIEUN
-0xC7D2	0xD560	# HANGUL SYLLABLE HIEUH-A-RIEUL
-0xC7D3	0xD565	# HANGUL SYLLABLE HIEUH-A-RIEULTHIEUTH
-0xC7D4	0xD568	# HANGUL SYLLABLE HIEUH-A-MIEUM
-0xC7D5	0xD569	# HANGUL SYLLABLE HIEUH-A-PIEUP
-0xC7D6	0xD56B	# HANGUL SYLLABLE HIEUH-A-SIOS
-0xC7D7	0xD56D	# HANGUL SYLLABLE HIEUH-A-IEUNG
-0xC7D8	0xD574	# HANGUL SYLLABLE HIEUH-AE
-0xC7D9	0xD575	# HANGUL SYLLABLE HIEUH-AE-KIYEOK
-0xC7DA	0xD578	# HANGUL SYLLABLE HIEUH-AE-NIEUN
-0xC7DB	0xD57C	# HANGUL SYLLABLE HIEUH-AE-RIEUL
-0xC7DC	0xD584	# HANGUL SYLLABLE HIEUH-AE-MIEUM
-0xC7DD	0xD585	# HANGUL SYLLABLE HIEUH-AE-PIEUP
-0xC7DE	0xD587	# HANGUL SYLLABLE HIEUH-AE-SIOS
-0xC7DF	0xD588	# HANGUL SYLLABLE HIEUH-AE-SSANGSIOS
-0xC7E0	0xD589	# HANGUL SYLLABLE HIEUH-AE-IEUNG
-0xC7E1	0xD590	# HANGUL SYLLABLE HIEUH-YA
-0xC7E2	0xD5A5	# HANGUL SYLLABLE HIEUH-YA-IEUNG
-0xC7E3	0xD5C8	# HANGUL SYLLABLE HIEUH-EO
-0xC7E4	0xD5C9	# HANGUL SYLLABLE HIEUH-EO-KIYEOK
-0xC7E5	0xD5CC	# HANGUL SYLLABLE HIEUH-EO-NIEUN
-0xC7E6	0xD5D0	# HANGUL SYLLABLE HIEUH-EO-RIEUL
-0xC7E7	0xD5D2	# HANGUL SYLLABLE HIEUH-EO-RIEULMIEUM
-0xC7E8	0xD5D8	# HANGUL SYLLABLE HIEUH-EO-MIEUM
-0xC7E9	0xD5D9	# HANGUL SYLLABLE HIEUH-EO-PIEUP
-0xC7EA	0xD5DB	# HANGUL SYLLABLE HIEUH-EO-SIOS
-0xC7EB	0xD5DD	# HANGUL SYLLABLE HIEUH-EO-IEUNG
-0xC7EC	0xD5E4	# HANGUL SYLLABLE HIEUH-E
-0xC7ED	0xD5E5	# HANGUL SYLLABLE HIEUH-E-KIYEOK
-0xC7EE	0xD5E8	# HANGUL SYLLABLE HIEUH-E-NIEUN
-0xC7EF	0xD5EC	# HANGUL SYLLABLE HIEUH-E-RIEUL
-0xC7F0	0xD5F4	# HANGUL SYLLABLE HIEUH-E-MIEUM
-0xC7F1	0xD5F5	# HANGUL SYLLABLE HIEUH-E-PIEUP
-0xC7F2	0xD5F7	# HANGUL SYLLABLE HIEUH-E-SIOS
-0xC7F3	0xD5F9	# HANGUL SYLLABLE HIEUH-E-IEUNG
-0xC7F4	0xD600	# HANGUL SYLLABLE HIEUH-YEO
-0xC7F5	0xD601	# HANGUL SYLLABLE HIEUH-YEO-KIYEOK
-0xC7F6	0xD604	# HANGUL SYLLABLE HIEUH-YEO-NIEUN
-0xC7F7	0xD608	# HANGUL SYLLABLE HIEUH-YEO-RIEUL
-0xC7F8	0xD610	# HANGUL SYLLABLE HIEUH-YEO-MIEUM
-0xC7F9	0xD611	# HANGUL SYLLABLE HIEUH-YEO-PIEUP
-0xC7FA	0xD613	# HANGUL SYLLABLE HIEUH-YEO-SIOS
-0xC7FB	0xD614	# HANGUL SYLLABLE HIEUH-YEO-SSANGSIOS
-0xC7FC	0xD615	# HANGUL SYLLABLE HIEUH-YEO-IEUNG
-0xC7FD	0xD61C	# HANGUL SYLLABLE HIEUH-YE
-0xC7FE	0xD620	# HANGUL SYLLABLE HIEUH-YE-NIEUN
-0xC8A1	0xD624	# HANGUL SYLLABLE HIEUH-YE-RIEUL
-0xC8A2	0xD62D	# HANGUL SYLLABLE HIEUH-YE-PIEUP
-0xC8A3	0xD638	# HANGUL SYLLABLE HIEUH-O
-0xC8A4	0xD639	# HANGUL SYLLABLE HIEUH-O-KIYEOK
-0xC8A5	0xD63C	# HANGUL SYLLABLE HIEUH-O-NIEUN
-0xC8A6	0xD640	# HANGUL SYLLABLE HIEUH-O-RIEUL
-0xC8A7	0xD645	# HANGUL SYLLABLE HIEUH-O-RIEULTHIEUTH
-0xC8A8	0xD648	# HANGUL SYLLABLE HIEUH-O-MIEUM
-0xC8A9	0xD649	# HANGUL SYLLABLE HIEUH-O-PIEUP
-0xC8AA	0xD64B	# HANGUL SYLLABLE HIEUH-O-SIOS
-0xC8AB	0xD64D	# HANGUL SYLLABLE HIEUH-O-IEUNG
-0xC8AC	0xD651	# HANGUL SYLLABLE HIEUH-O-THIEUTH
-0xC8AD	0xD654	# HANGUL SYLLABLE HIEUH-WA
-0xC8AE	0xD655	# HANGUL SYLLABLE HIEUH-WA-KIYEOK
-0xC8AF	0xD658	# HANGUL SYLLABLE HIEUH-WA-NIEUN
-0xC8B0	0xD65C	# HANGUL SYLLABLE HIEUH-WA-RIEUL
-0xC8B1	0xD667	# HANGUL SYLLABLE HIEUH-WA-SIOS
-0xC8B2	0xD669	# HANGUL SYLLABLE HIEUH-WA-IEUNG
-0xC8B3	0xD670	# HANGUL SYLLABLE HIEUH-WAE
-0xC8B4	0xD671	# HANGUL SYLLABLE HIEUH-WAE-KIYEOK
-0xC8B5	0xD674	# HANGUL SYLLABLE HIEUH-WAE-NIEUN
-0xC8B6	0xD683	# HANGUL SYLLABLE HIEUH-WAE-SIOS
-0xC8B7	0xD685	# HANGUL SYLLABLE HIEUH-WAE-IEUNG
-0xC8B8	0xD68C	# HANGUL SYLLABLE HIEUH-OE
-0xC8B9	0xD68D	# HANGUL SYLLABLE HIEUH-OE-KIYEOK
-0xC8BA	0xD690	# HANGUL SYLLABLE HIEUH-OE-NIEUN
-0xC8BB	0xD694	# HANGUL SYLLABLE HIEUH-OE-RIEUL
-0xC8BC	0xD69D	# HANGUL SYLLABLE HIEUH-OE-PIEUP
-0xC8BD	0xD69F	# HANGUL SYLLABLE HIEUH-OE-SIOS
-0xC8BE	0xD6A1	# HANGUL SYLLABLE HIEUH-OE-IEUNG
-0xC8BF	0xD6A8	# HANGUL SYLLABLE HIEUH-YO
-0xC8C0	0xD6AC	# HANGUL SYLLABLE HIEUH-YO-NIEUN
-0xC8C1	0xD6B0	# HANGUL SYLLABLE HIEUH-YO-RIEUL
-0xC8C2	0xD6B9	# HANGUL SYLLABLE HIEUH-YO-PIEUP
-0xC8C3	0xD6BB	# HANGUL SYLLABLE HIEUH-YO-SIOS
-0xC8C4	0xD6C4	# HANGUL SYLLABLE HIEUH-U
-0xC8C5	0xD6C5	# HANGUL SYLLABLE HIEUH-U-KIYEOK
-0xC8C6	0xD6C8	# HANGUL SYLLABLE HIEUH-U-NIEUN
-0xC8C7	0xD6CC	# HANGUL SYLLABLE HIEUH-U-RIEUL
-0xC8C8	0xD6D1	# HANGUL SYLLABLE HIEUH-U-RIEULTHIEUTH
-0xC8C9	0xD6D4	# HANGUL SYLLABLE HIEUH-U-MIEUM
-0xC8CA	0xD6D7	# HANGUL SYLLABLE HIEUH-U-SIOS
-0xC8CB	0xD6D9	# HANGUL SYLLABLE HIEUH-U-IEUNG
-0xC8CC	0xD6E0	# HANGUL SYLLABLE HIEUH-WEO
-0xC8CD	0xD6E4	# HANGUL SYLLABLE HIEUH-WEO-NIEUN
-0xC8CE	0xD6E8	# HANGUL SYLLABLE HIEUH-WEO-RIEUL
-0xC8CF	0xD6F0	# HANGUL SYLLABLE HIEUH-WEO-MIEUM
-0xC8D0	0xD6F5	# HANGUL SYLLABLE HIEUH-WEO-IEUNG
-0xC8D1	0xD6FC	# HANGUL SYLLABLE HIEUH-WE
-0xC8D2	0xD6FD	# HANGUL SYLLABLE HIEUH-WE-KIYEOK
-0xC8D3	0xD700	# HANGUL SYLLABLE HIEUH-WE-NIEUN
-0xC8D4	0xD704	# HANGUL SYLLABLE HIEUH-WE-RIEUL
-0xC8D5	0xD711	# HANGUL SYLLABLE HIEUH-WE-IEUNG
-0xC8D6	0xD718	# HANGUL SYLLABLE HIEUH-WI
-0xC8D7	0xD719	# HANGUL SYLLABLE HIEUH-WI-KIYEOK
-0xC8D8	0xD71C	# HANGUL SYLLABLE HIEUH-WI-NIEUN
-0xC8D9	0xD720	# HANGUL SYLLABLE HIEUH-WI-RIEUL
-0xC8DA	0xD728	# HANGUL SYLLABLE HIEUH-WI-MIEUM
-0xC8DB	0xD729	# HANGUL SYLLABLE HIEUH-WI-PIEUP
-0xC8DC	0xD72B	# HANGUL SYLLABLE HIEUH-WI-SIOS
-0xC8DD	0xD72D	# HANGUL SYLLABLE HIEUH-WI-IEUNG
-0xC8DE	0xD734	# HANGUL SYLLABLE HIEUH-YU
-0xC8DF	0xD735	# HANGUL SYLLABLE HIEUH-YU-KIYEOK
-0xC8E0	0xD738	# HANGUL SYLLABLE HIEUH-YU-NIEUN
-0xC8E1	0xD73C	# HANGUL SYLLABLE HIEUH-YU-RIEUL
-0xC8E2	0xD744	# HANGUL SYLLABLE HIEUH-YU-MIEUM
-0xC8E3	0xD747	# HANGUL SYLLABLE HIEUH-YU-SIOS
-0xC8E4	0xD749	# HANGUL SYLLABLE HIEUH-YU-IEUNG
-0xC8E5	0xD750	# HANGUL SYLLABLE HIEUH-EU
-0xC8E6	0xD751	# HANGUL SYLLABLE HIEUH-EU-KIYEOK
-0xC8E7	0xD754	# HANGUL SYLLABLE HIEUH-EU-NIEUN
-0xC8E8	0xD756	# HANGUL SYLLABLE HIEUH-EU-NIEUNHIEUH
-0xC8E9	0xD757	# HANGUL SYLLABLE HIEUH-EU-TIKEUT
-0xC8EA	0xD758	# HANGUL SYLLABLE HIEUH-EU-RIEUL
-0xC8EB	0xD759	# HANGUL SYLLABLE HIEUH-EU-RIEULKIYEOK
-0xC8EC	0xD760	# HANGUL SYLLABLE HIEUH-EU-MIEUM
-0xC8ED	0xD761	# HANGUL SYLLABLE HIEUH-EU-PIEUP
-0xC8EE	0xD763	# HANGUL SYLLABLE HIEUH-EU-SIOS
-0xC8EF	0xD765	# HANGUL SYLLABLE HIEUH-EU-IEUNG
-0xC8F0	0xD769	# HANGUL SYLLABLE HIEUH-EU-THIEUTH
-0xC8F1	0xD76C	# HANGUL SYLLABLE HIEUH-YI
-0xC8F2	0xD770	# HANGUL SYLLABLE HIEUH-YI-NIEUN
-0xC8F3	0xD774	# HANGUL SYLLABLE HIEUH-YI-RIEUL
-0xC8F4	0xD77C	# HANGUL SYLLABLE HIEUH-YI-MIEUM
-0xC8F5	0xD77D	# HANGUL SYLLABLE HIEUH-YI-PIEUP
-0xC8F6	0xD781	# HANGUL SYLLABLE HIEUH-YI-IEUNG
-0xC8F7	0xD788	# HANGUL SYLLABLE HIEUH-I
-0xC8F8	0xD789	# HANGUL SYLLABLE HIEUH-I-KIYEOK
-0xC8F9	0xD78C	# HANGUL SYLLABLE HIEUH-I-NIEUN
-0xC8FA	0xD790	# HANGUL SYLLABLE HIEUH-I-RIEUL
-0xC8FB	0xD798	# HANGUL SYLLABLE HIEUH-I-MIEUM
-0xC8FC	0xD799	# HANGUL SYLLABLE HIEUH-I-PIEUP
-0xC8FD	0xD79B	# HANGUL SYLLABLE HIEUH-I-SIOS
-0xC8FE	0xD79D	# HANGUL SYLLABLE HIEUH-I-IEUNG
-0xCAA1	0x4F3D	# <CJK>
-0xCAA2	0x4F73	# <CJK>
-0xCAA3	0x5047	# <CJK>
-0xCAA4	0x50F9	# <CJK>
-0xCAA5	0x52A0	# <CJK>
-0xCAA6	0x53EF	# <CJK>
-0xCAA7	0x5475	# <CJK>
-0xCAA8	0x54E5	# <CJK>
-0xCAA9	0x5609	# <CJK>
-0xCAAA	0x5AC1	# <CJK>
-0xCAAB	0x5BB6	# <CJK>
-0xCAAC	0x6687	# <CJK>
-0xCAAD	0x67B6	# <CJK>
-0xCAAE	0x67B7	# <CJK>
-0xCAAF	0x67EF	# <CJK>
-0xCAB0	0x6B4C	# <CJK>
-0xCAB1	0x73C2	# <CJK>
-0xCAB2	0x75C2	# <CJK>
-0xCAB3	0x7A3C	# <CJK>
-0xCAB4	0x82DB	# <CJK>
-0xCAB5	0x8304	# <CJK>
-0xCAB6	0x8857	# <CJK>
-0xCAB7	0x8888	# <CJK>
-0xCAB8	0x8A36	# <CJK>
-0xCAB9	0x8CC8	# <CJK>
-0xCABA	0x8DCF	# <CJK>
-0xCABB	0x8EFB	# <CJK>
-0xCABC	0x8FE6	# <CJK>
-0xCABD	0x99D5	# <CJK>
-0xCABE	0x523B	# <CJK>
-0xCABF	0x5374	# <CJK>
-0xCAC0	0x5404	# <CJK>
-0xCAC1	0x606A	# <CJK>
-0xCAC2	0x6164	# <CJK>
-0xCAC3	0x6BBC	# <CJK>
-0xCAC4	0x73CF	# <CJK>
-0xCAC5	0x811A	# <CJK>
-0xCAC6	0x89BA	# <CJK>
-0xCAC7	0x89D2	# <CJK>
-0xCAC8	0x95A3	# <CJK>
-0xCAC9	0x4F83	# <CJK>
-0xCACA	0x520A	# <CJK>
-0xCACB	0x58BE	# <CJK>
-0xCACC	0x5978	# <CJK>
-0xCACD	0x59E6	# <CJK>
-0xCACE	0x5E72	# <CJK>
-0xCACF	0x5E79	# <CJK>
-0xCAD0	0x61C7	# <CJK>
-0xCAD1	0x63C0	# <CJK>
-0xCAD2	0x6746	# <CJK>
-0xCAD3	0x67EC	# <CJK>
-0xCAD4	0x687F	# <CJK>
-0xCAD5	0x6F97	# <CJK>
-0xCAD6	0x764E	# <CJK>
-0xCAD7	0x770B	# <CJK>
-0xCAD8	0x78F5	# <CJK>
-0xCAD9	0x7A08	# <CJK>
-0xCADA	0x7AFF	# <CJK>
-0xCADB	0x7C21	# <CJK>
-0xCADC	0x809D	# <CJK>
-0xCADD	0x826E	# <CJK>
-0xCADE	0x8271	# <CJK>
-0xCADF	0x8AEB	# <CJK>
-0xCAE0	0x9593	# <CJK>
-0xCAE1	0x4E6B	# <CJK>
-0xCAE2	0x559D	# <CJK>
-0xCAE3	0x66F7	# <CJK>
-0xCAE4	0x6E34	# <CJK>
-0xCAE5	0x78A3	# <CJK>
-0xCAE6	0x7AED	# <CJK>
-0xCAE7	0x845B	# <CJK>
-0xCAE8	0x8910	# <CJK>
-0xCAE9	0x874E	# <CJK>
-0xCAEA	0x97A8	# <CJK>
-0xCAEB	0x52D8	# <CJK>
-0xCAEC	0x574E	# <CJK>
-0xCAED	0x582A	# <CJK>
-0xCAEE	0x5D4C	# <CJK>
-0xCAEF	0x611F	# <CJK>
-0xCAF0	0x61BE	# <CJK>
-0xCAF1	0x6221	# <CJK>
-0xCAF2	0x6562	# <CJK>
-0xCAF3	0x67D1	# <CJK>
-0xCAF4	0x6A44	# <CJK>
-0xCAF5	0x6E1B	# <CJK>
-0xCAF6	0x7518	# <CJK>
-0xCAF7	0x75B3	# <CJK>
-0xCAF8	0x76E3	# <CJK>
-0xCAF9	0x77B0	# <CJK>
-0xCAFA	0x7D3A	# <CJK>
-0xCAFB	0x90AF	# <CJK>
-0xCAFC	0x9451	# <CJK>
-0xCAFD	0x9452	# <CJK>
-0xCAFE	0x9F95	# <CJK>
-0xCBA1	0x5323	# <CJK>
-0xCBA2	0x5CAC	# <CJK>
-0xCBA3	0x7532	# <CJK>
-0xCBA4	0x80DB	# <CJK>
-0xCBA5	0x9240	# <CJK>
-0xCBA6	0x9598	# <CJK>
-0xCBA7	0x525B	# <CJK>
-0xCBA8	0x5808	# <CJK>
-0xCBA9	0x59DC	# <CJK>
-0xCBAA	0x5CA1	# <CJK>
-0xCBAB	0x5D17	# <CJK>
-0xCBAC	0x5EB7	# <CJK>
-0xCBAD	0x5F3A	# <CJK>
-0xCBAE	0x5F4A	# <CJK>
-0xCBAF	0x6177	# <CJK>
-0xCBB0	0x6C5F	# <CJK>
-0xCBB1	0x757A	# <CJK>
-0xCBB2	0x7586	# <CJK>
-0xCBB3	0x7CE0	# <CJK>
-0xCBB4	0x7D73	# <CJK>
-0xCBB5	0x7DB1	# <CJK>
-0xCBB6	0x7F8C	# <CJK>
-0xCBB7	0x8154	# <CJK>
-0xCBB8	0x8221	# <CJK>
-0xCBB9	0x8591	# <CJK>
-0xCBBA	0x8941	# <CJK>
-0xCBBB	0x8B1B	# <CJK>
-0xCBBC	0x92FC	# <CJK>
-0xCBBD	0x964D	# <CJK>
-0xCBBE	0x9C47	# <CJK>
-0xCBBF	0x4ECB	# <CJK>
-0xCBC0	0x4EF7	# <CJK>
-0xCBC1	0x500B	# <CJK>
-0xCBC2	0x51F1	# <CJK>
-0xCBC3	0x584F	# <CJK>
-0xCBC4	0x6137	# <CJK>
-0xCBC5	0x613E	# <CJK>
-0xCBC6	0x6168	# <CJK>
-0xCBC7	0x6539	# <CJK>
-0xCBC8	0x69EA	# <CJK>
-0xCBC9	0x6F11	# <CJK>
-0xCBCA	0x75A5	# <CJK>
-0xCBCB	0x7686	# <CJK>
-0xCBCC	0x76D6	# <CJK>
-0xCBCD	0x7B87	# <CJK>
-0xCBCE	0x82A5	# <CJK>
-0xCBCF	0x84CB	# <CJK>
-0xCBD0	0xF900	# <CJK>
-0xCBD1	0x93A7	# <CJK>
-0xCBD2	0x958B	# <CJK>
-0xCBD3	0x5580	# <CJK>
-0xCBD4	0x5BA2	# <CJK>
-0xCBD5	0x5751	# <CJK>
-0xCBD6	0xF901	# <CJK>
-0xCBD7	0x7CB3	# <CJK>
-0xCBD8	0x7FB9	# <CJK>
-0xCBD9	0x91B5	# <CJK>
-0xCBDA	0x5028	# <CJK>
-0xCBDB	0x53BB	# <CJK>
-0xCBDC	0x5C45	# <CJK>
-0xCBDD	0x5DE8	# <CJK>
-0xCBDE	0x62D2	# <CJK>
-0xCBDF	0x636E	# <CJK>
-0xCBE0	0x64DA	# <CJK>
-0xCBE1	0x64E7	# <CJK>
-0xCBE2	0x6E20	# <CJK>
-0xCBE3	0x70AC	# <CJK>
-0xCBE4	0x795B	# <CJK>
-0xCBE5	0x8DDD	# <CJK>
-0xCBE6	0x8E1E	# <CJK>
-0xCBE7	0xF902	# <CJK>
-0xCBE8	0x907D	# <CJK>
-0xCBE9	0x9245	# <CJK>
-0xCBEA	0x92F8	# <CJK>
-0xCBEB	0x4E7E	# <CJK>
-0xCBEC	0x4EF6	# <CJK>
-0xCBED	0x5065	# <CJK>
-0xCBEE	0x5DFE	# <CJK>
-0xCBEF	0x5EFA	# <CJK>
-0xCBF0	0x6106	# <CJK>
-0xCBF1	0x6957	# <CJK>
-0xCBF2	0x8171	# <CJK>
-0xCBF3	0x8654	# <CJK>
-0xCBF4	0x8E47	# <CJK>
-0xCBF5	0x9375	# <CJK>
-0xCBF6	0x9A2B	# <CJK>
-0xCBF7	0x4E5E	# <CJK>
-0xCBF8	0x5091	# <CJK>
-0xCBF9	0x6770	# <CJK>
-0xCBFA	0x6840	# <CJK>
-0xCBFB	0x5109	# <CJK>
-0xCBFC	0x528D	# <CJK>
-0xCBFD	0x5292	# <CJK>
-0xCBFE	0x6AA2	# <CJK>
-0xCCA1	0x77BC	# <CJK>
-0xCCA2	0x9210	# <CJK>
-0xCCA3	0x9ED4	# <CJK>
-0xCCA4	0x52AB	# <CJK>
-0xCCA5	0x602F	# <CJK>
-0xCCA6	0x8FF2	# <CJK>
-0xCCA7	0x5048	# <CJK>
-0xCCA8	0x61A9	# <CJK>
-0xCCA9	0x63ED	# <CJK>
-0xCCAA	0x64CA	# <CJK>
-0xCCAB	0x683C	# <CJK>
-0xCCAC	0x6A84	# <CJK>
-0xCCAD	0x6FC0	# <CJK>
-0xCCAE	0x8188	# <CJK>
-0xCCAF	0x89A1	# <CJK>
-0xCCB0	0x9694	# <CJK>
-0xCCB1	0x5805	# <CJK>
-0xCCB2	0x727D	# <CJK>
-0xCCB3	0x72AC	# <CJK>
-0xCCB4	0x7504	# <CJK>
-0xCCB5	0x7D79	# <CJK>
-0xCCB6	0x7E6D	# <CJK>
-0xCCB7	0x80A9	# <CJK>
-0xCCB8	0x898B	# <CJK>
-0xCCB9	0x8B74	# <CJK>
-0xCCBA	0x9063	# <CJK>
-0xCCBB	0x9D51	# <CJK>
-0xCCBC	0x6289	# <CJK>
-0xCCBD	0x6C7A	# <CJK>
-0xCCBE	0x6F54	# <CJK>
-0xCCBF	0x7D50	# <CJK>
-0xCCC0	0x7F3A	# <CJK>
-0xCCC1	0x8A23	# <CJK>
-0xCCC2	0x517C	# <CJK>
-0xCCC3	0x614A	# <CJK>
-0xCCC4	0x7B9D	# <CJK>
-0xCCC5	0x8B19	# <CJK>
-0xCCC6	0x9257	# <CJK>
-0xCCC7	0x938C	# <CJK>
-0xCCC8	0x4EAC	# <CJK>
-0xCCC9	0x4FD3	# <CJK>
-0xCCCA	0x501E	# <CJK>
-0xCCCB	0x50BE	# <CJK>
-0xCCCC	0x5106	# <CJK>
-0xCCCD	0x52C1	# <CJK>
-0xCCCE	0x52CD	# <CJK>
-0xCCCF	0x537F	# <CJK>
-0xCCD0	0x5770	# <CJK>
-0xCCD1	0x5883	# <CJK>
-0xCCD2	0x5E9A	# <CJK>
-0xCCD3	0x5F91	# <CJK>
-0xCCD4	0x6176	# <CJK>
-0xCCD5	0x61AC	# <CJK>
-0xCCD6	0x64CE	# <CJK>
-0xCCD7	0x656C	# <CJK>
-0xCCD8	0x666F	# <CJK>
-0xCCD9	0x66BB	# <CJK>
-0xCCDA	0x66F4	# <CJK>
-0xCCDB	0x6897	# <CJK>
-0xCCDC	0x6D87	# <CJK>
-0xCCDD	0x7085	# <CJK>
-0xCCDE	0x70F1	# <CJK>
-0xCCDF	0x749F	# <CJK>
-0xCCE0	0x74A5	# <CJK>
-0xCCE1	0x74CA	# <CJK>
-0xCCE2	0x75D9	# <CJK>
-0xCCE3	0x786C	# <CJK>
-0xCCE4	0x78EC	# <CJK>
-0xCCE5	0x7ADF	# <CJK>
-0xCCE6	0x7AF6	# <CJK>
-0xCCE7	0x7D45	# <CJK>
-0xCCE8	0x7D93	# <CJK>
-0xCCE9	0x8015	# <CJK>
-0xCCEA	0x803F	# <CJK>
-0xCCEB	0x811B	# <CJK>
-0xCCEC	0x8396	# <CJK>
-0xCCED	0x8B66	# <CJK>
-0xCCEE	0x8F15	# <CJK>
-0xCCEF	0x9015	# <CJK>
-0xCCF0	0x93E1	# <CJK>
-0xCCF1	0x9803	# <CJK>
-0xCCF2	0x9838	# <CJK>
-0xCCF3	0x9A5A	# <CJK>
-0xCCF4	0x9BE8	# <CJK>
-0xCCF5	0x4FC2	# <CJK>
-0xCCF6	0x5553	# <CJK>
-0xCCF7	0x583A	# <CJK>
-0xCCF8	0x5951	# <CJK>
-0xCCF9	0x5B63	# <CJK>
-0xCCFA	0x5C46	# <CJK>
-0xCCFB	0x60B8	# <CJK>
-0xCCFC	0x6212	# <CJK>
-0xCCFD	0x6842	# <CJK>
-0xCCFE	0x68B0	# <CJK>
-0xCDA1	0x68E8	# <CJK>
-0xCDA2	0x6EAA	# <CJK>
-0xCDA3	0x754C	# <CJK>
-0xCDA4	0x7678	# <CJK>
-0xCDA5	0x78CE	# <CJK>
-0xCDA6	0x7A3D	# <CJK>
-0xCDA7	0x7CFB	# <CJK>
-0xCDA8	0x7E6B	# <CJK>
-0xCDA9	0x7E7C	# <CJK>
-0xCDAA	0x8A08	# <CJK>
-0xCDAB	0x8AA1	# <CJK>
-0xCDAC	0x8C3F	# <CJK>
-0xCDAD	0x968E	# <CJK>
-0xCDAE	0x9DC4	# <CJK>
-0xCDAF	0x53E4	# <CJK>
-0xCDB0	0x53E9	# <CJK>
-0xCDB1	0x544A	# <CJK>
-0xCDB2	0x5471	# <CJK>
-0xCDB3	0x56FA	# <CJK>
-0xCDB4	0x59D1	# <CJK>
-0xCDB5	0x5B64	# <CJK>
-0xCDB6	0x5C3B	# <CJK>
-0xCDB7	0x5EAB	# <CJK>
-0xCDB8	0x62F7	# <CJK>
-0xCDB9	0x6537	# <CJK>
-0xCDBA	0x6545	# <CJK>
-0xCDBB	0x6572	# <CJK>
-0xCDBC	0x66A0	# <CJK>
-0xCDBD	0x67AF	# <CJK>
-0xCDBE	0x69C1	# <CJK>
-0xCDBF	0x6CBD	# <CJK>
-0xCDC0	0x75FC	# <CJK>
-0xCDC1	0x7690	# <CJK>
-0xCDC2	0x777E	# <CJK>
-0xCDC3	0x7A3F	# <CJK>
-0xCDC4	0x7F94	# <CJK>
-0xCDC5	0x8003	# <CJK>
-0xCDC6	0x80A1	# <CJK>
-0xCDC7	0x818F	# <CJK>
-0xCDC8	0x82E6	# <CJK>
-0xCDC9	0x82FD	# <CJK>
-0xCDCA	0x83F0	# <CJK>
-0xCDCB	0x85C1	# <CJK>
-0xCDCC	0x8831	# <CJK>
-0xCDCD	0x88B4	# <CJK>
-0xCDCE	0x8AA5	# <CJK>
-0xCDCF	0xF903	# <CJK>
-0xCDD0	0x8F9C	# <CJK>
-0xCDD1	0x932E	# <CJK>
-0xCDD2	0x96C7	# <CJK>
-0xCDD3	0x9867	# <CJK>
-0xCDD4	0x9AD8	# <CJK>
-0xCDD5	0x9F13	# <CJK>
-0xCDD6	0x54ED	# <CJK>
-0xCDD7	0x659B	# <CJK>
-0xCDD8	0x66F2	# <CJK>
-0xCDD9	0x688F	# <CJK>
-0xCDDA	0x7A40	# <CJK>
-0xCDDB	0x8C37	# <CJK>
-0xCDDC	0x9D60	# <CJK>
-0xCDDD	0x56F0	# <CJK>
-0xCDDE	0x5764	# <CJK>
-0xCDDF	0x5D11	# <CJK>
-0xCDE0	0x6606	# <CJK>
-0xCDE1	0x68B1	# <CJK>
-0xCDE2	0x68CD	# <CJK>
-0xCDE3	0x6EFE	# <CJK>
-0xCDE4	0x7428	# <CJK>
-0xCDE5	0x889E	# <CJK>
-0xCDE6	0x9BE4	# <CJK>
-0xCDE7	0x6C68	# <CJK>
-0xCDE8	0xF904	# <CJK>
-0xCDE9	0x9AA8	# <CJK>
-0xCDEA	0x4F9B	# <CJK>
-0xCDEB	0x516C	# <CJK>
-0xCDEC	0x5171	# <CJK>
-0xCDED	0x529F	# <CJK>
-0xCDEE	0x5B54	# <CJK>
-0xCDEF	0x5DE5	# <CJK>
-0xCDF0	0x6050	# <CJK>
-0xCDF1	0x606D	# <CJK>
-0xCDF2	0x62F1	# <CJK>
-0xCDF3	0x63A7	# <CJK>
-0xCDF4	0x653B	# <CJK>
-0xCDF5	0x73D9	# <CJK>
-0xCDF6	0x7A7A	# <CJK>
-0xCDF7	0x86A3	# <CJK>
-0xCDF8	0x8CA2	# <CJK>
-0xCDF9	0x978F	# <CJK>
-0xCDFA	0x4E32	# <CJK>
-0xCDFB	0x5BE1	# <CJK>
-0xCDFC	0x6208	# <CJK>
-0xCDFD	0x679C	# <CJK>
-0xCDFE	0x74DC	# <CJK>
-0xCEA1	0x79D1	# <CJK>
-0xCEA2	0x83D3	# <CJK>
-0xCEA3	0x8A87	# <CJK>
-0xCEA4	0x8AB2	# <CJK>
-0xCEA5	0x8DE8	# <CJK>
-0xCEA6	0x904E	# <CJK>
-0xCEA7	0x934B	# <CJK>
-0xCEA8	0x9846	# <CJK>
-0xCEA9	0x5ED3	# <CJK>
-0xCEAA	0x69E8	# <CJK>
-0xCEAB	0x85FF	# <CJK>
-0xCEAC	0x90ED	# <CJK>
-0xCEAD	0xF905	# <CJK>
-0xCEAE	0x51A0	# <CJK>
-0xCEAF	0x5B98	# <CJK>
-0xCEB0	0x5BEC	# <CJK>
-0xCEB1	0x6163	# <CJK>
-0xCEB2	0x68FA	# <CJK>
-0xCEB3	0x6B3E	# <CJK>
-0xCEB4	0x704C	# <CJK>
-0xCEB5	0x742F	# <CJK>
-0xCEB6	0x74D8	# <CJK>
-0xCEB7	0x7BA1	# <CJK>
-0xCEB8	0x7F50	# <CJK>
-0xCEB9	0x83C5	# <CJK>
-0xCEBA	0x89C0	# <CJK>
-0xCEBB	0x8CAB	# <CJK>
-0xCEBC	0x95DC	# <CJK>
-0xCEBD	0x9928	# <CJK>
-0xCEBE	0x522E	# <CJK>
-0xCEBF	0x605D	# <CJK>
-0xCEC0	0x62EC	# <CJK>
-0xCEC1	0x9002	# <CJK>
-0xCEC2	0x4F8A	# <CJK>
-0xCEC3	0x5149	# <CJK>
-0xCEC4	0x5321	# <CJK>
-0xCEC5	0x58D9	# <CJK>
-0xCEC6	0x5EE3	# <CJK>
-0xCEC7	0x66E0	# <CJK>
-0xCEC8	0x6D38	# <CJK>
-0xCEC9	0x709A	# <CJK>
-0xCECA	0x72C2	# <CJK>
-0xCECB	0x73D6	# <CJK>
-0xCECC	0x7B50	# <CJK>
-0xCECD	0x80F1	# <CJK>
-0xCECE	0x945B	# <CJK>
-0xCECF	0x5366	# <CJK>
-0xCED0	0x639B	# <CJK>
-0xCED1	0x7F6B	# <CJK>
-0xCED2	0x4E56	# <CJK>
-0xCED3	0x5080	# <CJK>
-0xCED4	0x584A	# <CJK>
-0xCED5	0x58DE	# <CJK>
-0xCED6	0x602A	# <CJK>
-0xCED7	0x6127	# <CJK>
-0xCED8	0x62D0	# <CJK>
-0xCED9	0x69D0	# <CJK>
-0xCEDA	0x9B41	# <CJK>
-0xCEDB	0x5B8F	# <CJK>
-0xCEDC	0x7D18	# <CJK>
-0xCEDD	0x80B1	# <CJK>
-0xCEDE	0x8F5F	# <CJK>
-0xCEDF	0x4EA4	# <CJK>
-0xCEE0	0x50D1	# <CJK>
-0xCEE1	0x54AC	# <CJK>
-0xCEE2	0x55AC	# <CJK>
-0xCEE3	0x5B0C	# <CJK>
-0xCEE4	0x5DA0	# <CJK>
-0xCEE5	0x5DE7	# <CJK>
-0xCEE6	0x652A	# <CJK>
-0xCEE7	0x654E	# <CJK>
-0xCEE8	0x6821	# <CJK>
-0xCEE9	0x6A4B	# <CJK>
-0xCEEA	0x72E1	# <CJK>
-0xCEEB	0x768E	# <CJK>
-0xCEEC	0x77EF	# <CJK>
-0xCEED	0x7D5E	# <CJK>
-0xCEEE	0x7FF9	# <CJK>
-0xCEEF	0x81A0	# <CJK>
-0xCEF0	0x854E	# <CJK>
-0xCEF1	0x86DF	# <CJK>
-0xCEF2	0x8F03	# <CJK>
-0xCEF3	0x8F4E	# <CJK>
-0xCEF4	0x90CA	# <CJK>
-0xCEF5	0x9903	# <CJK>
-0xCEF6	0x9A55	# <CJK>
-0xCEF7	0x9BAB	# <CJK>
-0xCEF8	0x4E18	# <CJK>
-0xCEF9	0x4E45	# <CJK>
-0xCEFA	0x4E5D	# <CJK>
-0xCEFB	0x4EC7	# <CJK>
-0xCEFC	0x4FF1	# <CJK>
-0xCEFD	0x5177	# <CJK>
-0xCEFE	0x52FE	# <CJK>
-0xCFA1	0x5340	# <CJK>
-0xCFA2	0x53E3	# <CJK>
-0xCFA3	0x53E5	# <CJK>
-0xCFA4	0x548E	# <CJK>
-0xCFA5	0x5614	# <CJK>
-0xCFA6	0x5775	# <CJK>
-0xCFA7	0x57A2	# <CJK>
-0xCFA8	0x5BC7	# <CJK>
-0xCFA9	0x5D87	# <CJK>
-0xCFAA	0x5ED0	# <CJK>
-0xCFAB	0x61FC	# <CJK>
-0xCFAC	0x62D8	# <CJK>
-0xCFAD	0x6551	# <CJK>
-0xCFAE	0x67B8	# <CJK>
-0xCFAF	0x67E9	# <CJK>
-0xCFB0	0x69CB	# <CJK>
-0xCFB1	0x6B50	# <CJK>
-0xCFB2	0x6BC6	# <CJK>
-0xCFB3	0x6BEC	# <CJK>
-0xCFB4	0x6C42	# <CJK>
-0xCFB5	0x6E9D	# <CJK>
-0xCFB6	0x7078	# <CJK>
-0xCFB7	0x72D7	# <CJK>
-0xCFB8	0x7396	# <CJK>
-0xCFB9	0x7403	# <CJK>
-0xCFBA	0x77BF	# <CJK>
-0xCFBB	0x77E9	# <CJK>
-0xCFBC	0x7A76	# <CJK>
-0xCFBD	0x7D7F	# <CJK>
-0xCFBE	0x8009	# <CJK>
-0xCFBF	0x81FC	# <CJK>
-0xCFC0	0x8205	# <CJK>
-0xCFC1	0x820A	# <CJK>
-0xCFC2	0x82DF	# <CJK>
-0xCFC3	0x8862	# <CJK>
-0xCFC4	0x8B33	# <CJK>
-0xCFC5	0x8CFC	# <CJK>
-0xCFC6	0x8EC0	# <CJK>
-0xCFC7	0x9011	# <CJK>
-0xCFC8	0x90B1	# <CJK>
-0xCFC9	0x9264	# <CJK>
-0xCFCA	0x92B6	# <CJK>
-0xCFCB	0x99D2	# <CJK>
-0xCFCC	0x9A45	# <CJK>
-0xCFCD	0x9CE9	# <CJK>
-0xCFCE	0x9DD7	# <CJK>
-0xCFCF	0x9F9C	# <CJK>
-0xCFD0	0x570B	# <CJK>
-0xCFD1	0x5C40	# <CJK>
-0xCFD2	0x83CA	# <CJK>
-0xCFD3	0x97A0	# <CJK>
-0xCFD4	0x97AB	# <CJK>
-0xCFD5	0x9EB4	# <CJK>
-0xCFD6	0x541B	# <CJK>
-0xCFD7	0x7A98	# <CJK>
-0xCFD8	0x7FA4	# <CJK>
-0xCFD9	0x88D9	# <CJK>
-0xCFDA	0x8ECD	# <CJK>
-0xCFDB	0x90E1	# <CJK>
-0xCFDC	0x5800	# <CJK>
-0xCFDD	0x5C48	# <CJK>
-0xCFDE	0x6398	# <CJK>
-0xCFDF	0x7A9F	# <CJK>
-0xCFE0	0x5BAE	# <CJK>
-0xCFE1	0x5F13	# <CJK>
-0xCFE2	0x7A79	# <CJK>
-0xCFE3	0x7AAE	# <CJK>
-0xCFE4	0x828E	# <CJK>
-0xCFE5	0x8EAC	# <CJK>
-0xCFE6	0x5026	# <CJK>
-0xCFE7	0x5238	# <CJK>
-0xCFE8	0x52F8	# <CJK>
-0xCFE9	0x5377	# <CJK>
-0xCFEA	0x5708	# <CJK>
-0xCFEB	0x62F3	# <CJK>
-0xCFEC	0x6372	# <CJK>
-0xCFED	0x6B0A	# <CJK>
-0xCFEE	0x6DC3	# <CJK>
-0xCFEF	0x7737	# <CJK>
-0xCFF0	0x53A5	# <CJK>
-0xCFF1	0x7357	# <CJK>
-0xCFF2	0x8568	# <CJK>
-0xCFF3	0x8E76	# <CJK>
-0xCFF4	0x95D5	# <CJK>
-0xCFF5	0x673A	# <CJK>
-0xCFF6	0x6AC3	# <CJK>
-0xCFF7	0x6F70	# <CJK>
-0xCFF8	0x8A6D	# <CJK>
-0xCFF9	0x8ECC	# <CJK>
-0xCFFA	0x994B	# <CJK>
-0xCFFB	0xF906	# <CJK>
-0xCFFC	0x6677	# <CJK>
-0xCFFD	0x6B78	# <CJK>
-0xCFFE	0x8CB4	# <CJK>
-0xD0A1	0x9B3C	# <CJK>
-0xD0A2	0xF907	# <CJK>
-0xD0A3	0x53EB	# <CJK>
-0xD0A4	0x572D	# <CJK>
-0xD0A5	0x594E	# <CJK>
-0xD0A6	0x63C6	# <CJK>
-0xD0A7	0x69FB	# <CJK>
-0xD0A8	0x73EA	# <CJK>
-0xD0A9	0x7845	# <CJK>
-0xD0AA	0x7ABA	# <CJK>
-0xD0AB	0x7AC5	# <CJK>
-0xD0AC	0x7CFE	# <CJK>
-0xD0AD	0x8475	# <CJK>
-0xD0AE	0x898F	# <CJK>
-0xD0AF	0x8D73	# <CJK>
-0xD0B0	0x9035	# <CJK>
-0xD0B1	0x95A8	# <CJK>
-0xD0B2	0x52FB	# <CJK>
-0xD0B3	0x5747	# <CJK>
-0xD0B4	0x7547	# <CJK>
-0xD0B5	0x7B60	# <CJK>
-0xD0B6	0x83CC	# <CJK>
-0xD0B7	0x921E	# <CJK>
-0xD0B8	0xF908	# <CJK>
-0xD0B9	0x6A58	# <CJK>
-0xD0BA	0x514B	# <CJK>
-0xD0BB	0x524B	# <CJK>
-0xD0BC	0x5287	# <CJK>
-0xD0BD	0x621F	# <CJK>
-0xD0BE	0x68D8	# <CJK>
-0xD0BF	0x6975	# <CJK>
-0xD0C0	0x9699	# <CJK>
-0xD0C1	0x50C5	# <CJK>
-0xD0C2	0x52A4	# <CJK>
-0xD0C3	0x52E4	# <CJK>
-0xD0C4	0x61C3	# <CJK>
-0xD0C5	0x65A4	# <CJK>
-0xD0C6	0x6839	# <CJK>
-0xD0C7	0x69FF	# <CJK>
-0xD0C8	0x747E	# <CJK>
-0xD0C9	0x7B4B	# <CJK>
-0xD0CA	0x82B9	# <CJK>
-0xD0CB	0x83EB	# <CJK>
-0xD0CC	0x89B2	# <CJK>
-0xD0CD	0x8B39	# <CJK>
-0xD0CE	0x8FD1	# <CJK>
-0xD0CF	0x9949	# <CJK>
-0xD0D0	0xF909	# <CJK>
-0xD0D1	0x4ECA	# <CJK>
-0xD0D2	0x5997	# <CJK>
-0xD0D3	0x64D2	# <CJK>
-0xD0D4	0x6611	# <CJK>
-0xD0D5	0x6A8E	# <CJK>
-0xD0D6	0x7434	# <CJK>
-0xD0D7	0x7981	# <CJK>
-0xD0D8	0x79BD	# <CJK>
-0xD0D9	0x82A9	# <CJK>
-0xD0DA	0x887E	# <CJK>
-0xD0DB	0x887F	# <CJK>
-0xD0DC	0x895F	# <CJK>
-0xD0DD	0xF90A	# <CJK>
-0xD0DE	0x9326	# <CJK>
-0xD0DF	0x4F0B	# <CJK>
-0xD0E0	0x53CA	# <CJK>
-0xD0E1	0x6025	# <CJK>
-0xD0E2	0x6271	# <CJK>
-0xD0E3	0x6C72	# <CJK>
-0xD0E4	0x7D1A	# <CJK>
-0xD0E5	0x7D66	# <CJK>
-0xD0E6	0x4E98	# <CJK>
-0xD0E7	0x5162	# <CJK>
-0xD0E8	0x77DC	# <CJK>
-0xD0E9	0x80AF	# <CJK>
-0xD0EA	0x4F01	# <CJK>
-0xD0EB	0x4F0E	# <CJK>
-0xD0EC	0x5176	# <CJK>
-0xD0ED	0x5180	# <CJK>
-0xD0EE	0x55DC	# <CJK>
-0xD0EF	0x5668	# <CJK>
-0xD0F0	0x573B	# <CJK>
-0xD0F1	0x57FA	# <CJK>
-0xD0F2	0x57FC	# <CJK>
-0xD0F3	0x5914	# <CJK>
-0xD0F4	0x5947	# <CJK>
-0xD0F5	0x5993	# <CJK>
-0xD0F6	0x5BC4	# <CJK>
-0xD0F7	0x5C90	# <CJK>
-0xD0F8	0x5D0E	# <CJK>
-0xD0F9	0x5DF1	# <CJK>
-0xD0FA	0x5E7E	# <CJK>
-0xD0FB	0x5FCC	# <CJK>
-0xD0FC	0x6280	# <CJK>
-0xD0FD	0x65D7	# <CJK>
-0xD0FE	0x65E3	# <CJK>
-0xD1A1	0x671E	# <CJK>
-0xD1A2	0x671F	# <CJK>
-0xD1A3	0x675E	# <CJK>
-0xD1A4	0x68CB	# <CJK>
-0xD1A5	0x68C4	# <CJK>
-0xD1A6	0x6A5F	# <CJK>
-0xD1A7	0x6B3A	# <CJK>
-0xD1A8	0x6C23	# <CJK>
-0xD1A9	0x6C7D	# <CJK>
-0xD1AA	0x6C82	# <CJK>
-0xD1AB	0x6DC7	# <CJK>
-0xD1AC	0x7398	# <CJK>
-0xD1AD	0x7426	# <CJK>
-0xD1AE	0x742A	# <CJK>
-0xD1AF	0x7482	# <CJK>
-0xD1B0	0x74A3	# <CJK>
-0xD1B1	0x7578	# <CJK>
-0xD1B2	0x757F	# <CJK>
-0xD1B3	0x7881	# <CJK>
-0xD1B4	0x78EF	# <CJK>
-0xD1B5	0x7941	# <CJK>
-0xD1B6	0x7947	# <CJK>
-0xD1B7	0x7948	# <CJK>
-0xD1B8	0x797A	# <CJK>
-0xD1B9	0x7B95	# <CJK>
-0xD1BA	0x7D00	# <CJK>
-0xD1BB	0x7DBA	# <CJK>
-0xD1BC	0x7F88	# <CJK>
-0xD1BD	0x8006	# <CJK>
-0xD1BE	0x802D	# <CJK>
-0xD1BF	0x808C	# <CJK>
-0xD1C0	0x8A18	# <CJK>
-0xD1C1	0x8B4F	# <CJK>
-0xD1C2	0x8C48	# <CJK>
-0xD1C3	0x8D77	# <CJK>
-0xD1C4	0x9321	# <CJK>
-0xD1C5	0x9324	# <CJK>
-0xD1C6	0x98E2	# <CJK>
-0xD1C7	0x9951	# <CJK>
-0xD1C8	0x9A0E	# <CJK>
-0xD1C9	0x9A0F	# <CJK>
-0xD1CA	0x9A65	# <CJK>
-0xD1CB	0x9E92	# <CJK>
-0xD1CC	0x7DCA	# <CJK>
-0xD1CD	0x4F76	# <CJK>
-0xD1CE	0x5409	# <CJK>
-0xD1CF	0x62EE	# <CJK>
-0xD1D0	0x6854	# <CJK>
-0xD1D1	0x91D1	# <CJK>
-0xD1D2	0x55AB	# <CJK>
-0xD1D3	0x513A	# <CJK>
-0xD1D4	0xF90B	# <CJK>
-0xD1D5	0xF90C	# <CJK>
-0xD1D6	0x5A1C	# <CJK>
-0xD1D7	0x61E6	# <CJK>
-0xD1D8	0xF90D	# <CJK>
-0xD1D9	0x62CF	# <CJK>
-0xD1DA	0x62FF	# <CJK>
-0xD1DB	0xF90E	# <CJK>
-0xD1DC	0xF90F	# <CJK>
-0xD1DD	0xF910	# <CJK>
-0xD1DE	0xF911	# <CJK>
-0xD1DF	0xF912	# <CJK>
-0xD1E0	0xF913	# <CJK>
-0xD1E1	0x90A3	# <CJK>
-0xD1E2	0xF914	# <CJK>
-0xD1E3	0xF915	# <CJK>
-0xD1E4	0xF916	# <CJK>
-0xD1E5	0xF917	# <CJK>
-0xD1E6	0xF918	# <CJK>
-0xD1E7	0x8AFE	# <CJK>
-0xD1E8	0xF919	# <CJK>
-0xD1E9	0xF91A	# <CJK>
-0xD1EA	0xF91B	# <CJK>
-0xD1EB	0xF91C	# <CJK>
-0xD1EC	0x6696	# <CJK>
-0xD1ED	0xF91D	# <CJK>
-0xD1EE	0x7156	# <CJK>
-0xD1EF	0xF91E	# <CJK>
-0xD1F0	0xF91F	# <CJK>
-0xD1F1	0x96E3	# <CJK>
-0xD1F2	0xF920	# <CJK>
-0xD1F3	0x634F	# <CJK>
-0xD1F4	0x637A	# <CJK>
-0xD1F5	0x5357	# <CJK>
-0xD1F6	0xF921	# <CJK>
-0xD1F7	0x678F	# <CJK>
-0xD1F8	0x6960	# <CJK>
-0xD1F9	0x6E73	# <CJK>
-0xD1FA	0xF922	# <CJK>
-0xD1FB	0x7537	# <CJK>
-0xD1FC	0xF923	# <CJK>
-0xD1FD	0xF924	# <CJK>
-0xD1FE	0xF925	# <CJK>
-0xD2A1	0x7D0D	# <CJK>
-0xD2A2	0xF926	# <CJK>
-0xD2A3	0xF927	# <CJK>
-0xD2A4	0x8872	# <CJK>
-0xD2A5	0x56CA	# <CJK>
-0xD2A6	0x5A18	# <CJK>
-0xD2A7	0xF928	# <CJK>
-0xD2A8	0xF929	# <CJK>
-0xD2A9	0xF92A	# <CJK>
-0xD2AA	0xF92B	# <CJK>
-0xD2AB	0xF92C	# <CJK>
-0xD2AC	0x4E43	# <CJK>
-0xD2AD	0xF92D	# <CJK>
-0xD2AE	0x5167	# <CJK>
-0xD2AF	0x5948	# <CJK>
-0xD2B0	0x67F0	# <CJK>
-0xD2B1	0x8010	# <CJK>
-0xD2B2	0xF92E	# <CJK>
-0xD2B3	0x5973	# <CJK>
-0xD2B4	0x5E74	# <CJK>
-0xD2B5	0x649A	# <CJK>
-0xD2B6	0x79CA	# <CJK>
-0xD2B7	0x5FF5	# <CJK>
-0xD2B8	0x606C	# <CJK>
-0xD2B9	0x62C8	# <CJK>
-0xD2BA	0x637B	# <CJK>
-0xD2BB	0x5BE7	# <CJK>
-0xD2BC	0x5BD7	# <CJK>
-0xD2BD	0x52AA	# <CJK>
-0xD2BE	0xF92F	# <CJK>
-0xD2BF	0x5974	# <CJK>
-0xD2C0	0x5F29	# <CJK>
-0xD2C1	0x6012	# <CJK>
-0xD2C2	0xF930	# <CJK>
-0xD2C3	0xF931	# <CJK>
-0xD2C4	0xF932	# <CJK>
-0xD2C5	0x7459	# <CJK>
-0xD2C6	0xF933	# <CJK>
-0xD2C7	0xF934	# <CJK>
-0xD2C8	0xF935	# <CJK>
-0xD2C9	0xF936	# <CJK>
-0xD2CA	0xF937	# <CJK>
-0xD2CB	0xF938	# <CJK>
-0xD2CC	0x99D1	# <CJK>
-0xD2CD	0xF939	# <CJK>
-0xD2CE	0xF93A	# <CJK>
-0xD2CF	0xF93B	# <CJK>
-0xD2D0	0xF93C	# <CJK>
-0xD2D1	0xF93D	# <CJK>
-0xD2D2	0xF93E	# <CJK>
-0xD2D3	0xF93F	# <CJK>
-0xD2D4	0xF940	# <CJK>
-0xD2D5	0xF941	# <CJK>
-0xD2D6	0xF942	# <CJK>
-0xD2D7	0xF943	# <CJK>
-0xD2D8	0x6FC3	# <CJK>
-0xD2D9	0xF944	# <CJK>
-0xD2DA	0xF945	# <CJK>
-0xD2DB	0x81BF	# <CJK>
-0xD2DC	0x8FB2	# <CJK>
-0xD2DD	0x60F1	# <CJK>
-0xD2DE	0xF946	# <CJK>
-0xD2DF	0xF947	# <CJK>
-0xD2E0	0x8166	# <CJK>
-0xD2E1	0xF948	# <CJK>
-0xD2E2	0xF949	# <CJK>
-0xD2E3	0x5C3F	# <CJK>
-0xD2E4	0xF94A	# <CJK>
-0xD2E5	0xF94B	# <CJK>
-0xD2E6	0xF94C	# <CJK>
-0xD2E7	0xF94D	# <CJK>
-0xD2E8	0xF94E	# <CJK>
-0xD2E9	0xF94F	# <CJK>
-0xD2EA	0xF950	# <CJK>
-0xD2EB	0xF951	# <CJK>
-0xD2EC	0x5AE9	# <CJK>
-0xD2ED	0x8A25	# <CJK>
-0xD2EE	0x677B	# <CJK>
-0xD2EF	0x7D10	# <CJK>
-0xD2F0	0xF952	# <CJK>
-0xD2F1	0xF953	# <CJK>
-0xD2F2	0xF954	# <CJK>
-0xD2F3	0xF955	# <CJK>
-0xD2F4	0xF956	# <CJK>
-0xD2F5	0xF957	# <CJK>
-0xD2F6	0x80FD	# <CJK>
-0xD2F7	0xF958	# <CJK>
-0xD2F8	0xF959	# <CJK>
-0xD2F9	0x5C3C	# <CJK>
-0xD2FA	0x6CE5	# <CJK>
-0xD2FB	0x533F	# <CJK>
-0xD2FC	0x6EBA	# <CJK>
-0xD2FD	0x591A	# <CJK>
-0xD2FE	0x8336	# <CJK>
-0xD3A1	0x4E39	# <CJK>
-0xD3A2	0x4EB6	# <CJK>
-0xD3A3	0x4F46	# <CJK>
-0xD3A4	0x55AE	# <CJK>
-0xD3A5	0x5718	# <CJK>
-0xD3A6	0x58C7	# <CJK>
-0xD3A7	0x5F56	# <CJK>
-0xD3A8	0x65B7	# <CJK>
-0xD3A9	0x65E6	# <CJK>
-0xD3AA	0x6A80	# <CJK>
-0xD3AB	0x6BB5	# <CJK>
-0xD3AC	0x6E4D	# <CJK>
-0xD3AD	0x77ED	# <CJK>
-0xD3AE	0x7AEF	# <CJK>
-0xD3AF	0x7C1E	# <CJK>
-0xD3B0	0x7DDE	# <CJK>
-0xD3B1	0x86CB	# <CJK>
-0xD3B2	0x8892	# <CJK>
-0xD3B3	0x9132	# <CJK>
-0xD3B4	0x935B	# <CJK>
-0xD3B5	0x64BB	# <CJK>
-0xD3B6	0x6FBE	# <CJK>
-0xD3B7	0x737A	# <CJK>
-0xD3B8	0x75B8	# <CJK>
-0xD3B9	0x9054	# <CJK>
-0xD3BA	0x5556	# <CJK>
-0xD3BB	0x574D	# <CJK>
-0xD3BC	0x61BA	# <CJK>
-0xD3BD	0x64D4	# <CJK>
-0xD3BE	0x66C7	# <CJK>
-0xD3BF	0x6DE1	# <CJK>
-0xD3C0	0x6E5B	# <CJK>
-0xD3C1	0x6F6D	# <CJK>
-0xD3C2	0x6FB9	# <CJK>
-0xD3C3	0x75F0	# <CJK>
-0xD3C4	0x8043	# <CJK>
-0xD3C5	0x81BD	# <CJK>
-0xD3C6	0x8541	# <CJK>
-0xD3C7	0x8983	# <CJK>
-0xD3C8	0x8AC7	# <CJK>
-0xD3C9	0x8B5A	# <CJK>
-0xD3CA	0x931F	# <CJK>
-0xD3CB	0x6C93	# <CJK>
-0xD3CC	0x7553	# <CJK>
-0xD3CD	0x7B54	# <CJK>
-0xD3CE	0x8E0F	# <CJK>
-0xD3CF	0x905D	# <CJK>
-0xD3D0	0x5510	# <CJK>
-0xD3D1	0x5802	# <CJK>
-0xD3D2	0x5858	# <CJK>
-0xD3D3	0x5E62	# <CJK>
-0xD3D4	0x6207	# <CJK>
-0xD3D5	0x649E	# <CJK>
-0xD3D6	0x68E0	# <CJK>
-0xD3D7	0x7576	# <CJK>
-0xD3D8	0x7CD6	# <CJK>
-0xD3D9	0x87B3	# <CJK>
-0xD3DA	0x9EE8	# <CJK>
-0xD3DB	0x4EE3	# <CJK>
-0xD3DC	0x5788	# <CJK>
-0xD3DD	0x576E	# <CJK>
-0xD3DE	0x5927	# <CJK>
-0xD3DF	0x5C0D	# <CJK>
-0xD3E0	0x5CB1	# <CJK>
-0xD3E1	0x5E36	# <CJK>
-0xD3E2	0x5F85	# <CJK>
-0xD3E3	0x6234	# <CJK>
-0xD3E4	0x64E1	# <CJK>
-0xD3E5	0x73B3	# <CJK>
-0xD3E6	0x81FA	# <CJK>
-0xD3E7	0x888B	# <CJK>
-0xD3E8	0x8CB8	# <CJK>
-0xD3E9	0x968A	# <CJK>
-0xD3EA	0x9EDB	# <CJK>
-0xD3EB	0x5B85	# <CJK>
-0xD3EC	0x5FB7	# <CJK>
-0xD3ED	0x60B3	# <CJK>
-0xD3EE	0x5012	# <CJK>
-0xD3EF	0x5200	# <CJK>
-0xD3F0	0x5230	# <CJK>
-0xD3F1	0x5716	# <CJK>
-0xD3F2	0x5835	# <CJK>
-0xD3F3	0x5857	# <CJK>
-0xD3F4	0x5C0E	# <CJK>
-0xD3F5	0x5C60	# <CJK>
-0xD3F6	0x5CF6	# <CJK>
-0xD3F7	0x5D8B	# <CJK>
-0xD3F8	0x5EA6	# <CJK>
-0xD3F9	0x5F92	# <CJK>
-0xD3FA	0x60BC	# <CJK>
-0xD3FB	0x6311	# <CJK>
-0xD3FC	0x6389	# <CJK>
-0xD3FD	0x6417	# <CJK>
-0xD3FE	0x6843	# <CJK>
-0xD4A1	0x68F9	# <CJK>
-0xD4A2	0x6AC2	# <CJK>
-0xD4A3	0x6DD8	# <CJK>
-0xD4A4	0x6E21	# <CJK>
-0xD4A5	0x6ED4	# <CJK>
-0xD4A6	0x6FE4	# <CJK>
-0xD4A7	0x71FE	# <CJK>
-0xD4A8	0x76DC	# <CJK>
-0xD4A9	0x7779	# <CJK>
-0xD4AA	0x79B1	# <CJK>
-0xD4AB	0x7A3B	# <CJK>
-0xD4AC	0x8404	# <CJK>
-0xD4AD	0x89A9	# <CJK>
-0xD4AE	0x8CED	# <CJK>
-0xD4AF	0x8DF3	# <CJK>
-0xD4B0	0x8E48	# <CJK>
-0xD4B1	0x9003	# <CJK>
-0xD4B2	0x9014	# <CJK>
-0xD4B3	0x9053	# <CJK>
-0xD4B4	0x90FD	# <CJK>
-0xD4B5	0x934D	# <CJK>
-0xD4B6	0x9676	# <CJK>
-0xD4B7	0x97DC	# <CJK>
-0xD4B8	0x6BD2	# <CJK>
-0xD4B9	0x7006	# <CJK>
-0xD4BA	0x7258	# <CJK>
-0xD4BB	0x72A2	# <CJK>
-0xD4BC	0x7368	# <CJK>
-0xD4BD	0x7763	# <CJK>
-0xD4BE	0x79BF	# <CJK>
-0xD4BF	0x7BE4	# <CJK>
-0xD4C0	0x7E9B	# <CJK>
-0xD4C1	0x8B80	# <CJK>
-0xD4C2	0x58A9	# <CJK>
-0xD4C3	0x60C7	# <CJK>
-0xD4C4	0x6566	# <CJK>
-0xD4C5	0x65FD	# <CJK>
-0xD4C6	0x66BE	# <CJK>
-0xD4C7	0x6C8C	# <CJK>
-0xD4C8	0x711E	# <CJK>
-0xD4C9	0x71C9	# <CJK>
-0xD4CA	0x8C5A	# <CJK>
-0xD4CB	0x9813	# <CJK>
-0xD4CC	0x4E6D	# <CJK>
-0xD4CD	0x7A81	# <CJK>
-0xD4CE	0x4EDD	# <CJK>
-0xD4CF	0x51AC	# <CJK>
-0xD4D0	0x51CD	# <CJK>
-0xD4D1	0x52D5	# <CJK>
-0xD4D2	0x540C	# <CJK>
-0xD4D3	0x61A7	# <CJK>
-0xD4D4	0x6771	# <CJK>
-0xD4D5	0x6850	# <CJK>
-0xD4D6	0x68DF	# <CJK>
-0xD4D7	0x6D1E	# <CJK>
-0xD4D8	0x6F7C	# <CJK>
-0xD4D9	0x75BC	# <CJK>
-0xD4DA	0x77B3	# <CJK>
-0xD4DB	0x7AE5	# <CJK>
-0xD4DC	0x80F4	# <CJK>
-0xD4DD	0x8463	# <CJK>
-0xD4DE	0x9285	# <CJK>
-0xD4DF	0x515C	# <CJK>
-0xD4E0	0x6597	# <CJK>
-0xD4E1	0x675C	# <CJK>
-0xD4E2	0x6793	# <CJK>
-0xD4E3	0x75D8	# <CJK>
-0xD4E4	0x7AC7	# <CJK>
-0xD4E5	0x8373	# <CJK>
-0xD4E6	0xF95A	# <CJK>
-0xD4E7	0x8C46	# <CJK>
-0xD4E8	0x9017	# <CJK>
-0xD4E9	0x982D	# <CJK>
-0xD4EA	0x5C6F	# <CJK>
-0xD4EB	0x81C0	# <CJK>
-0xD4EC	0x829A	# <CJK>
-0xD4ED	0x9041	# <CJK>
-0xD4EE	0x906F	# <CJK>
-0xD4EF	0x920D	# <CJK>
-0xD4F0	0x5F97	# <CJK>
-0xD4F1	0x5D9D	# <CJK>
-0xD4F2	0x6A59	# <CJK>
-0xD4F3	0x71C8	# <CJK>
-0xD4F4	0x767B	# <CJK>
-0xD4F5	0x7B49	# <CJK>
-0xD4F6	0x85E4	# <CJK>
-0xD4F7	0x8B04	# <CJK>
-0xD4F8	0x9127	# <CJK>
-0xD4F9	0x9A30	# <CJK>
-0xD4FA	0x5587	# <CJK>
-0xD4FB	0x61F6	# <CJK>
-0xD4FC	0xF95B	# <CJK>
-0xD4FD	0x7669	# <CJK>
-0xD4FE	0x7F85	# <CJK>
-0xD5A1	0x863F	# <CJK>
-0xD5A2	0x87BA	# <CJK>
-0xD5A3	0x88F8	# <CJK>
-0xD5A4	0x908F	# <CJK>
-0xD5A5	0xF95C	# <CJK>
-0xD5A6	0x6D1B	# <CJK>
-0xD5A7	0x70D9	# <CJK>
-0xD5A8	0x73DE	# <CJK>
-0xD5A9	0x7D61	# <CJK>
-0xD5AA	0x843D	# <CJK>
-0xD5AB	0xF95D	# <CJK>
-0xD5AC	0x916A	# <CJK>
-0xD5AD	0x99F1	# <CJK>
-0xD5AE	0xF95E	# <CJK>
-0xD5AF	0x4E82	# <CJK>
-0xD5B0	0x5375	# <CJK>
-0xD5B1	0x6B04	# <CJK>
-0xD5B2	0x6B12	# <CJK>
-0xD5B3	0x703E	# <CJK>
-0xD5B4	0x721B	# <CJK>
-0xD5B5	0x862D	# <CJK>
-0xD5B6	0x9E1E	# <CJK>
-0xD5B7	0x524C	# <CJK>
-0xD5B8	0x8FA3	# <CJK>
-0xD5B9	0x5D50	# <CJK>
-0xD5BA	0x64E5	# <CJK>
-0xD5BB	0x652C	# <CJK>
-0xD5BC	0x6B16	# <CJK>
-0xD5BD	0x6FEB	# <CJK>
-0xD5BE	0x7C43	# <CJK>
-0xD5BF	0x7E9C	# <CJK>
-0xD5C0	0x85CD	# <CJK>
-0xD5C1	0x8964	# <CJK>
-0xD5C2	0x89BD	# <CJK>
-0xD5C3	0x62C9	# <CJK>
-0xD5C4	0x81D8	# <CJK>
-0xD5C5	0x881F	# <CJK>
-0xD5C6	0x5ECA	# <CJK>
-0xD5C7	0x6717	# <CJK>
-0xD5C8	0x6D6A	# <CJK>
-0xD5C9	0x72FC	# <CJK>
-0xD5CA	0x7405	# <CJK>
-0xD5CB	0x746F	# <CJK>
-0xD5CC	0x8782	# <CJK>
-0xD5CD	0x90DE	# <CJK>
-0xD5CE	0x4F86	# <CJK>
-0xD5CF	0x5D0D	# <CJK>
-0xD5D0	0x5FA0	# <CJK>
-0xD5D1	0x840A	# <CJK>
-0xD5D2	0x51B7	# <CJK>
-0xD5D3	0x63A0	# <CJK>
-0xD5D4	0x7565	# <CJK>
-0xD5D5	0x4EAE	# <CJK>
-0xD5D6	0x5006	# <CJK>
-0xD5D7	0x5169	# <CJK>
-0xD5D8	0x51C9	# <CJK>
-0xD5D9	0x6881	# <CJK>
-0xD5DA	0x6A11	# <CJK>
-0xD5DB	0x7CAE	# <CJK>
-0xD5DC	0x7CB1	# <CJK>
-0xD5DD	0x7CE7	# <CJK>
-0xD5DE	0x826F	# <CJK>
-0xD5DF	0x8AD2	# <CJK>
-0xD5E0	0x8F1B	# <CJK>
-0xD5E1	0x91CF	# <CJK>
-0xD5E2	0x4FB6	# <CJK>
-0xD5E3	0x5137	# <CJK>
-0xD5E4	0x52F5	# <CJK>
-0xD5E5	0x5442	# <CJK>
-0xD5E6	0x5EEC	# <CJK>
-0xD5E7	0x616E	# <CJK>
-0xD5E8	0x623E	# <CJK>
-0xD5E9	0x65C5	# <CJK>
-0xD5EA	0x6ADA	# <CJK>
-0xD5EB	0x6FFE	# <CJK>
-0xD5EC	0x792A	# <CJK>
-0xD5ED	0x85DC	# <CJK>
-0xD5EE	0x8823	# <CJK>
-0xD5EF	0x95AD	# <CJK>
-0xD5F0	0x9A62	# <CJK>
-0xD5F1	0x9A6A	# <CJK>
-0xD5F2	0x9E97	# <CJK>
-0xD5F3	0x9ECE	# <CJK>
-0xD5F4	0x529B	# <CJK>
-0xD5F5	0x66C6	# <CJK>
-0xD5F6	0x6B77	# <CJK>
-0xD5F7	0x701D	# <CJK>
-0xD5F8	0x792B	# <CJK>
-0xD5F9	0x8F62	# <CJK>
-0xD5FA	0x9742	# <CJK>
-0xD5FB	0x6190	# <CJK>
-0xD5FC	0x6200	# <CJK>
-0xD5FD	0x6523	# <CJK>
-0xD5FE	0x6F23	# <CJK>
-0xD6A1	0x7149	# <CJK>
-0xD6A2	0x7489	# <CJK>
-0xD6A3	0x7DF4	# <CJK>
-0xD6A4	0x806F	# <CJK>
-0xD6A5	0x84EE	# <CJK>
-0xD6A6	0x8F26	# <CJK>
-0xD6A7	0x9023	# <CJK>
-0xD6A8	0x934A	# <CJK>
-0xD6A9	0x51BD	# <CJK>
-0xD6AA	0x5217	# <CJK>
-0xD6AB	0x52A3	# <CJK>
-0xD6AC	0x6D0C	# <CJK>
-0xD6AD	0x70C8	# <CJK>
-0xD6AE	0x88C2	# <CJK>
-0xD6AF	0x5EC9	# <CJK>
-0xD6B0	0x6582	# <CJK>
-0xD6B1	0x6BAE	# <CJK>
-0xD6B2	0x6FC2	# <CJK>
-0xD6B3	0x7C3E	# <CJK>
-0xD6B4	0x7375	# <CJK>
-0xD6B5	0x4EE4	# <CJK>
-0xD6B6	0x4F36	# <CJK>
-0xD6B7	0x56F9	# <CJK>
-0xD6B8	0xF95F	# <CJK>
-0xD6B9	0x5CBA	# <CJK>
-0xD6BA	0x5DBA	# <CJK>
-0xD6BB	0x601C	# <CJK>
-0xD6BC	0x73B2	# <CJK>
-0xD6BD	0x7B2D	# <CJK>
-0xD6BE	0x7F9A	# <CJK>
-0xD6BF	0x7FCE	# <CJK>
-0xD6C0	0x8046	# <CJK>
-0xD6C1	0x901E	# <CJK>
-0xD6C2	0x9234	# <CJK>
-0xD6C3	0x96F6	# <CJK>
-0xD6C4	0x9748	# <CJK>
-0xD6C5	0x9818	# <CJK>
-0xD6C6	0x9F61	# <CJK>
-0xD6C7	0x4F8B	# <CJK>
-0xD6C8	0x6FA7	# <CJK>
-0xD6C9	0x79AE	# <CJK>
-0xD6CA	0x91B4	# <CJK>
-0xD6CB	0x96B7	# <CJK>
-0xD6CC	0x52DE	# <CJK>
-0xD6CD	0xF960	# <CJK>
-0xD6CE	0x6488	# <CJK>
-0xD6CF	0x64C4	# <CJK>
-0xD6D0	0x6AD3	# <CJK>
-0xD6D1	0x6F5E	# <CJK>
-0xD6D2	0x7018	# <CJK>
-0xD6D3	0x7210	# <CJK>
-0xD6D4	0x76E7	# <CJK>
-0xD6D5	0x8001	# <CJK>
-0xD6D6	0x8606	# <CJK>
-0xD6D7	0x865C	# <CJK>
-0xD6D8	0x8DEF	# <CJK>
-0xD6D9	0x8F05	# <CJK>
-0xD6DA	0x9732	# <CJK>
-0xD6DB	0x9B6F	# <CJK>
-0xD6DC	0x9DFA	# <CJK>
-0xD6DD	0x9E75	# <CJK>
-0xD6DE	0x788C	# <CJK>
-0xD6DF	0x797F	# <CJK>
-0xD6E0	0x7DA0	# <CJK>
-0xD6E1	0x83C9	# <CJK>
-0xD6E2	0x9304	# <CJK>
-0xD6E3	0x9E7F	# <CJK>
-0xD6E4	0x9E93	# <CJK>
-0xD6E5	0x8AD6	# <CJK>
-0xD6E6	0x58DF	# <CJK>
-0xD6E7	0x5F04	# <CJK>
-0xD6E8	0x6727	# <CJK>
-0xD6E9	0x7027	# <CJK>
-0xD6EA	0x74CF	# <CJK>
-0xD6EB	0x7C60	# <CJK>
-0xD6EC	0x807E	# <CJK>
-0xD6ED	0x5121	# <CJK>
-0xD6EE	0x7028	# <CJK>
-0xD6EF	0x7262	# <CJK>
-0xD6F0	0x78CA	# <CJK>
-0xD6F1	0x8CC2	# <CJK>
-0xD6F2	0x8CDA	# <CJK>
-0xD6F3	0x8CF4	# <CJK>
-0xD6F4	0x96F7	# <CJK>
-0xD6F5	0x4E86	# <CJK>
-0xD6F6	0x50DA	# <CJK>
-0xD6F7	0x5BEE	# <CJK>
-0xD6F8	0x5ED6	# <CJK>
-0xD6F9	0x6599	# <CJK>
-0xD6FA	0x71CE	# <CJK>
-0xD6FB	0x7642	# <CJK>
-0xD6FC	0x77AD	# <CJK>
-0xD6FD	0x804A	# <CJK>
-0xD6FE	0x84FC	# <CJK>
-0xD7A1	0x907C	# <CJK>
-0xD7A2	0x9B27	# <CJK>
-0xD7A3	0x9F8D	# <CJK>
-0xD7A4	0x58D8	# <CJK>
-0xD7A5	0x5A41	# <CJK>
-0xD7A6	0x5C62	# <CJK>
-0xD7A7	0x6A13	# <CJK>
-0xD7A8	0x6DDA	# <CJK>
-0xD7A9	0x6F0F	# <CJK>
-0xD7AA	0x763B	# <CJK>
-0xD7AB	0x7D2F	# <CJK>
-0xD7AC	0x7E37	# <CJK>
-0xD7AD	0x851E	# <CJK>
-0xD7AE	0x8938	# <CJK>
-0xD7AF	0x93E4	# <CJK>
-0xD7B0	0x964B	# <CJK>
-0xD7B1	0x5289	# <CJK>
-0xD7B2	0x65D2	# <CJK>
-0xD7B3	0x67F3	# <CJK>
-0xD7B4	0x69B4	# <CJK>
-0xD7B5	0x6D41	# <CJK>
-0xD7B6	0x6E9C	# <CJK>
-0xD7B7	0x700F	# <CJK>
-0xD7B8	0x7409	# <CJK>
-0xD7B9	0x7460	# <CJK>
-0xD7BA	0x7559	# <CJK>
-0xD7BB	0x7624	# <CJK>
-0xD7BC	0x786B	# <CJK>
-0xD7BD	0x8B2C	# <CJK>
-0xD7BE	0x985E	# <CJK>
-0xD7BF	0x516D	# <CJK>
-0xD7C0	0x622E	# <CJK>
-0xD7C1	0x9678	# <CJK>
-0xD7C2	0x4F96	# <CJK>
-0xD7C3	0x502B	# <CJK>
-0xD7C4	0x5D19	# <CJK>
-0xD7C5	0x6DEA	# <CJK>
-0xD7C6	0x7DB8	# <CJK>
-0xD7C7	0x8F2A	# <CJK>
-0xD7C8	0x5F8B	# <CJK>
-0xD7C9	0x6144	# <CJK>
-0xD7CA	0x6817	# <CJK>
-0xD7CB	0xF961	# <CJK>
-0xD7CC	0x9686	# <CJK>
-0xD7CD	0x52D2	# <CJK>
-0xD7CE	0x808B	# <CJK>
-0xD7CF	0x51DC	# <CJK>
-0xD7D0	0x51CC	# <CJK>
-0xD7D1	0x695E	# <CJK>
-0xD7D2	0x7A1C	# <CJK>
-0xD7D3	0x7DBE	# <CJK>
-0xD7D4	0x83F1	# <CJK>
-0xD7D5	0x9675	# <CJK>
-0xD7D6	0x4FDA	# <CJK>
-0xD7D7	0x5229	# <CJK>
-0xD7D8	0x5398	# <CJK>
-0xD7D9	0x540F	# <CJK>
-0xD7DA	0x550E	# <CJK>
-0xD7DB	0x5C65	# <CJK>
-0xD7DC	0x60A7	# <CJK>
-0xD7DD	0x674E	# <CJK>
-0xD7DE	0x68A8	# <CJK>
-0xD7DF	0x6D6C	# <CJK>
-0xD7E0	0x7281	# <CJK>
-0xD7E1	0x72F8	# <CJK>
-0xD7E2	0x7406	# <CJK>
-0xD7E3	0x7483	# <CJK>
-0xD7E4	0xF962	# <CJK>
-0xD7E5	0x75E2	# <CJK>
-0xD7E6	0x7C6C	# <CJK>
-0xD7E7	0x7F79	# <CJK>
-0xD7E8	0x7FB8	# <CJK>
-0xD7E9	0x8389	# <CJK>
-0xD7EA	0x88CF	# <CJK>
-0xD7EB	0x88E1	# <CJK>
-0xD7EC	0x91CC	# <CJK>
-0xD7ED	0x91D0	# <CJK>
-0xD7EE	0x96E2	# <CJK>
-0xD7EF	0x9BC9	# <CJK>
-0xD7F0	0x541D	# <CJK>
-0xD7F1	0x6F7E	# <CJK>
-0xD7F2	0x71D0	# <CJK>
-0xD7F3	0x7498	# <CJK>
-0xD7F4	0x85FA	# <CJK>
-0xD7F5	0x8EAA	# <CJK>
-0xD7F6	0x96A3	# <CJK>
-0xD7F7	0x9C57	# <CJK>
-0xD7F8	0x9E9F	# <CJK>
-0xD7F9	0x6797	# <CJK>
-0xD7FA	0x6DCB	# <CJK>
-0xD7FB	0x7433	# <CJK>
-0xD7FC	0x81E8	# <CJK>
-0xD7FD	0x9716	# <CJK>
-0xD7FE	0x782C	# <CJK>
-0xD8A1	0x7ACB	# <CJK>
-0xD8A2	0x7B20	# <CJK>
-0xD8A3	0x7C92	# <CJK>
-0xD8A4	0x6469	# <CJK>
-0xD8A5	0x746A	# <CJK>
-0xD8A6	0x75F2	# <CJK>
-0xD8A7	0x78BC	# <CJK>
-0xD8A8	0x78E8	# <CJK>
-0xD8A9	0x99AC	# <CJK>
-0xD8AA	0x9B54	# <CJK>
-0xD8AB	0x9EBB	# <CJK>
-0xD8AC	0x5BDE	# <CJK>
-0xD8AD	0x5E55	# <CJK>
-0xD8AE	0x6F20	# <CJK>
-0xD8AF	0x819C	# <CJK>
-0xD8B0	0x83AB	# <CJK>
-0xD8B1	0x9088	# <CJK>
-0xD8B2	0x4E07	# <CJK>
-0xD8B3	0x534D	# <CJK>
-0xD8B4	0x5A29	# <CJK>
-0xD8B5	0x5DD2	# <CJK>
-0xD8B6	0x5F4E	# <CJK>
-0xD8B7	0x6162	# <CJK>
-0xD8B8	0x633D	# <CJK>
-0xD8B9	0x6669	# <CJK>
-0xD8BA	0x66FC	# <CJK>
-0xD8BB	0x6EFF	# <CJK>
-0xD8BC	0x6F2B	# <CJK>
-0xD8BD	0x7063	# <CJK>
-0xD8BE	0x779E	# <CJK>
-0xD8BF	0x842C	# <CJK>
-0xD8C0	0x8513	# <CJK>
-0xD8C1	0x883B	# <CJK>
-0xD8C2	0x8F13	# <CJK>
-0xD8C3	0x9945	# <CJK>
-0xD8C4	0x9C3B	# <CJK>
-0xD8C5	0x551C	# <CJK>
-0xD8C6	0x62B9	# <CJK>
-0xD8C7	0x672B	# <CJK>
-0xD8C8	0x6CAB	# <CJK>
-0xD8C9	0x8309	# <CJK>
-0xD8CA	0x896A	# <CJK>
-0xD8CB	0x977A	# <CJK>
-0xD8CC	0x4EA1	# <CJK>
-0xD8CD	0x5984	# <CJK>
-0xD8CE	0x5FD8	# <CJK>
-0xD8CF	0x5FD9	# <CJK>
-0xD8D0	0x671B	# <CJK>
-0xD8D1	0x7DB2	# <CJK>
-0xD8D2	0x7F54	# <CJK>
-0xD8D3	0x8292	# <CJK>
-0xD8D4	0x832B	# <CJK>
-0xD8D5	0x83BD	# <CJK>
-0xD8D6	0x8F1E	# <CJK>
-0xD8D7	0x9099	# <CJK>
-0xD8D8	0x57CB	# <CJK>
-0xD8D9	0x59B9	# <CJK>
-0xD8DA	0x5A92	# <CJK>
-0xD8DB	0x5BD0	# <CJK>
-0xD8DC	0x6627	# <CJK>
-0xD8DD	0x679A	# <CJK>
-0xD8DE	0x6885	# <CJK>
-0xD8DF	0x6BCF	# <CJK>
-0xD8E0	0x7164	# <CJK>
-0xD8E1	0x7F75	# <CJK>
-0xD8E2	0x8CB7	# <CJK>
-0xD8E3	0x8CE3	# <CJK>
-0xD8E4	0x9081	# <CJK>
-0xD8E5	0x9B45	# <CJK>
-0xD8E6	0x8108	# <CJK>
-0xD8E7	0x8C8A	# <CJK>
-0xD8E8	0x964C	# <CJK>
-0xD8E9	0x9A40	# <CJK>
-0xD8EA	0x9EA5	# <CJK>
-0xD8EB	0x5B5F	# <CJK>
-0xD8EC	0x6C13	# <CJK>
-0xD8ED	0x731B	# <CJK>
-0xD8EE	0x76F2	# <CJK>
-0xD8EF	0x76DF	# <CJK>
-0xD8F0	0x840C	# <CJK>
-0xD8F1	0x51AA	# <CJK>
-0xD8F2	0x8993	# <CJK>
-0xD8F3	0x514D	# <CJK>
-0xD8F4	0x5195	# <CJK>
-0xD8F5	0x52C9	# <CJK>
-0xD8F6	0x68C9	# <CJK>
-0xD8F7	0x6C94	# <CJK>
-0xD8F8	0x7704	# <CJK>
-0xD8F9	0x7720	# <CJK>
-0xD8FA	0x7DBF	# <CJK>
-0xD8FB	0x7DEC	# <CJK>
-0xD8FC	0x9762	# <CJK>
-0xD8FD	0x9EB5	# <CJK>
-0xD8FE	0x6EC5	# <CJK>
-0xD9A1	0x8511	# <CJK>
-0xD9A2	0x51A5	# <CJK>
-0xD9A3	0x540D	# <CJK>
-0xD9A4	0x547D	# <CJK>
-0xD9A5	0x660E	# <CJK>
-0xD9A6	0x669D	# <CJK>
-0xD9A7	0x6927	# <CJK>
-0xD9A8	0x6E9F	# <CJK>
-0xD9A9	0x76BF	# <CJK>
-0xD9AA	0x7791	# <CJK>
-0xD9AB	0x8317	# <CJK>
-0xD9AC	0x84C2	# <CJK>
-0xD9AD	0x879F	# <CJK>
-0xD9AE	0x9169	# <CJK>
-0xD9AF	0x9298	# <CJK>
-0xD9B0	0x9CF4	# <CJK>
-0xD9B1	0x8882	# <CJK>
-0xD9B2	0x4FAE	# <CJK>
-0xD9B3	0x5192	# <CJK>
-0xD9B4	0x52DF	# <CJK>
-0xD9B5	0x59C6	# <CJK>
-0xD9B6	0x5E3D	# <CJK>
-0xD9B7	0x6155	# <CJK>
-0xD9B8	0x6478	# <CJK>
-0xD9B9	0x6479	# <CJK>
-0xD9BA	0x66AE	# <CJK>
-0xD9BB	0x67D0	# <CJK>
-0xD9BC	0x6A21	# <CJK>
-0xD9BD	0x6BCD	# <CJK>
-0xD9BE	0x6BDB	# <CJK>
-0xD9BF	0x725F	# <CJK>
-0xD9C0	0x7261	# <CJK>
-0xD9C1	0x7441	# <CJK>
-0xD9C2	0x7738	# <CJK>
-0xD9C3	0x77DB	# <CJK>
-0xD9C4	0x8017	# <CJK>
-0xD9C5	0x82BC	# <CJK>
-0xD9C6	0x8305	# <CJK>
-0xD9C7	0x8B00	# <CJK>
-0xD9C8	0x8B28	# <CJK>
-0xD9C9	0x8C8C	# <CJK>
-0xD9CA	0x6728	# <CJK>
-0xD9CB	0x6C90	# <CJK>
-0xD9CC	0x7267	# <CJK>
-0xD9CD	0x76EE	# <CJK>
-0xD9CE	0x7766	# <CJK>
-0xD9CF	0x7A46	# <CJK>
-0xD9D0	0x9DA9	# <CJK>
-0xD9D1	0x6B7F	# <CJK>
-0xD9D2	0x6C92	# <CJK>
-0xD9D3	0x5922	# <CJK>
-0xD9D4	0x6726	# <CJK>
-0xD9D5	0x8499	# <CJK>
-0xD9D6	0x536F	# <CJK>
-0xD9D7	0x5893	# <CJK>
-0xD9D8	0x5999	# <CJK>
-0xD9D9	0x5EDF	# <CJK>
-0xD9DA	0x63CF	# <CJK>
-0xD9DB	0x6634	# <CJK>
-0xD9DC	0x6773	# <CJK>
-0xD9DD	0x6E3A	# <CJK>
-0xD9DE	0x732B	# <CJK>
-0xD9DF	0x7AD7	# <CJK>
-0xD9E0	0x82D7	# <CJK>
-0xD9E1	0x9328	# <CJK>
-0xD9E2	0x52D9	# <CJK>
-0xD9E3	0x5DEB	# <CJK>
-0xD9E4	0x61AE	# <CJK>
-0xD9E5	0x61CB	# <CJK>
-0xD9E6	0x620A	# <CJK>
-0xD9E7	0x62C7	# <CJK>
-0xD9E8	0x64AB	# <CJK>
-0xD9E9	0x65E0	# <CJK>
-0xD9EA	0x6959	# <CJK>
-0xD9EB	0x6B66	# <CJK>
-0xD9EC	0x6BCB	# <CJK>
-0xD9ED	0x7121	# <CJK>
-0xD9EE	0x73F7	# <CJK>
-0xD9EF	0x755D	# <CJK>
-0xD9F0	0x7E46	# <CJK>
-0xD9F1	0x821E	# <CJK>
-0xD9F2	0x8302	# <CJK>
-0xD9F3	0x856A	# <CJK>
-0xD9F4	0x8AA3	# <CJK>
-0xD9F5	0x8CBF	# <CJK>
-0xD9F6	0x9727	# <CJK>
-0xD9F7	0x9D61	# <CJK>
-0xD9F8	0x58A8	# <CJK>
-0xD9F9	0x9ED8	# <CJK>
-0xD9FA	0x5011	# <CJK>
-0xD9FB	0x520E	# <CJK>
-0xD9FC	0x543B	# <CJK>
-0xD9FD	0x554F	# <CJK>
-0xD9FE	0x6587	# <CJK>
-0xDAA1	0x6C76	# <CJK>
-0xDAA2	0x7D0A	# <CJK>
-0xDAA3	0x7D0B	# <CJK>
-0xDAA4	0x805E	# <CJK>
-0xDAA5	0x868A	# <CJK>
-0xDAA6	0x9580	# <CJK>
-0xDAA7	0x96EF	# <CJK>
-0xDAA8	0x52FF	# <CJK>
-0xDAA9	0x6C95	# <CJK>
-0xDAAA	0x7269	# <CJK>
-0xDAAB	0x5473	# <CJK>
-0xDAAC	0x5A9A	# <CJK>
-0xDAAD	0x5C3E	# <CJK>
-0xDAAE	0x5D4B	# <CJK>
-0xDAAF	0x5F4C	# <CJK>
-0xDAB0	0x5FAE	# <CJK>
-0xDAB1	0x672A	# <CJK>
-0xDAB2	0x68B6	# <CJK>
-0xDAB3	0x6963	# <CJK>
-0xDAB4	0x6E3C	# <CJK>
-0xDAB5	0x6E44	# <CJK>
-0xDAB6	0x7709	# <CJK>
-0xDAB7	0x7C73	# <CJK>
-0xDAB8	0x7F8E	# <CJK>
-0xDAB9	0x8587	# <CJK>
-0xDABA	0x8B0E	# <CJK>
-0xDABB	0x8FF7	# <CJK>
-0xDABC	0x9761	# <CJK>
-0xDABD	0x9EF4	# <CJK>
-0xDABE	0x5CB7	# <CJK>
-0xDABF	0x60B6	# <CJK>
-0xDAC0	0x610D	# <CJK>
-0xDAC1	0x61AB	# <CJK>
-0xDAC2	0x654F	# <CJK>
-0xDAC3	0x65FB	# <CJK>
-0xDAC4	0x65FC	# <CJK>
-0xDAC5	0x6C11	# <CJK>
-0xDAC6	0x6CEF	# <CJK>
-0xDAC7	0x739F	# <CJK>
-0xDAC8	0x73C9	# <CJK>
-0xDAC9	0x7DE1	# <CJK>
-0xDACA	0x9594	# <CJK>
-0xDACB	0x5BC6	# <CJK>
-0xDACC	0x871C	# <CJK>
-0xDACD	0x8B10	# <CJK>
-0xDACE	0x525D	# <CJK>
-0xDACF	0x535A	# <CJK>
-0xDAD0	0x62CD	# <CJK>
-0xDAD1	0x640F	# <CJK>
-0xDAD2	0x64B2	# <CJK>
-0xDAD3	0x6734	# <CJK>
-0xDAD4	0x6A38	# <CJK>
-0xDAD5	0x6CCA	# <CJK>
-0xDAD6	0x73C0	# <CJK>
-0xDAD7	0x749E	# <CJK>
-0xDAD8	0x7B94	# <CJK>
-0xDAD9	0x7C95	# <CJK>
-0xDADA	0x7E1B	# <CJK>
-0xDADB	0x818A	# <CJK>
-0xDADC	0x8236	# <CJK>
-0xDADD	0x8584	# <CJK>
-0xDADE	0x8FEB	# <CJK>
-0xDADF	0x96F9	# <CJK>
-0xDAE0	0x99C1	# <CJK>
-0xDAE1	0x4F34	# <CJK>
-0xDAE2	0x534A	# <CJK>
-0xDAE3	0x53CD	# <CJK>
-0xDAE4	0x53DB	# <CJK>
-0xDAE5	0x62CC	# <CJK>
-0xDAE6	0x642C	# <CJK>
-0xDAE7	0x6500	# <CJK>
-0xDAE8	0x6591	# <CJK>
-0xDAE9	0x69C3	# <CJK>
-0xDAEA	0x6CEE	# <CJK>
-0xDAEB	0x6F58	# <CJK>
-0xDAEC	0x73ED	# <CJK>
-0xDAED	0x7554	# <CJK>
-0xDAEE	0x7622	# <CJK>
-0xDAEF	0x76E4	# <CJK>
-0xDAF0	0x76FC	# <CJK>
-0xDAF1	0x78D0	# <CJK>
-0xDAF2	0x78FB	# <CJK>
-0xDAF3	0x792C	# <CJK>
-0xDAF4	0x7D46	# <CJK>
-0xDAF5	0x822C	# <CJK>
-0xDAF6	0x87E0	# <CJK>
-0xDAF7	0x8FD4	# <CJK>
-0xDAF8	0x9812	# <CJK>
-0xDAF9	0x98EF	# <CJK>
-0xDAFA	0x52C3	# <CJK>
-0xDAFB	0x62D4	# <CJK>
-0xDAFC	0x64A5	# <CJK>
-0xDAFD	0x6E24	# <CJK>
-0xDAFE	0x6F51	# <CJK>
-0xDBA1	0x767C	# <CJK>
-0xDBA2	0x8DCB	# <CJK>
-0xDBA3	0x91B1	# <CJK>
-0xDBA4	0x9262	# <CJK>
-0xDBA5	0x9AEE	# <CJK>
-0xDBA6	0x9B43	# <CJK>
-0xDBA7	0x5023	# <CJK>
-0xDBA8	0x508D	# <CJK>
-0xDBA9	0x574A	# <CJK>
-0xDBAA	0x59A8	# <CJK>
-0xDBAB	0x5C28	# <CJK>
-0xDBAC	0x5E47	# <CJK>
-0xDBAD	0x5F77	# <CJK>
-0xDBAE	0x623F	# <CJK>
-0xDBAF	0x653E	# <CJK>
-0xDBB0	0x65B9	# <CJK>
-0xDBB1	0x65C1	# <CJK>
-0xDBB2	0x6609	# <CJK>
-0xDBB3	0x678B	# <CJK>
-0xDBB4	0x699C	# <CJK>
-0xDBB5	0x6EC2	# <CJK>
-0xDBB6	0x78C5	# <CJK>
-0xDBB7	0x7D21	# <CJK>
-0xDBB8	0x80AA	# <CJK>
-0xDBB9	0x8180	# <CJK>
-0xDBBA	0x822B	# <CJK>
-0xDBBB	0x82B3	# <CJK>
-0xDBBC	0x84A1	# <CJK>
-0xDBBD	0x868C	# <CJK>
-0xDBBE	0x8A2A	# <CJK>
-0xDBBF	0x8B17	# <CJK>
-0xDBC0	0x90A6	# <CJK>
-0xDBC1	0x9632	# <CJK>
-0xDBC2	0x9F90	# <CJK>
-0xDBC3	0x500D	# <CJK>
-0xDBC4	0x4FF3	# <CJK>
-0xDBC5	0xF963	# <CJK>
-0xDBC6	0x57F9	# <CJK>
-0xDBC7	0x5F98	# <CJK>
-0xDBC8	0x62DC	# <CJK>
-0xDBC9	0x6392	# <CJK>
-0xDBCA	0x676F	# <CJK>
-0xDBCB	0x6E43	# <CJK>
-0xDBCC	0x7119	# <CJK>
-0xDBCD	0x76C3	# <CJK>
-0xDBCE	0x80CC	# <CJK>
-0xDBCF	0x80DA	# <CJK>
-0xDBD0	0x88F4	# <CJK>
-0xDBD1	0x88F5	# <CJK>
-0xDBD2	0x8919	# <CJK>
-0xDBD3	0x8CE0	# <CJK>
-0xDBD4	0x8F29	# <CJK>
-0xDBD5	0x914D	# <CJK>
-0xDBD6	0x966A	# <CJK>
-0xDBD7	0x4F2F	# <CJK>
-0xDBD8	0x4F70	# <CJK>
-0xDBD9	0x5E1B	# <CJK>
-0xDBDA	0x67CF	# <CJK>
-0xDBDB	0x6822	# <CJK>
-0xDBDC	0x767D	# <CJK>
-0xDBDD	0x767E	# <CJK>
-0xDBDE	0x9B44	# <CJK>
-0xDBDF	0x5E61	# <CJK>
-0xDBE0	0x6A0A	# <CJK>
-0xDBE1	0x7169	# <CJK>
-0xDBE2	0x71D4	# <CJK>
-0xDBE3	0x756A	# <CJK>
-0xDBE4	0xF964	# <CJK>
-0xDBE5	0x7E41	# <CJK>
-0xDBE6	0x8543	# <CJK>
-0xDBE7	0x85E9	# <CJK>
-0xDBE8	0x98DC	# <CJK>
-0xDBE9	0x4F10	# <CJK>
-0xDBEA	0x7B4F	# <CJK>
-0xDBEB	0x7F70	# <CJK>
-0xDBEC	0x95A5	# <CJK>
-0xDBED	0x51E1	# <CJK>
-0xDBEE	0x5E06	# <CJK>
-0xDBEF	0x68B5	# <CJK>
-0xDBF0	0x6C3E	# <CJK>
-0xDBF1	0x6C4E	# <CJK>
-0xDBF2	0x6CDB	# <CJK>
-0xDBF3	0x72AF	# <CJK>
-0xDBF4	0x7BC4	# <CJK>
-0xDBF5	0x8303	# <CJK>
-0xDBF6	0x6CD5	# <CJK>
-0xDBF7	0x743A	# <CJK>
-0xDBF8	0x50FB	# <CJK>
-0xDBF9	0x5288	# <CJK>
-0xDBFA	0x58C1	# <CJK>
-0xDBFB	0x64D8	# <CJK>
-0xDBFC	0x6A97	# <CJK>
-0xDBFD	0x74A7	# <CJK>
-0xDBFE	0x7656	# <CJK>
-0xDCA1	0x78A7	# <CJK>
-0xDCA2	0x8617	# <CJK>
-0xDCA3	0x95E2	# <CJK>
-0xDCA4	0x9739	# <CJK>
-0xDCA5	0xF965	# <CJK>
-0xDCA6	0x535E	# <CJK>
-0xDCA7	0x5F01	# <CJK>
-0xDCA8	0x8B8A	# <CJK>
-0xDCA9	0x8FA8	# <CJK>
-0xDCAA	0x8FAF	# <CJK>
-0xDCAB	0x908A	# <CJK>
-0xDCAC	0x5225	# <CJK>
-0xDCAD	0x77A5	# <CJK>
-0xDCAE	0x9C49	# <CJK>
-0xDCAF	0x9F08	# <CJK>
-0xDCB0	0x4E19	# <CJK>
-0xDCB1	0x5002	# <CJK>
-0xDCB2	0x5175	# <CJK>
-0xDCB3	0x5C5B	# <CJK>
-0xDCB4	0x5E77	# <CJK>
-0xDCB5	0x661E	# <CJK>
-0xDCB6	0x663A	# <CJK>
-0xDCB7	0x67C4	# <CJK>
-0xDCB8	0x68C5	# <CJK>
-0xDCB9	0x70B3	# <CJK>
-0xDCBA	0x7501	# <CJK>
-0xDCBB	0x75C5	# <CJK>
-0xDCBC	0x79C9	# <CJK>
-0xDCBD	0x7ADD	# <CJK>
-0xDCBE	0x8F27	# <CJK>
-0xDCBF	0x9920	# <CJK>
-0xDCC0	0x9A08	# <CJK>
-0xDCC1	0x4FDD	# <CJK>
-0xDCC2	0x5821	# <CJK>
-0xDCC3	0x5831	# <CJK>
-0xDCC4	0x5BF6	# <CJK>
-0xDCC5	0x666E	# <CJK>
-0xDCC6	0x6B65	# <CJK>
-0xDCC7	0x6D11	# <CJK>
-0xDCC8	0x6E7A	# <CJK>
-0xDCC9	0x6F7D	# <CJK>
-0xDCCA	0x73E4	# <CJK>
-0xDCCB	0x752B	# <CJK>
-0xDCCC	0x83E9	# <CJK>
-0xDCCD	0x88DC	# <CJK>
-0xDCCE	0x8913	# <CJK>
-0xDCCF	0x8B5C	# <CJK>
-0xDCD0	0x8F14	# <CJK>
-0xDCD1	0x4F0F	# <CJK>
-0xDCD2	0x50D5	# <CJK>
-0xDCD3	0x5310	# <CJK>
-0xDCD4	0x535C	# <CJK>
-0xDCD5	0x5B93	# <CJK>
-0xDCD6	0x5FA9	# <CJK>
-0xDCD7	0x670D	# <CJK>
-0xDCD8	0x798F	# <CJK>
-0xDCD9	0x8179	# <CJK>
-0xDCDA	0x832F	# <CJK>
-0xDCDB	0x8514	# <CJK>
-0xDCDC	0x8907	# <CJK>
-0xDCDD	0x8986	# <CJK>
-0xDCDE	0x8F39	# <CJK>
-0xDCDF	0x8F3B	# <CJK>
-0xDCE0	0x99A5	# <CJK>
-0xDCE1	0x9C12	# <CJK>
-0xDCE2	0x672C	# <CJK>
-0xDCE3	0x4E76	# <CJK>
-0xDCE4	0x4FF8	# <CJK>
-0xDCE5	0x5949	# <CJK>
-0xDCE6	0x5C01	# <CJK>
-0xDCE7	0x5CEF	# <CJK>
-0xDCE8	0x5CF0	# <CJK>
-0xDCE9	0x6367	# <CJK>
-0xDCEA	0x68D2	# <CJK>
-0xDCEB	0x70FD	# <CJK>
-0xDCEC	0x71A2	# <CJK>
-0xDCED	0x742B	# <CJK>
-0xDCEE	0x7E2B	# <CJK>
-0xDCEF	0x84EC	# <CJK>
-0xDCF0	0x8702	# <CJK>
-0xDCF1	0x9022	# <CJK>
-0xDCF2	0x92D2	# <CJK>
-0xDCF3	0x9CF3	# <CJK>
-0xDCF4	0x4E0D	# <CJK>
-0xDCF5	0x4ED8	# <CJK>
-0xDCF6	0x4FEF	# <CJK>
-0xDCF7	0x5085	# <CJK>
-0xDCF8	0x5256	# <CJK>
-0xDCF9	0x526F	# <CJK>
-0xDCFA	0x5426	# <CJK>
-0xDCFB	0x5490	# <CJK>
-0xDCFC	0x57E0	# <CJK>
-0xDCFD	0x592B	# <CJK>
-0xDCFE	0x5A66	# <CJK>
-0xDDA1	0x5B5A	# <CJK>
-0xDDA2	0x5B75	# <CJK>
-0xDDA3	0x5BCC	# <CJK>
-0xDDA4	0x5E9C	# <CJK>
-0xDDA5	0xF966	# <CJK>
-0xDDA6	0x6276	# <CJK>
-0xDDA7	0x6577	# <CJK>
-0xDDA8	0x65A7	# <CJK>
-0xDDA9	0x6D6E	# <CJK>
-0xDDAA	0x6EA5	# <CJK>
-0xDDAB	0x7236	# <CJK>
-0xDDAC	0x7B26	# <CJK>
-0xDDAD	0x7C3F	# <CJK>
-0xDDAE	0x7F36	# <CJK>
-0xDDAF	0x8150	# <CJK>
-0xDDB0	0x8151	# <CJK>
-0xDDB1	0x819A	# <CJK>
-0xDDB2	0x8240	# <CJK>
-0xDDB3	0x8299	# <CJK>
-0xDDB4	0x83A9	# <CJK>
-0xDDB5	0x8A03	# <CJK>
-0xDDB6	0x8CA0	# <CJK>
-0xDDB7	0x8CE6	# <CJK>
-0xDDB8	0x8CFB	# <CJK>
-0xDDB9	0x8D74	# <CJK>
-0xDDBA	0x8DBA	# <CJK>
-0xDDBB	0x90E8	# <CJK>
-0xDDBC	0x91DC	# <CJK>
-0xDDBD	0x961C	# <CJK>
-0xDDBE	0x9644	# <CJK>
-0xDDBF	0x99D9	# <CJK>
-0xDDC0	0x9CE7	# <CJK>
-0xDDC1	0x5317	# <CJK>
-0xDDC2	0x5206	# <CJK>
-0xDDC3	0x5429	# <CJK>
-0xDDC4	0x5674	# <CJK>
-0xDDC5	0x58B3	# <CJK>
-0xDDC6	0x5954	# <CJK>
-0xDDC7	0x596E	# <CJK>
-0xDDC8	0x5FFF	# <CJK>
-0xDDC9	0x61A4	# <CJK>
-0xDDCA	0x626E	# <CJK>
-0xDDCB	0x6610	# <CJK>
-0xDDCC	0x6C7E	# <CJK>
-0xDDCD	0x711A	# <CJK>
-0xDDCE	0x76C6	# <CJK>
-0xDDCF	0x7C89	# <CJK>
-0xDDD0	0x7CDE	# <CJK>
-0xDDD1	0x7D1B	# <CJK>
-0xDDD2	0x82AC	# <CJK>
-0xDDD3	0x8CC1	# <CJK>
-0xDDD4	0x96F0	# <CJK>
-0xDDD5	0xF967	# <CJK>
-0xDDD6	0x4F5B	# <CJK>
-0xDDD7	0x5F17	# <CJK>
-0xDDD8	0x5F7F	# <CJK>
-0xDDD9	0x62C2	# <CJK>
-0xDDDA	0x5D29	# <CJK>
-0xDDDB	0x670B	# <CJK>
-0xDDDC	0x68DA	# <CJK>
-0xDDDD	0x787C	# <CJK>
-0xDDDE	0x7E43	# <CJK>
-0xDDDF	0x9D6C	# <CJK>
-0xDDE0	0x4E15	# <CJK>
-0xDDE1	0x5099	# <CJK>
-0xDDE2	0x5315	# <CJK>
-0xDDE3	0x532A	# <CJK>
-0xDDE4	0x5351	# <CJK>
-0xDDE5	0x5983	# <CJK>
-0xDDE6	0x5A62	# <CJK>
-0xDDE7	0x5E87	# <CJK>
-0xDDE8	0x60B2	# <CJK>
-0xDDE9	0x618A	# <CJK>
-0xDDEA	0x6249	# <CJK>
-0xDDEB	0x6279	# <CJK>
-0xDDEC	0x6590	# <CJK>
-0xDDED	0x6787	# <CJK>
-0xDDEE	0x69A7	# <CJK>
-0xDDEF	0x6BD4	# <CJK>
-0xDDF0	0x6BD6	# <CJK>
-0xDDF1	0x6BD7	# <CJK>
-0xDDF2	0x6BD8	# <CJK>
-0xDDF3	0x6CB8	# <CJK>
-0xDDF4	0xF968	# <CJK>
-0xDDF5	0x7435	# <CJK>
-0xDDF6	0x75FA	# <CJK>
-0xDDF7	0x7812	# <CJK>
-0xDDF8	0x7891	# <CJK>
-0xDDF9	0x79D5	# <CJK>
-0xDDFA	0x79D8	# <CJK>
-0xDDFB	0x7C83	# <CJK>
-0xDDFC	0x7DCB	# <CJK>
-0xDDFD	0x7FE1	# <CJK>
-0xDDFE	0x80A5	# <CJK>
-0xDEA1	0x813E	# <CJK>
-0xDEA2	0x81C2	# <CJK>
-0xDEA3	0x83F2	# <CJK>
-0xDEA4	0x871A	# <CJK>
-0xDEA5	0x88E8	# <CJK>
-0xDEA6	0x8AB9	# <CJK>
-0xDEA7	0x8B6C	# <CJK>
-0xDEA8	0x8CBB	# <CJK>
-0xDEA9	0x9119	# <CJK>
-0xDEAA	0x975E	# <CJK>
-0xDEAB	0x98DB	# <CJK>
-0xDEAC	0x9F3B	# <CJK>
-0xDEAD	0x56AC	# <CJK>
-0xDEAE	0x5B2A	# <CJK>
-0xDEAF	0x5F6C	# <CJK>
-0xDEB0	0x658C	# <CJK>
-0xDEB1	0x6AB3	# <CJK>
-0xDEB2	0x6BAF	# <CJK>
-0xDEB3	0x6D5C	# <CJK>
-0xDEB4	0x6FF1	# <CJK>
-0xDEB5	0x7015	# <CJK>
-0xDEB6	0x725D	# <CJK>
-0xDEB7	0x73AD	# <CJK>
-0xDEB8	0x8CA7	# <CJK>
-0xDEB9	0x8CD3	# <CJK>
-0xDEBA	0x983B	# <CJK>
-0xDEBB	0x6191	# <CJK>
-0xDEBC	0x6C37	# <CJK>
-0xDEBD	0x8058	# <CJK>
-0xDEBE	0x9A01	# <CJK>
-0xDEBF	0x4E4D	# <CJK>
-0xDEC0	0x4E8B	# <CJK>
-0xDEC1	0x4E9B	# <CJK>
-0xDEC2	0x4ED5	# <CJK>
-0xDEC3	0x4F3A	# <CJK>
-0xDEC4	0x4F3C	# <CJK>
-0xDEC5	0x4F7F	# <CJK>
-0xDEC6	0x4FDF	# <CJK>
-0xDEC7	0x50FF	# <CJK>
-0xDEC8	0x53F2	# <CJK>
-0xDEC9	0x53F8	# <CJK>
-0xDECA	0x5506	# <CJK>
-0xDECB	0x55E3	# <CJK>
-0xDECC	0x56DB	# <CJK>
-0xDECD	0x58EB	# <CJK>
-0xDECE	0x5962	# <CJK>
-0xDECF	0x5A11	# <CJK>
-0xDED0	0x5BEB	# <CJK>
-0xDED1	0x5BFA	# <CJK>
-0xDED2	0x5C04	# <CJK>
-0xDED3	0x5DF3	# <CJK>
-0xDED4	0x5E2B	# <CJK>
-0xDED5	0x5F99	# <CJK>
-0xDED6	0x601D	# <CJK>
-0xDED7	0x6368	# <CJK>
-0xDED8	0x659C	# <CJK>
-0xDED9	0x65AF	# <CJK>
-0xDEDA	0x67F6	# <CJK>
-0xDEDB	0x67FB	# <CJK>
-0xDEDC	0x68AD	# <CJK>
-0xDEDD	0x6B7B	# <CJK>
-0xDEDE	0x6C99	# <CJK>
-0xDEDF	0x6CD7	# <CJK>
-0xDEE0	0x6E23	# <CJK>
-0xDEE1	0x7009	# <CJK>
-0xDEE2	0x7345	# <CJK>
-0xDEE3	0x7802	# <CJK>
-0xDEE4	0x793E	# <CJK>
-0xDEE5	0x7940	# <CJK>
-0xDEE6	0x7960	# <CJK>
-0xDEE7	0x79C1	# <CJK>
-0xDEE8	0x7BE9	# <CJK>
-0xDEE9	0x7D17	# <CJK>
-0xDEEA	0x7D72	# <CJK>
-0xDEEB	0x8086	# <CJK>
-0xDEEC	0x820D	# <CJK>
-0xDEED	0x838E	# <CJK>
-0xDEEE	0x84D1	# <CJK>
-0xDEEF	0x86C7	# <CJK>
-0xDEF0	0x88DF	# <CJK>
-0xDEF1	0x8A50	# <CJK>
-0xDEF2	0x8A5E	# <CJK>
-0xDEF3	0x8B1D	# <CJK>
-0xDEF4	0x8CDC	# <CJK>
-0xDEF5	0x8D66	# <CJK>
-0xDEF6	0x8FAD	# <CJK>
-0xDEF7	0x90AA	# <CJK>
-0xDEF8	0x98FC	# <CJK>
-0xDEF9	0x99DF	# <CJK>
-0xDEFA	0x9E9D	# <CJK>
-0xDEFB	0x524A	# <CJK>
-0xDEFC	0xF969	# <CJK>
-0xDEFD	0x6714	# <CJK>
-0xDEFE	0xF96A	# <CJK>
-0xDFA1	0x5098	# <CJK>
-0xDFA2	0x522A	# <CJK>
-0xDFA3	0x5C71	# <CJK>
-0xDFA4	0x6563	# <CJK>
-0xDFA5	0x6C55	# <CJK>
-0xDFA6	0x73CA	# <CJK>
-0xDFA7	0x7523	# <CJK>
-0xDFA8	0x759D	# <CJK>
-0xDFA9	0x7B97	# <CJK>
-0xDFAA	0x849C	# <CJK>
-0xDFAB	0x9178	# <CJK>
-0xDFAC	0x9730	# <CJK>
-0xDFAD	0x4E77	# <CJK>
-0xDFAE	0x6492	# <CJK>
-0xDFAF	0x6BBA	# <CJK>
-0xDFB0	0x715E	# <CJK>
-0xDFB1	0x85A9	# <CJK>
-0xDFB2	0x4E09	# <CJK>
-0xDFB3	0xF96B	# <CJK>
-0xDFB4	0x6749	# <CJK>
-0xDFB5	0x68EE	# <CJK>
-0xDFB6	0x6E17	# <CJK>
-0xDFB7	0x829F	# <CJK>
-0xDFB8	0x8518	# <CJK>
-0xDFB9	0x886B	# <CJK>
-0xDFBA	0x63F7	# <CJK>
-0xDFBB	0x6F81	# <CJK>
-0xDFBC	0x9212	# <CJK>
-0xDFBD	0x98AF	# <CJK>
-0xDFBE	0x4E0A	# <CJK>
-0xDFBF	0x50B7	# <CJK>
-0xDFC0	0x50CF	# <CJK>
-0xDFC1	0x511F	# <CJK>
-0xDFC2	0x5546	# <CJK>
-0xDFC3	0x55AA	# <CJK>
-0xDFC4	0x5617	# <CJK>
-0xDFC5	0x5B40	# <CJK>
-0xDFC6	0x5C19	# <CJK>
-0xDFC7	0x5CE0	# <CJK>
-0xDFC8	0x5E38	# <CJK>
-0xDFC9	0x5E8A	# <CJK>
-0xDFCA	0x5EA0	# <CJK>
-0xDFCB	0x5EC2	# <CJK>
-0xDFCC	0x60F3	# <CJK>
-0xDFCD	0x6851	# <CJK>
-0xDFCE	0x6A61	# <CJK>
-0xDFCF	0x6E58	# <CJK>
-0xDFD0	0x723D	# <CJK>
-0xDFD1	0x7240	# <CJK>
-0xDFD2	0x72C0	# <CJK>
-0xDFD3	0x76F8	# <CJK>
-0xDFD4	0x7965	# <CJK>
-0xDFD5	0x7BB1	# <CJK>
-0xDFD6	0x7FD4	# <CJK>
-0xDFD7	0x88F3	# <CJK>
-0xDFD8	0x89F4	# <CJK>
-0xDFD9	0x8A73	# <CJK>
-0xDFDA	0x8C61	# <CJK>
-0xDFDB	0x8CDE	# <CJK>
-0xDFDC	0x971C	# <CJK>
-0xDFDD	0x585E	# <CJK>
-0xDFDE	0x74BD	# <CJK>
-0xDFDF	0x8CFD	# <CJK>
-0xDFE0	0x55C7	# <CJK>
-0xDFE1	0xF96C	# <CJK>
-0xDFE2	0x7A61	# <CJK>
-0xDFE3	0x7D22	# <CJK>
-0xDFE4	0x8272	# <CJK>
-0xDFE5	0x7272	# <CJK>
-0xDFE6	0x751F	# <CJK>
-0xDFE7	0x7525	# <CJK>
-0xDFE8	0xF96D	# <CJK>
-0xDFE9	0x7B19	# <CJK>
-0xDFEA	0x5885	# <CJK>
-0xDFEB	0x58FB	# <CJK>
-0xDFEC	0x5DBC	# <CJK>
-0xDFED	0x5E8F	# <CJK>
-0xDFEE	0x5EB6	# <CJK>
-0xDFEF	0x5F90	# <CJK>
-0xDFF0	0x6055	# <CJK>
-0xDFF1	0x6292	# <CJK>
-0xDFF2	0x637F	# <CJK>
-0xDFF3	0x654D	# <CJK>
-0xDFF4	0x6691	# <CJK>
-0xDFF5	0x66D9	# <CJK>
-0xDFF6	0x66F8	# <CJK>
-0xDFF7	0x6816	# <CJK>
-0xDFF8	0x68F2	# <CJK>
-0xDFF9	0x7280	# <CJK>
-0xDFFA	0x745E	# <CJK>
-0xDFFB	0x7B6E	# <CJK>
-0xDFFC	0x7D6E	# <CJK>
-0xDFFD	0x7DD6	# <CJK>
-0xDFFE	0x7F72	# <CJK>
-0xE0A1	0x80E5	# <CJK>
-0xE0A2	0x8212	# <CJK>
-0xE0A3	0x85AF	# <CJK>
-0xE0A4	0x897F	# <CJK>
-0xE0A5	0x8A93	# <CJK>
-0xE0A6	0x901D	# <CJK>
-0xE0A7	0x92E4	# <CJK>
-0xE0A8	0x9ECD	# <CJK>
-0xE0A9	0x9F20	# <CJK>
-0xE0AA	0x5915	# <CJK>
-0xE0AB	0x596D	# <CJK>
-0xE0AC	0x5E2D	# <CJK>
-0xE0AD	0x60DC	# <CJK>
-0xE0AE	0x6614	# <CJK>
-0xE0AF	0x6673	# <CJK>
-0xE0B0	0x6790	# <CJK>
-0xE0B1	0x6C50	# <CJK>
-0xE0B2	0x6DC5	# <CJK>
-0xE0B3	0x6F5F	# <CJK>
-0xE0B4	0x77F3	# <CJK>
-0xE0B5	0x78A9	# <CJK>
-0xE0B6	0x84C6	# <CJK>
-0xE0B7	0x91CB	# <CJK>
-0xE0B8	0x932B	# <CJK>
-0xE0B9	0x4ED9	# <CJK>
-0xE0BA	0x50CA	# <CJK>
-0xE0BB	0x5148	# <CJK>
-0xE0BC	0x5584	# <CJK>
-0xE0BD	0x5B0B	# <CJK>
-0xE0BE	0x5BA3	# <CJK>
-0xE0BF	0x6247	# <CJK>
-0xE0C0	0x657E	# <CJK>
-0xE0C1	0x65CB	# <CJK>
-0xE0C2	0x6E32	# <CJK>
-0xE0C3	0x717D	# <CJK>
-0xE0C4	0x7401	# <CJK>
-0xE0C5	0x7444	# <CJK>
-0xE0C6	0x7487	# <CJK>
-0xE0C7	0x74BF	# <CJK>
-0xE0C8	0x766C	# <CJK>
-0xE0C9	0x79AA	# <CJK>
-0xE0CA	0x7DDA	# <CJK>
-0xE0CB	0x7E55	# <CJK>
-0xE0CC	0x7FA8	# <CJK>
-0xE0CD	0x817A	# <CJK>
-0xE0CE	0x81B3	# <CJK>
-0xE0CF	0x8239	# <CJK>
-0xE0D0	0x861A	# <CJK>
-0xE0D1	0x87EC	# <CJK>
-0xE0D2	0x8A75	# <CJK>
-0xE0D3	0x8DE3	# <CJK>
-0xE0D4	0x9078	# <CJK>
-0xE0D5	0x9291	# <CJK>
-0xE0D6	0x9425	# <CJK>
-0xE0D7	0x994D	# <CJK>
-0xE0D8	0x9BAE	# <CJK>
-0xE0D9	0x5368	# <CJK>
-0xE0DA	0x5C51	# <CJK>
-0xE0DB	0x6954	# <CJK>
-0xE0DC	0x6CC4	# <CJK>
-0xE0DD	0x6D29	# <CJK>
-0xE0DE	0x6E2B	# <CJK>
-0xE0DF	0x820C	# <CJK>
-0xE0E0	0x859B	# <CJK>
-0xE0E1	0x893B	# <CJK>
-0xE0E2	0x8A2D	# <CJK>
-0xE0E3	0x8AAA	# <CJK>
-0xE0E4	0x96EA	# <CJK>
-0xE0E5	0x9F67	# <CJK>
-0xE0E6	0x5261	# <CJK>
-0xE0E7	0x66B9	# <CJK>
-0xE0E8	0x6BB2	# <CJK>
-0xE0E9	0x7E96	# <CJK>
-0xE0EA	0x87FE	# <CJK>
-0xE0EB	0x8D0D	# <CJK>
-0xE0EC	0x9583	# <CJK>
-0xE0ED	0x965D	# <CJK>
-0xE0EE	0x651D	# <CJK>
-0xE0EF	0x6D89	# <CJK>
-0xE0F0	0x71EE	# <CJK>
-0xE0F1	0xF96E	# <CJK>
-0xE0F2	0x57CE	# <CJK>
-0xE0F3	0x59D3	# <CJK>
-0xE0F4	0x5BAC	# <CJK>
-0xE0F5	0x6027	# <CJK>
-0xE0F6	0x60FA	# <CJK>
-0xE0F7	0x6210	# <CJK>
-0xE0F8	0x661F	# <CJK>
-0xE0F9	0x665F	# <CJK>
-0xE0FA	0x7329	# <CJK>
-0xE0FB	0x73F9	# <CJK>
-0xE0FC	0x76DB	# <CJK>
-0xE0FD	0x7701	# <CJK>
-0xE0FE	0x7B6C	# <CJK>
-0xE1A1	0x8056	# <CJK>
-0xE1A2	0x8072	# <CJK>
-0xE1A3	0x8165	# <CJK>
-0xE1A4	0x8AA0	# <CJK>
-0xE1A5	0x9192	# <CJK>
-0xE1A6	0x4E16	# <CJK>
-0xE1A7	0x52E2	# <CJK>
-0xE1A8	0x6B72	# <CJK>
-0xE1A9	0x6D17	# <CJK>
-0xE1AA	0x7A05	# <CJK>
-0xE1AB	0x7B39	# <CJK>
-0xE1AC	0x7D30	# <CJK>
-0xE1AD	0xF96F	# <CJK>
-0xE1AE	0x8CB0	# <CJK>
-0xE1AF	0x53EC	# <CJK>
-0xE1B0	0x562F	# <CJK>
-0xE1B1	0x5851	# <CJK>
-0xE1B2	0x5BB5	# <CJK>
-0xE1B3	0x5C0F	# <CJK>
-0xE1B4	0x5C11	# <CJK>
-0xE1B5	0x5DE2	# <CJK>
-0xE1B6	0x6240	# <CJK>
-0xE1B7	0x6383	# <CJK>
-0xE1B8	0x6414	# <CJK>
-0xE1B9	0x662D	# <CJK>
-0xE1BA	0x68B3	# <CJK>
-0xE1BB	0x6CBC	# <CJK>
-0xE1BC	0x6D88	# <CJK>
-0xE1BD	0x6EAF	# <CJK>
-0xE1BE	0x701F	# <CJK>
-0xE1BF	0x70A4	# <CJK>
-0xE1C0	0x71D2	# <CJK>
-0xE1C1	0x7526	# <CJK>
-0xE1C2	0x758F	# <CJK>
-0xE1C3	0x758E	# <CJK>
-0xE1C4	0x7619	# <CJK>
-0xE1C5	0x7B11	# <CJK>
-0xE1C6	0x7BE0	# <CJK>
-0xE1C7	0x7C2B	# <CJK>
-0xE1C8	0x7D20	# <CJK>
-0xE1C9	0x7D39	# <CJK>
-0xE1CA	0x852C	# <CJK>
-0xE1CB	0x856D	# <CJK>
-0xE1CC	0x8607	# <CJK>
-0xE1CD	0x8A34	# <CJK>
-0xE1CE	0x900D	# <CJK>
-0xE1CF	0x9061	# <CJK>
-0xE1D0	0x90B5	# <CJK>
-0xE1D1	0x92B7	# <CJK>
-0xE1D2	0x97F6	# <CJK>
-0xE1D3	0x9A37	# <CJK>
-0xE1D4	0x4FD7	# <CJK>
-0xE1D5	0x5C6C	# <CJK>
-0xE1D6	0x675F	# <CJK>
-0xE1D7	0x6D91	# <CJK>
-0xE1D8	0x7C9F	# <CJK>
-0xE1D9	0x7E8C	# <CJK>
-0xE1DA	0x8B16	# <CJK>
-0xE1DB	0x8D16	# <CJK>
-0xE1DC	0x901F	# <CJK>
-0xE1DD	0x5B6B	# <CJK>
-0xE1DE	0x5DFD	# <CJK>
-0xE1DF	0x640D	# <CJK>
-0xE1E0	0x84C0	# <CJK>
-0xE1E1	0x905C	# <CJK>
-0xE1E2	0x98E1	# <CJK>
-0xE1E3	0x7387	# <CJK>
-0xE1E4	0x5B8B	# <CJK>
-0xE1E5	0x609A	# <CJK>
-0xE1E6	0x677E	# <CJK>
-0xE1E7	0x6DDE	# <CJK>
-0xE1E8	0x8A1F	# <CJK>
-0xE1E9	0x8AA6	# <CJK>
-0xE1EA	0x9001	# <CJK>
-0xE1EB	0x980C	# <CJK>
-0xE1EC	0x5237	# <CJK>
-0xE1ED	0xF970	# <CJK>
-0xE1EE	0x7051	# <CJK>
-0xE1EF	0x788E	# <CJK>
-0xE1F0	0x9396	# <CJK>
-0xE1F1	0x8870	# <CJK>
-0xE1F2	0x91D7	# <CJK>
-0xE1F3	0x4FEE	# <CJK>
-0xE1F4	0x53D7	# <CJK>
-0xE1F5	0x55FD	# <CJK>
-0xE1F6	0x56DA	# <CJK>
-0xE1F7	0x5782	# <CJK>
-0xE1F8	0x58FD	# <CJK>
-0xE1F9	0x5AC2	# <CJK>
-0xE1FA	0x5B88	# <CJK>
-0xE1FB	0x5CAB	# <CJK>
-0xE1FC	0x5CC0	# <CJK>
-0xE1FD	0x5E25	# <CJK>
-0xE1FE	0x6101	# <CJK>
-0xE2A1	0x620D	# <CJK>
-0xE2A2	0x624B	# <CJK>
-0xE2A3	0x6388	# <CJK>
-0xE2A4	0x641C	# <CJK>
-0xE2A5	0x6536	# <CJK>
-0xE2A6	0x6578	# <CJK>
-0xE2A7	0x6A39	# <CJK>
-0xE2A8	0x6B8A	# <CJK>
-0xE2A9	0x6C34	# <CJK>
-0xE2AA	0x6D19	# <CJK>
-0xE2AB	0x6F31	# <CJK>
-0xE2AC	0x71E7	# <CJK>
-0xE2AD	0x72E9	# <CJK>
-0xE2AE	0x7378	# <CJK>
-0xE2AF	0x7407	# <CJK>
-0xE2B0	0x74B2	# <CJK>
-0xE2B1	0x7626	# <CJK>
-0xE2B2	0x7761	# <CJK>
-0xE2B3	0x79C0	# <CJK>
-0xE2B4	0x7A57	# <CJK>
-0xE2B5	0x7AEA	# <CJK>
-0xE2B6	0x7CB9	# <CJK>
-0xE2B7	0x7D8F	# <CJK>
-0xE2B8	0x7DAC	# <CJK>
-0xE2B9	0x7E61	# <CJK>
-0xE2BA	0x7F9E	# <CJK>
-0xE2BB	0x8129	# <CJK>
-0xE2BC	0x8331	# <CJK>
-0xE2BD	0x8490	# <CJK>
-0xE2BE	0x84DA	# <CJK>
-0xE2BF	0x85EA	# <CJK>
-0xE2C0	0x8896	# <CJK>
-0xE2C1	0x8AB0	# <CJK>
-0xE2C2	0x8B90	# <CJK>
-0xE2C3	0x8F38	# <CJK>
-0xE2C4	0x9042	# <CJK>
-0xE2C5	0x9083	# <CJK>
-0xE2C6	0x916C	# <CJK>
-0xE2C7	0x9296	# <CJK>
-0xE2C8	0x92B9	# <CJK>
-0xE2C9	0x968B	# <CJK>
-0xE2CA	0x96A7	# <CJK>
-0xE2CB	0x96A8	# <CJK>
-0xE2CC	0x96D6	# <CJK>
-0xE2CD	0x9700	# <CJK>
-0xE2CE	0x9808	# <CJK>
-0xE2CF	0x9996	# <CJK>
-0xE2D0	0x9AD3	# <CJK>
-0xE2D1	0x9B1A	# <CJK>
-0xE2D2	0x53D4	# <CJK>
-0xE2D3	0x587E	# <CJK>
-0xE2D4	0x5919	# <CJK>
-0xE2D5	0x5B70	# <CJK>
-0xE2D6	0x5BBF	# <CJK>
-0xE2D7	0x6DD1	# <CJK>
-0xE2D8	0x6F5A	# <CJK>
-0xE2D9	0x719F	# <CJK>
-0xE2DA	0x7421	# <CJK>
-0xE2DB	0x74B9	# <CJK>
-0xE2DC	0x8085	# <CJK>
-0xE2DD	0x83FD	# <CJK>
-0xE2DE	0x5DE1	# <CJK>
-0xE2DF	0x5F87	# <CJK>
-0xE2E0	0x5FAA	# <CJK>
-0xE2E1	0x6042	# <CJK>
-0xE2E2	0x65EC	# <CJK>
-0xE2E3	0x6812	# <CJK>
-0xE2E4	0x696F	# <CJK>
-0xE2E5	0x6A53	# <CJK>
-0xE2E6	0x6B89	# <CJK>
-0xE2E7	0x6D35	# <CJK>
-0xE2E8	0x6DF3	# <CJK>
-0xE2E9	0x73E3	# <CJK>
-0xE2EA	0x76FE	# <CJK>
-0xE2EB	0x77AC	# <CJK>
-0xE2EC	0x7B4D	# <CJK>
-0xE2ED	0x7D14	# <CJK>
-0xE2EE	0x8123	# <CJK>
-0xE2EF	0x821C	# <CJK>
-0xE2F0	0x8340	# <CJK>
-0xE2F1	0x84F4	# <CJK>
-0xE2F2	0x8563	# <CJK>
-0xE2F3	0x8A62	# <CJK>
-0xE2F4	0x8AC4	# <CJK>
-0xE2F5	0x9187	# <CJK>
-0xE2F6	0x931E	# <CJK>
-0xE2F7	0x9806	# <CJK>
-0xE2F8	0x99B4	# <CJK>
-0xE2F9	0x620C	# <CJK>
-0xE2FA	0x8853	# <CJK>
-0xE2FB	0x8FF0	# <CJK>
-0xE2FC	0x9265	# <CJK>
-0xE2FD	0x5D07	# <CJK>
-0xE2FE	0x5D27	# <CJK>
-0xE3A1	0x5D69	# <CJK>
-0xE3A2	0x745F	# <CJK>
-0xE3A3	0x819D	# <CJK>
-0xE3A4	0x8768	# <CJK>
-0xE3A5	0x6FD5	# <CJK>
-0xE3A6	0x62FE	# <CJK>
-0xE3A7	0x7FD2	# <CJK>
-0xE3A8	0x8936	# <CJK>
-0xE3A9	0x8972	# <CJK>
-0xE3AA	0x4E1E	# <CJK>
-0xE3AB	0x4E58	# <CJK>
-0xE3AC	0x50E7	# <CJK>
-0xE3AD	0x52DD	# <CJK>
-0xE3AE	0x5347	# <CJK>
-0xE3AF	0x627F	# <CJK>
-0xE3B0	0x6607	# <CJK>
-0xE3B1	0x7E69	# <CJK>
-0xE3B2	0x8805	# <CJK>
-0xE3B3	0x965E	# <CJK>
-0xE3B4	0x4F8D	# <CJK>
-0xE3B5	0x5319	# <CJK>
-0xE3B6	0x5636	# <CJK>
-0xE3B7	0x59CB	# <CJK>
-0xE3B8	0x5AA4	# <CJK>
-0xE3B9	0x5C38	# <CJK>
-0xE3BA	0x5C4E	# <CJK>
-0xE3BB	0x5C4D	# <CJK>
-0xE3BC	0x5E02	# <CJK>
-0xE3BD	0x5F11	# <CJK>
-0xE3BE	0x6043	# <CJK>
-0xE3BF	0x65BD	# <CJK>
-0xE3C0	0x662F	# <CJK>
-0xE3C1	0x6642	# <CJK>
-0xE3C2	0x67BE	# <CJK>
-0xE3C3	0x67F4	# <CJK>
-0xE3C4	0x731C	# <CJK>
-0xE3C5	0x77E2	# <CJK>
-0xE3C6	0x793A	# <CJK>
-0xE3C7	0x7FC5	# <CJK>
-0xE3C8	0x8494	# <CJK>
-0xE3C9	0x84CD	# <CJK>
-0xE3CA	0x8996	# <CJK>
-0xE3CB	0x8A66	# <CJK>
-0xE3CC	0x8A69	# <CJK>
-0xE3CD	0x8AE1	# <CJK>
-0xE3CE	0x8C55	# <CJK>
-0xE3CF	0x8C7A	# <CJK>
-0xE3D0	0x57F4	# <CJK>
-0xE3D1	0x5BD4	# <CJK>
-0xE3D2	0x5F0F	# <CJK>
-0xE3D3	0x606F	# <CJK>
-0xE3D4	0x62ED	# <CJK>
-0xE3D5	0x690D	# <CJK>
-0xE3D6	0x6B96	# <CJK>
-0xE3D7	0x6E5C	# <CJK>
-0xE3D8	0x7184	# <CJK>
-0xE3D9	0x7BD2	# <CJK>
-0xE3DA	0x8755	# <CJK>
-0xE3DB	0x8B58	# <CJK>
-0xE3DC	0x8EFE	# <CJK>
-0xE3DD	0x98DF	# <CJK>
-0xE3DE	0x98FE	# <CJK>
-0xE3DF	0x4F38	# <CJK>
-0xE3E0	0x4F81	# <CJK>
-0xE3E1	0x4FE1	# <CJK>
-0xE3E2	0x547B	# <CJK>
-0xE3E3	0x5A20	# <CJK>
-0xE3E4	0x5BB8	# <CJK>
-0xE3E5	0x613C	# <CJK>
-0xE3E6	0x65B0	# <CJK>
-0xE3E7	0x6668	# <CJK>
-0xE3E8	0x71FC	# <CJK>
-0xE3E9	0x7533	# <CJK>
-0xE3EA	0x795E	# <CJK>
-0xE3EB	0x7D33	# <CJK>
-0xE3EC	0x814E	# <CJK>
-0xE3ED	0x81E3	# <CJK>
-0xE3EE	0x8398	# <CJK>
-0xE3EF	0x85AA	# <CJK>
-0xE3F0	0x85CE	# <CJK>
-0xE3F1	0x8703	# <CJK>
-0xE3F2	0x8A0A	# <CJK>
-0xE3F3	0x8EAB	# <CJK>
-0xE3F4	0x8F9B	# <CJK>
-0xE3F5	0xF971	# <CJK>
-0xE3F6	0x8FC5	# <CJK>
-0xE3F7	0x5931	# <CJK>
-0xE3F8	0x5BA4	# <CJK>
-0xE3F9	0x5BE6	# <CJK>
-0xE3FA	0x6089	# <CJK>
-0xE3FB	0x5BE9	# <CJK>
-0xE3FC	0x5C0B	# <CJK>
-0xE3FD	0x5FC3	# <CJK>
-0xE3FE	0x6C81	# <CJK>
-0xE4A1	0xF972	# <CJK>
-0xE4A2	0x6DF1	# <CJK>
-0xE4A3	0x700B	# <CJK>
-0xE4A4	0x751A	# <CJK>
-0xE4A5	0x82AF	# <CJK>
-0xE4A6	0x8AF6	# <CJK>
-0xE4A7	0x4EC0	# <CJK>
-0xE4A8	0x5341	# <CJK>
-0xE4A9	0xF973	# <CJK>
-0xE4AA	0x96D9	# <CJK>
-0xE4AB	0x6C0F	# <CJK>
-0xE4AC	0x4E9E	# <CJK>
-0xE4AD	0x4FC4	# <CJK>
-0xE4AE	0x5152	# <CJK>
-0xE4AF	0x555E	# <CJK>
-0xE4B0	0x5A25	# <CJK>
-0xE4B1	0x5CE8	# <CJK>
-0xE4B2	0x6211	# <CJK>
-0xE4B3	0x7259	# <CJK>
-0xE4B4	0x82BD	# <CJK>
-0xE4B5	0x83AA	# <CJK>
-0xE4B6	0x86FE	# <CJK>
-0xE4B7	0x8859	# <CJK>
-0xE4B8	0x8A1D	# <CJK>
-0xE4B9	0x963F	# <CJK>
-0xE4BA	0x96C5	# <CJK>
-0xE4BB	0x9913	# <CJK>
-0xE4BC	0x9D09	# <CJK>
-0xE4BD	0x9D5D	# <CJK>
-0xE4BE	0x580A	# <CJK>
-0xE4BF	0x5CB3	# <CJK>
-0xE4C0	0x5DBD	# <CJK>
-0xE4C1	0x5E44	# <CJK>
-0xE4C2	0x60E1	# <CJK>
-0xE4C3	0x6115	# <CJK>
-0xE4C4	0x63E1	# <CJK>
-0xE4C5	0x6A02	# <CJK>
-0xE4C6	0x6E25	# <CJK>
-0xE4C7	0x9102	# <CJK>
-0xE4C8	0x9354	# <CJK>
-0xE4C9	0x984E	# <CJK>
-0xE4CA	0x9C10	# <CJK>
-0xE4CB	0x9F77	# <CJK>
-0xE4CC	0x5B89	# <CJK>
-0xE4CD	0x5CB8	# <CJK>
-0xE4CE	0x6309	# <CJK>
-0xE4CF	0x664F	# <CJK>
-0xE4D0	0x6848	# <CJK>
-0xE4D1	0x773C	# <CJK>
-0xE4D2	0x96C1	# <CJK>
-0xE4D3	0x978D	# <CJK>
-0xE4D4	0x9854	# <CJK>
-0xE4D5	0x9B9F	# <CJK>
-0xE4D6	0x65A1	# <CJK>
-0xE4D7	0x8B01	# <CJK>
-0xE4D8	0x8ECB	# <CJK>
-0xE4D9	0x95BC	# <CJK>
-0xE4DA	0x5535	# <CJK>
-0xE4DB	0x5CA9	# <CJK>
-0xE4DC	0x5DD6	# <CJK>
-0xE4DD	0x5EB5	# <CJK>
-0xE4DE	0x6697	# <CJK>
-0xE4DF	0x764C	# <CJK>
-0xE4E0	0x83F4	# <CJK>
-0xE4E1	0x95C7	# <CJK>
-0xE4E2	0x58D3	# <CJK>
-0xE4E3	0x62BC	# <CJK>
-0xE4E4	0x72CE	# <CJK>
-0xE4E5	0x9D28	# <CJK>
-0xE4E6	0x4EF0	# <CJK>
-0xE4E7	0x592E	# <CJK>
-0xE4E8	0x600F	# <CJK>
-0xE4E9	0x663B	# <CJK>
-0xE4EA	0x6B83	# <CJK>
-0xE4EB	0x79E7	# <CJK>
-0xE4EC	0x9D26	# <CJK>
-0xE4ED	0x5393	# <CJK>
-0xE4EE	0x54C0	# <CJK>
-0xE4EF	0x57C3	# <CJK>
-0xE4F0	0x5D16	# <CJK>
-0xE4F1	0x611B	# <CJK>
-0xE4F2	0x66D6	# <CJK>
-0xE4F3	0x6DAF	# <CJK>
-0xE4F4	0x788D	# <CJK>
-0xE4F5	0x827E	# <CJK>
-0xE4F6	0x9698	# <CJK>
-0xE4F7	0x9744	# <CJK>
-0xE4F8	0x5384	# <CJK>
-0xE4F9	0x627C	# <CJK>
-0xE4FA	0x6396	# <CJK>
-0xE4FB	0x6DB2	# <CJK>
-0xE4FC	0x7E0A	# <CJK>
-0xE4FD	0x814B	# <CJK>
-0xE4FE	0x984D	# <CJK>
-0xE5A1	0x6AFB	# <CJK>
-0xE5A2	0x7F4C	# <CJK>
-0xE5A3	0x9DAF	# <CJK>
-0xE5A4	0x9E1A	# <CJK>
-0xE5A5	0x4E5F	# <CJK>
-0xE5A6	0x503B	# <CJK>
-0xE5A7	0x51B6	# <CJK>
-0xE5A8	0x591C	# <CJK>
-0xE5A9	0x60F9	# <CJK>
-0xE5AA	0x63F6	# <CJK>
-0xE5AB	0x6930	# <CJK>
-0xE5AC	0x723A	# <CJK>
-0xE5AD	0x8036	# <CJK>
-0xE5AE	0xF974	# <CJK>
-0xE5AF	0x91CE	# <CJK>
-0xE5B0	0x5F31	# <CJK>
-0xE5B1	0xF975	# <CJK>
-0xE5B2	0xF976	# <CJK>
-0xE5B3	0x7D04	# <CJK>
-0xE5B4	0x82E5	# <CJK>
-0xE5B5	0x846F	# <CJK>
-0xE5B6	0x84BB	# <CJK>
-0xE5B7	0x85E5	# <CJK>
-0xE5B8	0x8E8D	# <CJK>
-0xE5B9	0xF977	# <CJK>
-0xE5BA	0x4F6F	# <CJK>
-0xE5BB	0xF978	# <CJK>
-0xE5BC	0xF979	# <CJK>
-0xE5BD	0x58E4	# <CJK>
-0xE5BE	0x5B43	# <CJK>
-0xE5BF	0x6059	# <CJK>
-0xE5C0	0x63DA	# <CJK>
-0xE5C1	0x6518	# <CJK>
-0xE5C2	0x656D	# <CJK>
-0xE5C3	0x6698	# <CJK>
-0xE5C4	0xF97A	# <CJK>
-0xE5C5	0x694A	# <CJK>
-0xE5C6	0x6A23	# <CJK>
-0xE5C7	0x6D0B	# <CJK>
-0xE5C8	0x7001	# <CJK>
-0xE5C9	0x716C	# <CJK>
-0xE5CA	0x75D2	# <CJK>
-0xE5CB	0x760D	# <CJK>
-0xE5CC	0x79B3	# <CJK>
-0xE5CD	0x7A70	# <CJK>
-0xE5CE	0xF97B	# <CJK>
-0xE5CF	0x7F8A	# <CJK>
-0xE5D0	0xF97C	# <CJK>
-0xE5D1	0x8944	# <CJK>
-0xE5D2	0xF97D	# <CJK>
-0xE5D3	0x8B93	# <CJK>
-0xE5D4	0x91C0	# <CJK>
-0xE5D5	0x967D	# <CJK>
-0xE5D6	0xF97E	# <CJK>
-0xE5D7	0x990A	# <CJK>
-0xE5D8	0x5704	# <CJK>
-0xE5D9	0x5FA1	# <CJK>
-0xE5DA	0x65BC	# <CJK>
-0xE5DB	0x6F01	# <CJK>
-0xE5DC	0x7600	# <CJK>
-0xE5DD	0x79A6	# <CJK>
-0xE5DE	0x8A9E	# <CJK>
-0xE5DF	0x99AD	# <CJK>
-0xE5E0	0x9B5A	# <CJK>
-0xE5E1	0x9F6C	# <CJK>
-0xE5E2	0x5104	# <CJK>
-0xE5E3	0x61B6	# <CJK>
-0xE5E4	0x6291	# <CJK>
-0xE5E5	0x6A8D	# <CJK>
-0xE5E6	0x81C6	# <CJK>
-0xE5E7	0x5043	# <CJK>
-0xE5E8	0x5830	# <CJK>
-0xE5E9	0x5F66	# <CJK>
-0xE5EA	0x7109	# <CJK>
-0xE5EB	0x8A00	# <CJK>
-0xE5EC	0x8AFA	# <CJK>
-0xE5ED	0x5B7C	# <CJK>
-0xE5EE	0x8616	# <CJK>
-0xE5EF	0x4FFA	# <CJK>
-0xE5F0	0x513C	# <CJK>
-0xE5F1	0x56B4	# <CJK>
-0xE5F2	0x5944	# <CJK>
-0xE5F3	0x63A9	# <CJK>
-0xE5F4	0x6DF9	# <CJK>
-0xE5F5	0x5DAA	# <CJK>
-0xE5F6	0x696D	# <CJK>
-0xE5F7	0x5186	# <CJK>
-0xE5F8	0x4E88	# <CJK>
-0xE5F9	0x4F59	# <CJK>
-0xE5FA	0xF97F	# <CJK>
-0xE5FB	0xF980	# <CJK>
-0xE5FC	0xF981	# <CJK>
-0xE5FD	0x5982	# <CJK>
-0xE5FE	0xF982	# <CJK>
-0xE6A1	0xF983	# <CJK>
-0xE6A2	0x6B5F	# <CJK>
-0xE6A3	0x6C5D	# <CJK>
-0xE6A4	0xF984	# <CJK>
-0xE6A5	0x74B5	# <CJK>
-0xE6A6	0x7916	# <CJK>
-0xE6A7	0xF985	# <CJK>
-0xE6A8	0x8207	# <CJK>
-0xE6A9	0x8245	# <CJK>
-0xE6AA	0x8339	# <CJK>
-0xE6AB	0x8F3F	# <CJK>
-0xE6AC	0x8F5D	# <CJK>
-0xE6AD	0xF986	# <CJK>
-0xE6AE	0x9918	# <CJK>
-0xE6AF	0xF987	# <CJK>
-0xE6B0	0xF988	# <CJK>
-0xE6B1	0xF989	# <CJK>
-0xE6B2	0x4EA6	# <CJK>
-0xE6B3	0xF98A	# <CJK>
-0xE6B4	0x57DF	# <CJK>
-0xE6B5	0x5F79	# <CJK>
-0xE6B6	0x6613	# <CJK>
-0xE6B7	0xF98B	# <CJK>
-0xE6B8	0xF98C	# <CJK>
-0xE6B9	0x75AB	# <CJK>
-0xE6BA	0x7E79	# <CJK>
-0xE6BB	0x8B6F	# <CJK>
-0xE6BC	0xF98D	# <CJK>
-0xE6BD	0x9006	# <CJK>
-0xE6BE	0x9A5B	# <CJK>
-0xE6BF	0x56A5	# <CJK>
-0xE6C0	0x5827	# <CJK>
-0xE6C1	0x59F8	# <CJK>
-0xE6C2	0x5A1F	# <CJK>
-0xE6C3	0x5BB4	# <CJK>
-0xE6C4	0xF98E	# <CJK>
-0xE6C5	0x5EF6	# <CJK>
-0xE6C6	0xF98F	# <CJK>
-0xE6C7	0xF990	# <CJK>
-0xE6C8	0x6350	# <CJK>
-0xE6C9	0x633B	# <CJK>
-0xE6CA	0xF991	# <CJK>
-0xE6CB	0x693D	# <CJK>
-0xE6CC	0x6C87	# <CJK>
-0xE6CD	0x6CBF	# <CJK>
-0xE6CE	0x6D8E	# <CJK>
-0xE6CF	0x6D93	# <CJK>
-0xE6D0	0x6DF5	# <CJK>
-0xE6D1	0x6F14	# <CJK>
-0xE6D2	0xF992	# <CJK>
-0xE6D3	0x70DF	# <CJK>
-0xE6D4	0x7136	# <CJK>
-0xE6D5	0x7159	# <CJK>
-0xE6D6	0xF993	# <CJK>
-0xE6D7	0x71C3	# <CJK>
-0xE6D8	0x71D5	# <CJK>
-0xE6D9	0xF994	# <CJK>
-0xE6DA	0x784F	# <CJK>
-0xE6DB	0x786F	# <CJK>
-0xE6DC	0xF995	# <CJK>
-0xE6DD	0x7B75	# <CJK>
-0xE6DE	0x7DE3	# <CJK>
-0xE6DF	0xF996	# <CJK>
-0xE6E0	0x7E2F	# <CJK>
-0xE6E1	0xF997	# <CJK>
-0xE6E2	0x884D	# <CJK>
-0xE6E3	0x8EDF	# <CJK>
-0xE6E4	0xF998	# <CJK>
-0xE6E5	0xF999	# <CJK>
-0xE6E6	0xF99A	# <CJK>
-0xE6E7	0x925B	# <CJK>
-0xE6E8	0xF99B	# <CJK>
-0xE6E9	0x9CF6	# <CJK>
-0xE6EA	0xF99C	# <CJK>
-0xE6EB	0xF99D	# <CJK>
-0xE6EC	0xF99E	# <CJK>
-0xE6ED	0x6085	# <CJK>
-0xE6EE	0x6D85	# <CJK>
-0xE6EF	0xF99F	# <CJK>
-0xE6F0	0x71B1	# <CJK>
-0xE6F1	0xF9A0	# <CJK>
-0xE6F2	0xF9A1	# <CJK>
-0xE6F3	0x95B1	# <CJK>
-0xE6F4	0x53AD	# <CJK>
-0xE6F5	0xF9A2	# <CJK>
-0xE6F6	0xF9A3	# <CJK>
-0xE6F7	0xF9A4	# <CJK>
-0xE6F8	0x67D3	# <CJK>
-0xE6F9	0xF9A5	# <CJK>
-0xE6FA	0x708E	# <CJK>
-0xE6FB	0x7130	# <CJK>
-0xE6FC	0x7430	# <CJK>
-0xE6FD	0x8276	# <CJK>
-0xE6FE	0x82D2	# <CJK>
-0xE7A1	0xF9A6	# <CJK>
-0xE7A2	0x95BB	# <CJK>
-0xE7A3	0x9AE5	# <CJK>
-0xE7A4	0x9E7D	# <CJK>
-0xE7A5	0x66C4	# <CJK>
-0xE7A6	0xF9A7	# <CJK>
-0xE7A7	0x71C1	# <CJK>
-0xE7A8	0x8449	# <CJK>
-0xE7A9	0xF9A8	# <CJK>
-0xE7AA	0xF9A9	# <CJK>
-0xE7AB	0x584B	# <CJK>
-0xE7AC	0xF9AA	# <CJK>
-0xE7AD	0xF9AB	# <CJK>
-0xE7AE	0x5DB8	# <CJK>
-0xE7AF	0x5F71	# <CJK>
-0xE7B0	0xF9AC	# <CJK>
-0xE7B1	0x6620	# <CJK>
-0xE7B2	0x668E	# <CJK>
-0xE7B3	0x6979	# <CJK>
-0xE7B4	0x69AE	# <CJK>
-0xE7B5	0x6C38	# <CJK>
-0xE7B6	0x6CF3	# <CJK>
-0xE7B7	0x6E36	# <CJK>
-0xE7B8	0x6F41	# <CJK>
-0xE7B9	0x6FDA	# <CJK>
-0xE7BA	0x701B	# <CJK>
-0xE7BB	0x702F	# <CJK>
-0xE7BC	0x7150	# <CJK>
-0xE7BD	0x71DF	# <CJK>
-0xE7BE	0x7370	# <CJK>
-0xE7BF	0xF9AD	# <CJK>
-0xE7C0	0x745B	# <CJK>
-0xE7C1	0xF9AE	# <CJK>
-0xE7C2	0x74D4	# <CJK>
-0xE7C3	0x76C8	# <CJK>
-0xE7C4	0x7A4E	# <CJK>
-0xE7C5	0x7E93	# <CJK>
-0xE7C6	0xF9AF	# <CJK>
-0xE7C7	0xF9B0	# <CJK>
-0xE7C8	0x82F1	# <CJK>
-0xE7C9	0x8A60	# <CJK>
-0xE7CA	0x8FCE	# <CJK>
-0xE7CB	0xF9B1	# <CJK>
-0xE7CC	0x9348	# <CJK>
-0xE7CD	0xF9B2	# <CJK>
-0xE7CE	0x9719	# <CJK>
-0xE7CF	0xF9B3	# <CJK>
-0xE7D0	0xF9B4	# <CJK>
-0xE7D1	0x4E42	# <CJK>
-0xE7D2	0x502A	# <CJK>
-0xE7D3	0xF9B5	# <CJK>
-0xE7D4	0x5208	# <CJK>
-0xE7D5	0x53E1	# <CJK>
-0xE7D6	0x66F3	# <CJK>
-0xE7D7	0x6C6D	# <CJK>
-0xE7D8	0x6FCA	# <CJK>
-0xE7D9	0x730A	# <CJK>
-0xE7DA	0x777F	# <CJK>
-0xE7DB	0x7A62	# <CJK>
-0xE7DC	0x82AE	# <CJK>
-0xE7DD	0x85DD	# <CJK>
-0xE7DE	0x8602	# <CJK>
-0xE7DF	0xF9B6	# <CJK>
-0xE7E0	0x88D4	# <CJK>
-0xE7E1	0x8A63	# <CJK>
-0xE7E2	0x8B7D	# <CJK>
-0xE7E3	0x8C6B	# <CJK>
-0xE7E4	0xF9B7	# <CJK>
-0xE7E5	0x92B3	# <CJK>
-0xE7E6	0xF9B8	# <CJK>
-0xE7E7	0x9713	# <CJK>
-0xE7E8	0x9810	# <CJK>
-0xE7E9	0x4E94	# <CJK>
-0xE7EA	0x4F0D	# <CJK>
-0xE7EB	0x4FC9	# <CJK>
-0xE7EC	0x50B2	# <CJK>
-0xE7ED	0x5348	# <CJK>
-0xE7EE	0x543E	# <CJK>
-0xE7EF	0x5433	# <CJK>
-0xE7F0	0x55DA	# <CJK>
-0xE7F1	0x5862	# <CJK>
-0xE7F2	0x58BA	# <CJK>
-0xE7F3	0x5967	# <CJK>
-0xE7F4	0x5A1B	# <CJK>
-0xE7F5	0x5BE4	# <CJK>
-0xE7F6	0x609F	# <CJK>
-0xE7F7	0xF9B9	# <CJK>
-0xE7F8	0x61CA	# <CJK>
-0xE7F9	0x6556	# <CJK>
-0xE7FA	0x65FF	# <CJK>
-0xE7FB	0x6664	# <CJK>
-0xE7FC	0x68A7	# <CJK>
-0xE7FD	0x6C5A	# <CJK>
-0xE7FE	0x6FB3	# <CJK>
-0xE8A1	0x70CF	# <CJK>
-0xE8A2	0x71AC	# <CJK>
-0xE8A3	0x7352	# <CJK>
-0xE8A4	0x7B7D	# <CJK>
-0xE8A5	0x8708	# <CJK>
-0xE8A6	0x8AA4	# <CJK>
-0xE8A7	0x9C32	# <CJK>
-0xE8A8	0x9F07	# <CJK>
-0xE8A9	0x5C4B	# <CJK>
-0xE8AA	0x6C83	# <CJK>
-0xE8AB	0x7344	# <CJK>
-0xE8AC	0x7389	# <CJK>
-0xE8AD	0x923A	# <CJK>
-0xE8AE	0x6EAB	# <CJK>
-0xE8AF	0x7465	# <CJK>
-0xE8B0	0x761F	# <CJK>
-0xE8B1	0x7A69	# <CJK>
-0xE8B2	0x7E15	# <CJK>
-0xE8B3	0x860A	# <CJK>
-0xE8B4	0x5140	# <CJK>
-0xE8B5	0x58C5	# <CJK>
-0xE8B6	0x64C1	# <CJK>
-0xE8B7	0x74EE	# <CJK>
-0xE8B8	0x7515	# <CJK>
-0xE8B9	0x7670	# <CJK>
-0xE8BA	0x7FC1	# <CJK>
-0xE8BB	0x9095	# <CJK>
-0xE8BC	0x96CD	# <CJK>
-0xE8BD	0x9954	# <CJK>
-0xE8BE	0x6E26	# <CJK>
-0xE8BF	0x74E6	# <CJK>
-0xE8C0	0x7AA9	# <CJK>
-0xE8C1	0x7AAA	# <CJK>
-0xE8C2	0x81E5	# <CJK>
-0xE8C3	0x86D9	# <CJK>
-0xE8C4	0x8778	# <CJK>
-0xE8C5	0x8A1B	# <CJK>
-0xE8C6	0x5A49	# <CJK>
-0xE8C7	0x5B8C	# <CJK>
-0xE8C8	0x5B9B	# <CJK>
-0xE8C9	0x68A1	# <CJK>
-0xE8CA	0x6900	# <CJK>
-0xE8CB	0x6D63	# <CJK>
-0xE8CC	0x73A9	# <CJK>
-0xE8CD	0x7413	# <CJK>
-0xE8CE	0x742C	# <CJK>
-0xE8CF	0x7897	# <CJK>
-0xE8D0	0x7DE9	# <CJK>
-0xE8D1	0x7FEB	# <CJK>
-0xE8D2	0x8118	# <CJK>
-0xE8D3	0x8155	# <CJK>
-0xE8D4	0x839E	# <CJK>
-0xE8D5	0x8C4C	# <CJK>
-0xE8D6	0x962E	# <CJK>
-0xE8D7	0x9811	# <CJK>
-0xE8D8	0x66F0	# <CJK>
-0xE8D9	0x5F80	# <CJK>
-0xE8DA	0x65FA	# <CJK>
-0xE8DB	0x6789	# <CJK>
-0xE8DC	0x6C6A	# <CJK>
-0xE8DD	0x738B	# <CJK>
-0xE8DE	0x502D	# <CJK>
-0xE8DF	0x5A03	# <CJK>
-0xE8E0	0x6B6A	# <CJK>
-0xE8E1	0x77EE	# <CJK>
-0xE8E2	0x5916	# <CJK>
-0xE8E3	0x5D6C	# <CJK>
-0xE8E4	0x5DCD	# <CJK>
-0xE8E5	0x7325	# <CJK>
-0xE8E6	0x754F	# <CJK>
-0xE8E7	0xF9BA	# <CJK>
-0xE8E8	0xF9BB	# <CJK>
-0xE8E9	0x50E5	# <CJK>
-0xE8EA	0x51F9	# <CJK>
-0xE8EB	0x582F	# <CJK>
-0xE8EC	0x592D	# <CJK>
-0xE8ED	0x5996	# <CJK>
-0xE8EE	0x59DA	# <CJK>
-0xE8EF	0x5BE5	# <CJK>
-0xE8F0	0xF9BC	# <CJK>
-0xE8F1	0xF9BD	# <CJK>
-0xE8F2	0x5DA2	# <CJK>
-0xE8F3	0x62D7	# <CJK>
-0xE8F4	0x6416	# <CJK>
-0xE8F5	0x6493	# <CJK>
-0xE8F6	0x64FE	# <CJK>
-0xE8F7	0xF9BE	# <CJK>
-0xE8F8	0x66DC	# <CJK>
-0xE8F9	0xF9BF	# <CJK>
-0xE8FA	0x6A48	# <CJK>
-0xE8FB	0xF9C0	# <CJK>
-0xE8FC	0x71FF	# <CJK>
-0xE8FD	0x7464	# <CJK>
-0xE8FE	0xF9C1	# <CJK>
-0xE9A1	0x7A88	# <CJK>
-0xE9A2	0x7AAF	# <CJK>
-0xE9A3	0x7E47	# <CJK>
-0xE9A4	0x7E5E	# <CJK>
-0xE9A5	0x8000	# <CJK>
-0xE9A6	0x8170	# <CJK>
-0xE9A7	0xF9C2	# <CJK>
-0xE9A8	0x87EF	# <CJK>
-0xE9A9	0x8981	# <CJK>
-0xE9AA	0x8B20	# <CJK>
-0xE9AB	0x9059	# <CJK>
-0xE9AC	0xF9C3	# <CJK>
-0xE9AD	0x9080	# <CJK>
-0xE9AE	0x9952	# <CJK>
-0xE9AF	0x617E	# <CJK>
-0xE9B0	0x6B32	# <CJK>
-0xE9B1	0x6D74	# <CJK>
-0xE9B2	0x7E1F	# <CJK>
-0xE9B3	0x8925	# <CJK>
-0xE9B4	0x8FB1	# <CJK>
-0xE9B5	0x4FD1	# <CJK>
-0xE9B6	0x50AD	# <CJK>
-0xE9B7	0x5197	# <CJK>
-0xE9B8	0x52C7	# <CJK>
-0xE9B9	0x57C7	# <CJK>
-0xE9BA	0x5889	# <CJK>
-0xE9BB	0x5BB9	# <CJK>
-0xE9BC	0x5EB8	# <CJK>
-0xE9BD	0x6142	# <CJK>
-0xE9BE	0x6995	# <CJK>
-0xE9BF	0x6D8C	# <CJK>
-0xE9C0	0x6E67	# <CJK>
-0xE9C1	0x6EB6	# <CJK>
-0xE9C2	0x7194	# <CJK>
-0xE9C3	0x7462	# <CJK>
-0xE9C4	0x7528	# <CJK>
-0xE9C5	0x752C	# <CJK>
-0xE9C6	0x8073	# <CJK>
-0xE9C7	0x8338	# <CJK>
-0xE9C8	0x84C9	# <CJK>
-0xE9C9	0x8E0A	# <CJK>
-0xE9CA	0x9394	# <CJK>
-0xE9CB	0x93DE	# <CJK>
-0xE9CC	0xF9C4	# <CJK>
-0xE9CD	0x4E8E	# <CJK>
-0xE9CE	0x4F51	# <CJK>
-0xE9CF	0x5076	# <CJK>
-0xE9D0	0x512A	# <CJK>
-0xE9D1	0x53C8	# <CJK>
-0xE9D2	0x53CB	# <CJK>
-0xE9D3	0x53F3	# <CJK>
-0xE9D4	0x5B87	# <CJK>
-0xE9D5	0x5BD3	# <CJK>
-0xE9D6	0x5C24	# <CJK>
-0xE9D7	0x611A	# <CJK>
-0xE9D8	0x6182	# <CJK>
-0xE9D9	0x65F4	# <CJK>
-0xE9DA	0x725B	# <CJK>
-0xE9DB	0x7397	# <CJK>
-0xE9DC	0x7440	# <CJK>
-0xE9DD	0x76C2	# <CJK>
-0xE9DE	0x7950	# <CJK>
-0xE9DF	0x7991	# <CJK>
-0xE9E0	0x79B9	# <CJK>
-0xE9E1	0x7D06	# <CJK>
-0xE9E2	0x7FBD	# <CJK>
-0xE9E3	0x828B	# <CJK>
-0xE9E4	0x85D5	# <CJK>
-0xE9E5	0x865E	# <CJK>
-0xE9E6	0x8FC2	# <CJK>
-0xE9E7	0x9047	# <CJK>
-0xE9E8	0x90F5	# <CJK>
-0xE9E9	0x91EA	# <CJK>
-0xE9EA	0x9685	# <CJK>
-0xE9EB	0x96E8	# <CJK>
-0xE9EC	0x96E9	# <CJK>
-0xE9ED	0x52D6	# <CJK>
-0xE9EE	0x5F67	# <CJK>
-0xE9EF	0x65ED	# <CJK>
-0xE9F0	0x6631	# <CJK>
-0xE9F1	0x682F	# <CJK>
-0xE9F2	0x715C	# <CJK>
-0xE9F3	0x7A36	# <CJK>
-0xE9F4	0x90C1	# <CJK>
-0xE9F5	0x980A	# <CJK>
-0xE9F6	0x4E91	# <CJK>
-0xE9F7	0xF9C5	# <CJK>
-0xE9F8	0x6A52	# <CJK>
-0xE9F9	0x6B9E	# <CJK>
-0xE9FA	0x6F90	# <CJK>
-0xE9FB	0x7189	# <CJK>
-0xE9FC	0x8018	# <CJK>
-0xE9FD	0x82B8	# <CJK>
-0xE9FE	0x8553	# <CJK>
-0xEAA1	0x904B	# <CJK>
-0xEAA2	0x9695	# <CJK>
-0xEAA3	0x96F2	# <CJK>
-0xEAA4	0x97FB	# <CJK>
-0xEAA5	0x851A	# <CJK>
-0xEAA6	0x9B31	# <CJK>
-0xEAA7	0x4E90	# <CJK>
-0xEAA8	0x718A	# <CJK>
-0xEAA9	0x96C4	# <CJK>
-0xEAAA	0x5143	# <CJK>
-0xEAAB	0x539F	# <CJK>
-0xEAAC	0x54E1	# <CJK>
-0xEAAD	0x5713	# <CJK>
-0xEAAE	0x5712	# <CJK>
-0xEAAF	0x57A3	# <CJK>
-0xEAB0	0x5A9B	# <CJK>
-0xEAB1	0x5AC4	# <CJK>
-0xEAB2	0x5BC3	# <CJK>
-0xEAB3	0x6028	# <CJK>
-0xEAB4	0x613F	# <CJK>
-0xEAB5	0x63F4	# <CJK>
-0xEAB6	0x6C85	# <CJK>
-0xEAB7	0x6D39	# <CJK>
-0xEAB8	0x6E72	# <CJK>
-0xEAB9	0x6E90	# <CJK>
-0xEABA	0x7230	# <CJK>
-0xEABB	0x733F	# <CJK>
-0xEABC	0x7457	# <CJK>
-0xEABD	0x82D1	# <CJK>
-0xEABE	0x8881	# <CJK>
-0xEABF	0x8F45	# <CJK>
-0xEAC0	0x9060	# <CJK>
-0xEAC1	0xF9C6	# <CJK>
-0xEAC2	0x9662	# <CJK>
-0xEAC3	0x9858	# <CJK>
-0xEAC4	0x9D1B	# <CJK>
-0xEAC5	0x6708	# <CJK>
-0xEAC6	0x8D8A	# <CJK>
-0xEAC7	0x925E	# <CJK>
-0xEAC8	0x4F4D	# <CJK>
-0xEAC9	0x5049	# <CJK>
-0xEACA	0x50DE	# <CJK>
-0xEACB	0x5371	# <CJK>
-0xEACC	0x570D	# <CJK>
-0xEACD	0x59D4	# <CJK>
-0xEACE	0x5A01	# <CJK>
-0xEACF	0x5C09	# <CJK>
-0xEAD0	0x6170	# <CJK>
-0xEAD1	0x6690	# <CJK>
-0xEAD2	0x6E2D	# <CJK>
-0xEAD3	0x7232	# <CJK>
-0xEAD4	0x744B	# <CJK>
-0xEAD5	0x7DEF	# <CJK>
-0xEAD6	0x80C3	# <CJK>
-0xEAD7	0x840E	# <CJK>
-0xEAD8	0x8466	# <CJK>
-0xEAD9	0x853F	# <CJK>
-0xEADA	0x875F	# <CJK>
-0xEADB	0x885B	# <CJK>
-0xEADC	0x8918	# <CJK>
-0xEADD	0x8B02	# <CJK>
-0xEADE	0x9055	# <CJK>
-0xEADF	0x97CB	# <CJK>
-0xEAE0	0x9B4F	# <CJK>
-0xEAE1	0x4E73	# <CJK>
-0xEAE2	0x4F91	# <CJK>
-0xEAE3	0x5112	# <CJK>
-0xEAE4	0x516A	# <CJK>
-0xEAE5	0xF9C7	# <CJK>
-0xEAE6	0x552F	# <CJK>
-0xEAE7	0x55A9	# <CJK>
-0xEAE8	0x5B7A	# <CJK>
-0xEAE9	0x5BA5	# <CJK>
-0xEAEA	0x5E7C	# <CJK>
-0xEAEB	0x5E7D	# <CJK>
-0xEAEC	0x5EBE	# <CJK>
-0xEAED	0x60A0	# <CJK>
-0xEAEE	0x60DF	# <CJK>
-0xEAEF	0x6108	# <CJK>
-0xEAF0	0x6109	# <CJK>
-0xEAF1	0x63C4	# <CJK>
-0xEAF2	0x6538	# <CJK>
-0xEAF3	0x6709	# <CJK>
-0xEAF4	0xF9C8	# <CJK>
-0xEAF5	0x67D4	# <CJK>
-0xEAF6	0x67DA	# <CJK>
-0xEAF7	0xF9C9	# <CJK>
-0xEAF8	0x6961	# <CJK>
-0xEAF9	0x6962	# <CJK>
-0xEAFA	0x6CB9	# <CJK>
-0xEAFB	0x6D27	# <CJK>
-0xEAFC	0xF9CA	# <CJK>
-0xEAFD	0x6E38	# <CJK>
-0xEAFE	0xF9CB	# <CJK>
-0xEBA1	0x6FE1	# <CJK>
-0xEBA2	0x7336	# <CJK>
-0xEBA3	0x7337	# <CJK>
-0xEBA4	0xF9CC	# <CJK>
-0xEBA5	0x745C	# <CJK>
-0xEBA6	0x7531	# <CJK>
-0xEBA7	0xF9CD	# <CJK>
-0xEBA8	0x7652	# <CJK>
-0xEBA9	0xF9CE	# <CJK>
-0xEBAA	0xF9CF	# <CJK>
-0xEBAB	0x7DAD	# <CJK>
-0xEBAC	0x81FE	# <CJK>
-0xEBAD	0x8438	# <CJK>
-0xEBAE	0x88D5	# <CJK>
-0xEBAF	0x8A98	# <CJK>
-0xEBB0	0x8ADB	# <CJK>
-0xEBB1	0x8AED	# <CJK>
-0xEBB2	0x8E30	# <CJK>
-0xEBB3	0x8E42	# <CJK>
-0xEBB4	0x904A	# <CJK>
-0xEBB5	0x903E	# <CJK>
-0xEBB6	0x907A	# <CJK>
-0xEBB7	0x9149	# <CJK>
-0xEBB8	0x91C9	# <CJK>
-0xEBB9	0x936E	# <CJK>
-0xEBBA	0xF9D0	# <CJK>
-0xEBBB	0xF9D1	# <CJK>
-0xEBBC	0x5809	# <CJK>
-0xEBBD	0xF9D2	# <CJK>
-0xEBBE	0x6BD3	# <CJK>
-0xEBBF	0x8089	# <CJK>
-0xEBC0	0x80B2	# <CJK>
-0xEBC1	0xF9D3	# <CJK>
-0xEBC2	0xF9D4	# <CJK>
-0xEBC3	0x5141	# <CJK>
-0xEBC4	0x596B	# <CJK>
-0xEBC5	0x5C39	# <CJK>
-0xEBC6	0xF9D5	# <CJK>
-0xEBC7	0xF9D6	# <CJK>
-0xEBC8	0x6F64	# <CJK>
-0xEBC9	0x73A7	# <CJK>
-0xEBCA	0x80E4	# <CJK>
-0xEBCB	0x8D07	# <CJK>
-0xEBCC	0xF9D7	# <CJK>
-0xEBCD	0x9217	# <CJK>
-0xEBCE	0x958F	# <CJK>
-0xEBCF	0xF9D8	# <CJK>
-0xEBD0	0xF9D9	# <CJK>
-0xEBD1	0xF9DA	# <CJK>
-0xEBD2	0xF9DB	# <CJK>
-0xEBD3	0x807F	# <CJK>
-0xEBD4	0x620E	# <CJK>
-0xEBD5	0x701C	# <CJK>
-0xEBD6	0x7D68	# <CJK>
-0xEBD7	0x878D	# <CJK>
-0xEBD8	0xF9DC	# <CJK>
-0xEBD9	0x57A0	# <CJK>
-0xEBDA	0x6069	# <CJK>
-0xEBDB	0x6147	# <CJK>
-0xEBDC	0x6BB7	# <CJK>
-0xEBDD	0x8ABE	# <CJK>
-0xEBDE	0x9280	# <CJK>
-0xEBDF	0x96B1	# <CJK>
-0xEBE0	0x4E59	# <CJK>
-0xEBE1	0x541F	# <CJK>
-0xEBE2	0x6DEB	# <CJK>
-0xEBE3	0x852D	# <CJK>
-0xEBE4	0x9670	# <CJK>
-0xEBE5	0x97F3	# <CJK>
-0xEBE6	0x98EE	# <CJK>
-0xEBE7	0x63D6	# <CJK>
-0xEBE8	0x6CE3	# <CJK>
-0xEBE9	0x9091	# <CJK>
-0xEBEA	0x51DD	# <CJK>
-0xEBEB	0x61C9	# <CJK>
-0xEBEC	0x81BA	# <CJK>
-0xEBED	0x9DF9	# <CJK>
-0xEBEE	0x4F9D	# <CJK>
-0xEBEF	0x501A	# <CJK>
-0xEBF0	0x5100	# <CJK>
-0xEBF1	0x5B9C	# <CJK>
-0xEBF2	0x610F	# <CJK>
-0xEBF3	0x61FF	# <CJK>
-0xEBF4	0x64EC	# <CJK>
-0xEBF5	0x6905	# <CJK>
-0xEBF6	0x6BC5	# <CJK>
-0xEBF7	0x7591	# <CJK>
-0xEBF8	0x77E3	# <CJK>
-0xEBF9	0x7FA9	# <CJK>
-0xEBFA	0x8264	# <CJK>
-0xEBFB	0x858F	# <CJK>
-0xEBFC	0x87FB	# <CJK>
-0xEBFD	0x8863	# <CJK>
-0xEBFE	0x8ABC	# <CJK>
-0xECA1	0x8B70	# <CJK>
-0xECA2	0x91AB	# <CJK>
-0xECA3	0x4E8C	# <CJK>
-0xECA4	0x4EE5	# <CJK>
-0xECA5	0x4F0A	# <CJK>
-0xECA6	0xF9DD	# <CJK>
-0xECA7	0xF9DE	# <CJK>
-0xECA8	0x5937	# <CJK>
-0xECA9	0x59E8	# <CJK>
-0xECAA	0xF9DF	# <CJK>
-0xECAB	0x5DF2	# <CJK>
-0xECAC	0x5F1B	# <CJK>
-0xECAD	0x5F5B	# <CJK>
-0xECAE	0x6021	# <CJK>
-0xECAF	0xF9E0	# <CJK>
-0xECB0	0xF9E1	# <CJK>
-0xECB1	0xF9E2	# <CJK>
-0xECB2	0xF9E3	# <CJK>
-0xECB3	0x723E	# <CJK>
-0xECB4	0x73E5	# <CJK>
-0xECB5	0xF9E4	# <CJK>
-0xECB6	0x7570	# <CJK>
-0xECB7	0x75CD	# <CJK>
-0xECB8	0xF9E5	# <CJK>
-0xECB9	0x79FB	# <CJK>
-0xECBA	0xF9E6	# <CJK>
-0xECBB	0x800C	# <CJK>
-0xECBC	0x8033	# <CJK>
-0xECBD	0x8084	# <CJK>
-0xECBE	0x82E1	# <CJK>
-0xECBF	0x8351	# <CJK>
-0xECC0	0xF9E7	# <CJK>
-0xECC1	0xF9E8	# <CJK>
-0xECC2	0x8CBD	# <CJK>
-0xECC3	0x8CB3	# <CJK>
-0xECC4	0x9087	# <CJK>
-0xECC5	0xF9E9	# <CJK>
-0xECC6	0xF9EA	# <CJK>
-0xECC7	0x98F4	# <CJK>
-0xECC8	0x990C	# <CJK>
-0xECC9	0xF9EB	# <CJK>
-0xECCA	0xF9EC	# <CJK>
-0xECCB	0x7037	# <CJK>
-0xECCC	0x76CA	# <CJK>
-0xECCD	0x7FCA	# <CJK>
-0xECCE	0x7FCC	# <CJK>
-0xECCF	0x7FFC	# <CJK>
-0xECD0	0x8B1A	# <CJK>
-0xECD1	0x4EBA	# <CJK>
-0xECD2	0x4EC1	# <CJK>
-0xECD3	0x5203	# <CJK>
-0xECD4	0x5370	# <CJK>
-0xECD5	0xF9ED	# <CJK>
-0xECD6	0x54BD	# <CJK>
-0xECD7	0x56E0	# <CJK>
-0xECD8	0x59FB	# <CJK>
-0xECD9	0x5BC5	# <CJK>
-0xECDA	0x5F15	# <CJK>
-0xECDB	0x5FCD	# <CJK>
-0xECDC	0x6E6E	# <CJK>
-0xECDD	0xF9EE	# <CJK>
-0xECDE	0xF9EF	# <CJK>
-0xECDF	0x7D6A	# <CJK>
-0xECE0	0x8335	# <CJK>
-0xECE1	0xF9F0	# <CJK>
-0xECE2	0x8693	# <CJK>
-0xECE3	0x8A8D	# <CJK>
-0xECE4	0xF9F1	# <CJK>
-0xECE5	0x976D	# <CJK>
-0xECE6	0x9777	# <CJK>
-0xECE7	0xF9F2	# <CJK>
-0xECE8	0xF9F3	# <CJK>
-0xECE9	0x4E00	# <CJK>
-0xECEA	0x4F5A	# <CJK>
-0xECEB	0x4F7E	# <CJK>
-0xECEC	0x58F9	# <CJK>
-0xECED	0x65E5	# <CJK>
-0xECEE	0x6EA2	# <CJK>
-0xECEF	0x9038	# <CJK>
-0xECF0	0x93B0	# <CJK>
-0xECF1	0x99B9	# <CJK>
-0xECF2	0x4EFB	# <CJK>
-0xECF3	0x58EC	# <CJK>
-0xECF4	0x598A	# <CJK>
-0xECF5	0x59D9	# <CJK>
-0xECF6	0x6041	# <CJK>
-0xECF7	0xF9F4	# <CJK>
-0xECF8	0xF9F5	# <CJK>
-0xECF9	0x7A14	# <CJK>
-0xECFA	0xF9F6	# <CJK>
-0xECFB	0x834F	# <CJK>
-0xECFC	0x8CC3	# <CJK>
-0xECFD	0x5165	# <CJK>
-0xECFE	0x5344	# <CJK>
-0xEDA1	0xF9F7	# <CJK>
-0xEDA2	0xF9F8	# <CJK>
-0xEDA3	0xF9F9	# <CJK>
-0xEDA4	0x4ECD	# <CJK>
-0xEDA5	0x5269	# <CJK>
-0xEDA6	0x5B55	# <CJK>
-0xEDA7	0x82BF	# <CJK>
-0xEDA8	0x4ED4	# <CJK>
-0xEDA9	0x523A	# <CJK>
-0xEDAA	0x54A8	# <CJK>
-0xEDAB	0x59C9	# <CJK>
-0xEDAC	0x59FF	# <CJK>
-0xEDAD	0x5B50	# <CJK>
-0xEDAE	0x5B57	# <CJK>
-0xEDAF	0x5B5C	# <CJK>
-0xEDB0	0x6063	# <CJK>
-0xEDB1	0x6148	# <CJK>
-0xEDB2	0x6ECB	# <CJK>
-0xEDB3	0x7099	# <CJK>
-0xEDB4	0x716E	# <CJK>
-0xEDB5	0x7386	# <CJK>
-0xEDB6	0x74F7	# <CJK>
-0xEDB7	0x75B5	# <CJK>
-0xEDB8	0x78C1	# <CJK>
-0xEDB9	0x7D2B	# <CJK>
-0xEDBA	0x8005	# <CJK>
-0xEDBB	0x81EA	# <CJK>
-0xEDBC	0x8328	# <CJK>
-0xEDBD	0x8517	# <CJK>
-0xEDBE	0x85C9	# <CJK>
-0xEDBF	0x8AEE	# <CJK>
-0xEDC0	0x8CC7	# <CJK>
-0xEDC1	0x96CC	# <CJK>
-0xEDC2	0x4F5C	# <CJK>
-0xEDC3	0x52FA	# <CJK>
-0xEDC4	0x56BC	# <CJK>
-0xEDC5	0x65AB	# <CJK>
-0xEDC6	0x6628	# <CJK>
-0xEDC7	0x707C	# <CJK>
-0xEDC8	0x70B8	# <CJK>
-0xEDC9	0x7235	# <CJK>
-0xEDCA	0x7DBD	# <CJK>
-0xEDCB	0x828D	# <CJK>
-0xEDCC	0x914C	# <CJK>
-0xEDCD	0x96C0	# <CJK>
-0xEDCE	0x9D72	# <CJK>
-0xEDCF	0x5B71	# <CJK>
-0xEDD0	0x68E7	# <CJK>
-0xEDD1	0x6B98	# <CJK>
-0xEDD2	0x6F7A	# <CJK>
-0xEDD3	0x76DE	# <CJK>
-0xEDD4	0x5C91	# <CJK>
-0xEDD5	0x66AB	# <CJK>
-0xEDD6	0x6F5B	# <CJK>
-0xEDD7	0x7BB4	# <CJK>
-0xEDD8	0x7C2A	# <CJK>
-0xEDD9	0x8836	# <CJK>
-0xEDDA	0x96DC	# <CJK>
-0xEDDB	0x4E08	# <CJK>
-0xEDDC	0x4ED7	# <CJK>
-0xEDDD	0x5320	# <CJK>
-0xEDDE	0x5834	# <CJK>
-0xEDDF	0x58BB	# <CJK>
-0xEDE0	0x58EF	# <CJK>
-0xEDE1	0x596C	# <CJK>
-0xEDE2	0x5C07	# <CJK>
-0xEDE3	0x5E33	# <CJK>
-0xEDE4	0x5E84	# <CJK>
-0xEDE5	0x5F35	# <CJK>
-0xEDE6	0x638C	# <CJK>
-0xEDE7	0x66B2	# <CJK>
-0xEDE8	0x6756	# <CJK>
-0xEDE9	0x6A1F	# <CJK>
-0xEDEA	0x6AA3	# <CJK>
-0xEDEB	0x6B0C	# <CJK>
-0xEDEC	0x6F3F	# <CJK>
-0xEDED	0x7246	# <CJK>
-0xEDEE	0xF9FA	# <CJK>
-0xEDEF	0x7350	# <CJK>
-0xEDF0	0x748B	# <CJK>
-0xEDF1	0x7AE0	# <CJK>
-0xEDF2	0x7CA7	# <CJK>
-0xEDF3	0x8178	# <CJK>
-0xEDF4	0x81DF	# <CJK>
-0xEDF5	0x81E7	# <CJK>
-0xEDF6	0x838A	# <CJK>
-0xEDF7	0x846C	# <CJK>
-0xEDF8	0x8523	# <CJK>
-0xEDF9	0x8594	# <CJK>
-0xEDFA	0x85CF	# <CJK>
-0xEDFB	0x88DD	# <CJK>
-0xEDFC	0x8D13	# <CJK>
-0xEDFD	0x91AC	# <CJK>
-0xEDFE	0x9577	# <CJK>
-0xEEA1	0x969C	# <CJK>
-0xEEA2	0x518D	# <CJK>
-0xEEA3	0x54C9	# <CJK>
-0xEEA4	0x5728	# <CJK>
-0xEEA5	0x5BB0	# <CJK>
-0xEEA6	0x624D	# <CJK>
-0xEEA7	0x6750	# <CJK>
-0xEEA8	0x683D	# <CJK>
-0xEEA9	0x6893	# <CJK>
-0xEEAA	0x6E3D	# <CJK>
-0xEEAB	0x6ED3	# <CJK>
-0xEEAC	0x707D	# <CJK>
-0xEEAD	0x7E21	# <CJK>
-0xEEAE	0x88C1	# <CJK>
-0xEEAF	0x8CA1	# <CJK>
-0xEEB0	0x8F09	# <CJK>
-0xEEB1	0x9F4B	# <CJK>
-0xEEB2	0x9F4E	# <CJK>
-0xEEB3	0x722D	# <CJK>
-0xEEB4	0x7B8F	# <CJK>
-0xEEB5	0x8ACD	# <CJK>
-0xEEB6	0x931A	# <CJK>
-0xEEB7	0x4F47	# <CJK>
-0xEEB8	0x4F4E	# <CJK>
-0xEEB9	0x5132	# <CJK>
-0xEEBA	0x5480	# <CJK>
-0xEEBB	0x59D0	# <CJK>
-0xEEBC	0x5E95	# <CJK>
-0xEEBD	0x62B5	# <CJK>
-0xEEBE	0x6775	# <CJK>
-0xEEBF	0x696E	# <CJK>
-0xEEC0	0x6A17	# <CJK>
-0xEEC1	0x6CAE	# <CJK>
-0xEEC2	0x6E1A	# <CJK>
-0xEEC3	0x72D9	# <CJK>
-0xEEC4	0x732A	# <CJK>
-0xEEC5	0x75BD	# <CJK>
-0xEEC6	0x7BB8	# <CJK>
-0xEEC7	0x7D35	# <CJK>
-0xEEC8	0x82E7	# <CJK>
-0xEEC9	0x83F9	# <CJK>
-0xEECA	0x8457	# <CJK>
-0xEECB	0x85F7	# <CJK>
-0xEECC	0x8A5B	# <CJK>
-0xEECD	0x8CAF	# <CJK>
-0xEECE	0x8E87	# <CJK>
-0xEECF	0x9019	# <CJK>
-0xEED0	0x90B8	# <CJK>
-0xEED1	0x96CE	# <CJK>
-0xEED2	0x9F5F	# <CJK>
-0xEED3	0x52E3	# <CJK>
-0xEED4	0x540A	# <CJK>
-0xEED5	0x5AE1	# <CJK>
-0xEED6	0x5BC2	# <CJK>
-0xEED7	0x6458	# <CJK>
-0xEED8	0x6575	# <CJK>
-0xEED9	0x6EF4	# <CJK>
-0xEEDA	0x72C4	# <CJK>
-0xEEDB	0xF9FB	# <CJK>
-0xEEDC	0x7684	# <CJK>
-0xEEDD	0x7A4D	# <CJK>
-0xEEDE	0x7B1B	# <CJK>
-0xEEDF	0x7C4D	# <CJK>
-0xEEE0	0x7E3E	# <CJK>
-0xEEE1	0x7FDF	# <CJK>
-0xEEE2	0x837B	# <CJK>
-0xEEE3	0x8B2B	# <CJK>
-0xEEE4	0x8CCA	# <CJK>
-0xEEE5	0x8D64	# <CJK>
-0xEEE6	0x8DE1	# <CJK>
-0xEEE7	0x8E5F	# <CJK>
-0xEEE8	0x8FEA	# <CJK>
-0xEEE9	0x8FF9	# <CJK>
-0xEEEA	0x9069	# <CJK>
-0xEEEB	0x93D1	# <CJK>
-0xEEEC	0x4F43	# <CJK>
-0xEEED	0x4F7A	# <CJK>
-0xEEEE	0x50B3	# <CJK>
-0xEEEF	0x5168	# <CJK>
-0xEEF0	0x5178	# <CJK>
-0xEEF1	0x524D	# <CJK>
-0xEEF2	0x526A	# <CJK>
-0xEEF3	0x5861	# <CJK>
-0xEEF4	0x587C	# <CJK>
-0xEEF5	0x5960	# <CJK>
-0xEEF6	0x5C08	# <CJK>
-0xEEF7	0x5C55	# <CJK>
-0xEEF8	0x5EDB	# <CJK>
-0xEEF9	0x609B	# <CJK>
-0xEEFA	0x6230	# <CJK>
-0xEEFB	0x6813	# <CJK>
-0xEEFC	0x6BBF	# <CJK>
-0xEEFD	0x6C08	# <CJK>
-0xEEFE	0x6FB1	# <CJK>
-0xEFA1	0x714E	# <CJK>
-0xEFA2	0x7420	# <CJK>
-0xEFA3	0x7530	# <CJK>
-0xEFA4	0x7538	# <CJK>
-0xEFA5	0x7551	# <CJK>
-0xEFA6	0x7672	# <CJK>
-0xEFA7	0x7B4C	# <CJK>
-0xEFA8	0x7B8B	# <CJK>
-0xEFA9	0x7BAD	# <CJK>
-0xEFAA	0x7BC6	# <CJK>
-0xEFAB	0x7E8F	# <CJK>
-0xEFAC	0x8A6E	# <CJK>
-0xEFAD	0x8F3E	# <CJK>
-0xEFAE	0x8F49	# <CJK>
-0xEFAF	0x923F	# <CJK>
-0xEFB0	0x9293	# <CJK>
-0xEFB1	0x9322	# <CJK>
-0xEFB2	0x942B	# <CJK>
-0xEFB3	0x96FB	# <CJK>
-0xEFB4	0x985A	# <CJK>
-0xEFB5	0x986B	# <CJK>
-0xEFB6	0x991E	# <CJK>
-0xEFB7	0x5207	# <CJK>
-0xEFB8	0x622A	# <CJK>
-0xEFB9	0x6298	# <CJK>
-0xEFBA	0x6D59	# <CJK>
-0xEFBB	0x7664	# <CJK>
-0xEFBC	0x7ACA	# <CJK>
-0xEFBD	0x7BC0	# <CJK>
-0xEFBE	0x7D76	# <CJK>
-0xEFBF	0x5360	# <CJK>
-0xEFC0	0x5CBE	# <CJK>
-0xEFC1	0x5E97	# <CJK>
-0xEFC2	0x6F38	# <CJK>
-0xEFC3	0x70B9	# <CJK>
-0xEFC4	0x7C98	# <CJK>
-0xEFC5	0x9711	# <CJK>
-0xEFC6	0x9B8E	# <CJK>
-0xEFC7	0x9EDE	# <CJK>
-0xEFC8	0x63A5	# <CJK>
-0xEFC9	0x647A	# <CJK>
-0xEFCA	0x8776	# <CJK>
-0xEFCB	0x4E01	# <CJK>
-0xEFCC	0x4E95	# <CJK>
-0xEFCD	0x4EAD	# <CJK>
-0xEFCE	0x505C	# <CJK>
-0xEFCF	0x5075	# <CJK>
-0xEFD0	0x5448	# <CJK>
-0xEFD1	0x59C3	# <CJK>
-0xEFD2	0x5B9A	# <CJK>
-0xEFD3	0x5E40	# <CJK>
-0xEFD4	0x5EAD	# <CJK>
-0xEFD5	0x5EF7	# <CJK>
-0xEFD6	0x5F81	# <CJK>
-0xEFD7	0x60C5	# <CJK>
-0xEFD8	0x633A	# <CJK>
-0xEFD9	0x653F	# <CJK>
-0xEFDA	0x6574	# <CJK>
-0xEFDB	0x65CC	# <CJK>
-0xEFDC	0x6676	# <CJK>
-0xEFDD	0x6678	# <CJK>
-0xEFDE	0x67FE	# <CJK>
-0xEFDF	0x6968	# <CJK>
-0xEFE0	0x6A89	# <CJK>
-0xEFE1	0x6B63	# <CJK>
-0xEFE2	0x6C40	# <CJK>
-0xEFE3	0x6DC0	# <CJK>
-0xEFE4	0x6DE8	# <CJK>
-0xEFE5	0x6E1F	# <CJK>
-0xEFE6	0x6E5E	# <CJK>
-0xEFE7	0x701E	# <CJK>
-0xEFE8	0x70A1	# <CJK>
-0xEFE9	0x738E	# <CJK>
-0xEFEA	0x73FD	# <CJK>
-0xEFEB	0x753A	# <CJK>
-0xEFEC	0x775B	# <CJK>
-0xEFED	0x7887	# <CJK>
-0xEFEE	0x798E	# <CJK>
-0xEFEF	0x7A0B	# <CJK>
-0xEFF0	0x7A7D	# <CJK>
-0xEFF1	0x7CBE	# <CJK>
-0xEFF2	0x7D8E	# <CJK>
-0xEFF3	0x8247	# <CJK>
-0xEFF4	0x8A02	# <CJK>
-0xEFF5	0x8AEA	# <CJK>
-0xEFF6	0x8C9E	# <CJK>
-0xEFF7	0x912D	# <CJK>
-0xEFF8	0x914A	# <CJK>
-0xEFF9	0x91D8	# <CJK>
-0xEFFA	0x9266	# <CJK>
-0xEFFB	0x92CC	# <CJK>
-0xEFFC	0x9320	# <CJK>
-0xEFFD	0x9706	# <CJK>
-0xEFFE	0x9756	# <CJK>
-0xF0A1	0x975C	# <CJK>
-0xF0A2	0x9802	# <CJK>
-0xF0A3	0x9F0E	# <CJK>
-0xF0A4	0x5236	# <CJK>
-0xF0A5	0x5291	# <CJK>
-0xF0A6	0x557C	# <CJK>
-0xF0A7	0x5824	# <CJK>
-0xF0A8	0x5E1D	# <CJK>
-0xF0A9	0x5F1F	# <CJK>
-0xF0AA	0x608C	# <CJK>
-0xF0AB	0x63D0	# <CJK>
-0xF0AC	0x68AF	# <CJK>
-0xF0AD	0x6FDF	# <CJK>
-0xF0AE	0x796D	# <CJK>
-0xF0AF	0x7B2C	# <CJK>
-0xF0B0	0x81CD	# <CJK>
-0xF0B1	0x85BA	# <CJK>
-0xF0B2	0x88FD	# <CJK>
-0xF0B3	0x8AF8	# <CJK>
-0xF0B4	0x8E44	# <CJK>
-0xF0B5	0x918D	# <CJK>
-0xF0B6	0x9664	# <CJK>
-0xF0B7	0x969B	# <CJK>
-0xF0B8	0x973D	# <CJK>
-0xF0B9	0x984C	# <CJK>
-0xF0BA	0x9F4A	# <CJK>
-0xF0BB	0x4FCE	# <CJK>
-0xF0BC	0x5146	# <CJK>
-0xF0BD	0x51CB	# <CJK>
-0xF0BE	0x52A9	# <CJK>
-0xF0BF	0x5632	# <CJK>
-0xF0C0	0x5F14	# <CJK>
-0xF0C1	0x5F6B	# <CJK>
-0xF0C2	0x63AA	# <CJK>
-0xF0C3	0x64CD	# <CJK>
-0xF0C4	0x65E9	# <CJK>
-0xF0C5	0x6641	# <CJK>
-0xF0C6	0x66FA	# <CJK>
-0xF0C7	0x66F9	# <CJK>
-0xF0C8	0x671D	# <CJK>
-0xF0C9	0x689D	# <CJK>
-0xF0CA	0x68D7	# <CJK>
-0xF0CB	0x69FD	# <CJK>
-0xF0CC	0x6F15	# <CJK>
-0xF0CD	0x6F6E	# <CJK>
-0xF0CE	0x7167	# <CJK>
-0xF0CF	0x71E5	# <CJK>
-0xF0D0	0x722A	# <CJK>
-0xF0D1	0x74AA	# <CJK>
-0xF0D2	0x773A	# <CJK>
-0xF0D3	0x7956	# <CJK>
-0xF0D4	0x795A	# <CJK>
-0xF0D5	0x79DF	# <CJK>
-0xF0D6	0x7A20	# <CJK>
-0xF0D7	0x7A95	# <CJK>
-0xF0D8	0x7C97	# <CJK>
-0xF0D9	0x7CDF	# <CJK>
-0xF0DA	0x7D44	# <CJK>
-0xF0DB	0x7E70	# <CJK>
-0xF0DC	0x8087	# <CJK>
-0xF0DD	0x85FB	# <CJK>
-0xF0DE	0x86A4	# <CJK>
-0xF0DF	0x8A54	# <CJK>
-0xF0E0	0x8ABF	# <CJK>
-0xF0E1	0x8D99	# <CJK>
-0xF0E2	0x8E81	# <CJK>
-0xF0E3	0x9020	# <CJK>
-0xF0E4	0x906D	# <CJK>
-0xF0E5	0x91E3	# <CJK>
-0xF0E6	0x963B	# <CJK>
-0xF0E7	0x96D5	# <CJK>
-0xF0E8	0x9CE5	# <CJK>
-0xF0E9	0x65CF	# <CJK>
-0xF0EA	0x7C07	# <CJK>
-0xF0EB	0x8DB3	# <CJK>
-0xF0EC	0x93C3	# <CJK>
-0xF0ED	0x5B58	# <CJK>
-0xF0EE	0x5C0A	# <CJK>
-0xF0EF	0x5352	# <CJK>
-0xF0F0	0x62D9	# <CJK>
-0xF0F1	0x731D	# <CJK>
-0xF0F2	0x5027	# <CJK>
-0xF0F3	0x5B97	# <CJK>
-0xF0F4	0x5F9E	# <CJK>
-0xF0F5	0x60B0	# <CJK>
-0xF0F6	0x616B	# <CJK>
-0xF0F7	0x68D5	# <CJK>
-0xF0F8	0x6DD9	# <CJK>
-0xF0F9	0x742E	# <CJK>
-0xF0FA	0x7A2E	# <CJK>
-0xF0FB	0x7D42	# <CJK>
-0xF0FC	0x7D9C	# <CJK>
-0xF0FD	0x7E31	# <CJK>
-0xF0FE	0x816B	# <CJK>
-0xF1A1	0x8E2A	# <CJK>
-0xF1A2	0x8E35	# <CJK>
-0xF1A3	0x937E	# <CJK>
-0xF1A4	0x9418	# <CJK>
-0xF1A5	0x4F50	# <CJK>
-0xF1A6	0x5750	# <CJK>
-0xF1A7	0x5DE6	# <CJK>
-0xF1A8	0x5EA7	# <CJK>
-0xF1A9	0x632B	# <CJK>
-0xF1AA	0x7F6A	# <CJK>
-0xF1AB	0x4E3B	# <CJK>
-0xF1AC	0x4F4F	# <CJK>
-0xF1AD	0x4F8F	# <CJK>
-0xF1AE	0x505A	# <CJK>
-0xF1AF	0x59DD	# <CJK>
-0xF1B0	0x80C4	# <CJK>
-0xF1B1	0x546A	# <CJK>
-0xF1B2	0x5468	# <CJK>
-0xF1B3	0x55FE	# <CJK>
-0xF1B4	0x594F	# <CJK>
-0xF1B5	0x5B99	# <CJK>
-0xF1B6	0x5DDE	# <CJK>
-0xF1B7	0x5EDA	# <CJK>
-0xF1B8	0x665D	# <CJK>
-0xF1B9	0x6731	# <CJK>
-0xF1BA	0x67F1	# <CJK>
-0xF1BB	0x682A	# <CJK>
-0xF1BC	0x6CE8	# <CJK>
-0xF1BD	0x6D32	# <CJK>
-0xF1BE	0x6E4A	# <CJK>
-0xF1BF	0x6F8D	# <CJK>
-0xF1C0	0x70B7	# <CJK>
-0xF1C1	0x73E0	# <CJK>
-0xF1C2	0x7587	# <CJK>
-0xF1C3	0x7C4C	# <CJK>
-0xF1C4	0x7D02	# <CJK>
-0xF1C5	0x7D2C	# <CJK>
-0xF1C6	0x7DA2	# <CJK>
-0xF1C7	0x821F	# <CJK>
-0xF1C8	0x86DB	# <CJK>
-0xF1C9	0x8A3B	# <CJK>
-0xF1CA	0x8A85	# <CJK>
-0xF1CB	0x8D70	# <CJK>
-0xF1CC	0x8E8A	# <CJK>
-0xF1CD	0x8F33	# <CJK>
-0xF1CE	0x9031	# <CJK>
-0xF1CF	0x914E	# <CJK>
-0xF1D0	0x9152	# <CJK>
-0xF1D1	0x9444	# <CJK>
-0xF1D2	0x99D0	# <CJK>
-0xF1D3	0x7AF9	# <CJK>
-0xF1D4	0x7CA5	# <CJK>
-0xF1D5	0x4FCA	# <CJK>
-0xF1D6	0x5101	# <CJK>
-0xF1D7	0x51C6	# <CJK>
-0xF1D8	0x57C8	# <CJK>
-0xF1D9	0x5BEF	# <CJK>
-0xF1DA	0x5CFB	# <CJK>
-0xF1DB	0x6659	# <CJK>
-0xF1DC	0x6A3D	# <CJK>
-0xF1DD	0x6D5A	# <CJK>
-0xF1DE	0x6E96	# <CJK>
-0xF1DF	0x6FEC	# <CJK>
-0xF1E0	0x710C	# <CJK>
-0xF1E1	0x756F	# <CJK>
-0xF1E2	0x7AE3	# <CJK>
-0xF1E3	0x8822	# <CJK>
-0xF1E4	0x9021	# <CJK>
-0xF1E5	0x9075	# <CJK>
-0xF1E6	0x96CB	# <CJK>
-0xF1E7	0x99FF	# <CJK>
-0xF1E8	0x8301	# <CJK>
-0xF1E9	0x4E2D	# <CJK>
-0xF1EA	0x4EF2	# <CJK>
-0xF1EB	0x8846	# <CJK>
-0xF1EC	0x91CD	# <CJK>
-0xF1ED	0x537D	# <CJK>
-0xF1EE	0x6ADB	# <CJK>
-0xF1EF	0x696B	# <CJK>
-0xF1F0	0x6C41	# <CJK>
-0xF1F1	0x847A	# <CJK>
-0xF1F2	0x589E	# <CJK>
-0xF1F3	0x618E	# <CJK>
-0xF1F4	0x66FE	# <CJK>
-0xF1F5	0x62EF	# <CJK>
-0xF1F6	0x70DD	# <CJK>
-0xF1F7	0x7511	# <CJK>
-0xF1F8	0x75C7	# <CJK>
-0xF1F9	0x7E52	# <CJK>
-0xF1FA	0x84B8	# <CJK>
-0xF1FB	0x8B49	# <CJK>
-0xF1FC	0x8D08	# <CJK>
-0xF1FD	0x4E4B	# <CJK>
-0xF1FE	0x53EA	# <CJK>
-0xF2A1	0x54AB	# <CJK>
-0xF2A2	0x5730	# <CJK>
-0xF2A3	0x5740	# <CJK>
-0xF2A4	0x5FD7	# <CJK>
-0xF2A5	0x6301	# <CJK>
-0xF2A6	0x6307	# <CJK>
-0xF2A7	0x646F	# <CJK>
-0xF2A8	0x652F	# <CJK>
-0xF2A9	0x65E8	# <CJK>
-0xF2AA	0x667A	# <CJK>
-0xF2AB	0x679D	# <CJK>
-0xF2AC	0x67B3	# <CJK>
-0xF2AD	0x6B62	# <CJK>
-0xF2AE	0x6C60	# <CJK>
-0xF2AF	0x6C9A	# <CJK>
-0xF2B0	0x6F2C	# <CJK>
-0xF2B1	0x77E5	# <CJK>
-0xF2B2	0x7825	# <CJK>
-0xF2B3	0x7949	# <CJK>
-0xF2B4	0x7957	# <CJK>
-0xF2B5	0x7D19	# <CJK>
-0xF2B6	0x80A2	# <CJK>
-0xF2B7	0x8102	# <CJK>
-0xF2B8	0x81F3	# <CJK>
-0xF2B9	0x829D	# <CJK>
-0xF2BA	0x82B7	# <CJK>
-0xF2BB	0x8718	# <CJK>
-0xF2BC	0x8A8C	# <CJK>
-0xF2BD	0xF9FC	# <CJK>
-0xF2BE	0x8D04	# <CJK>
-0xF2BF	0x8DBE	# <CJK>
-0xF2C0	0x9072	# <CJK>
-0xF2C1	0x76F4	# <CJK>
-0xF2C2	0x7A19	# <CJK>
-0xF2C3	0x7A37	# <CJK>
-0xF2C4	0x7E54	# <CJK>
-0xF2C5	0x8077	# <CJK>
-0xF2C6	0x5507	# <CJK>
-0xF2C7	0x55D4	# <CJK>
-0xF2C8	0x5875	# <CJK>
-0xF2C9	0x632F	# <CJK>
-0xF2CA	0x6422	# <CJK>
-0xF2CB	0x6649	# <CJK>
-0xF2CC	0x664B	# <CJK>
-0xF2CD	0x686D	# <CJK>
-0xF2CE	0x699B	# <CJK>
-0xF2CF	0x6B84	# <CJK>
-0xF2D0	0x6D25	# <CJK>
-0xF2D1	0x6EB1	# <CJK>
-0xF2D2	0x73CD	# <CJK>
-0xF2D3	0x7468	# <CJK>
-0xF2D4	0x74A1	# <CJK>
-0xF2D5	0x755B	# <CJK>
-0xF2D6	0x75B9	# <CJK>
-0xF2D7	0x76E1	# <CJK>
-0xF2D8	0x771E	# <CJK>
-0xF2D9	0x778B	# <CJK>
-0xF2DA	0x79E6	# <CJK>
-0xF2DB	0x7E09	# <CJK>
-0xF2DC	0x7E1D	# <CJK>
-0xF2DD	0x81FB	# <CJK>
-0xF2DE	0x852F	# <CJK>
-0xF2DF	0x8897	# <CJK>
-0xF2E0	0x8A3A	# <CJK>
-0xF2E1	0x8CD1	# <CJK>
-0xF2E2	0x8EEB	# <CJK>
-0xF2E3	0x8FB0	# <CJK>
-0xF2E4	0x9032	# <CJK>
-0xF2E5	0x93AD	# <CJK>
-0xF2E6	0x9663	# <CJK>
-0xF2E7	0x9673	# <CJK>
-0xF2E8	0x9707	# <CJK>
-0xF2E9	0x4F84	# <CJK>
-0xF2EA	0x53F1	# <CJK>
-0xF2EB	0x59EA	# <CJK>
-0xF2EC	0x5AC9	# <CJK>
-0xF2ED	0x5E19	# <CJK>
-0xF2EE	0x684E	# <CJK>
-0xF2EF	0x74C6	# <CJK>
-0xF2F0	0x75BE	# <CJK>
-0xF2F1	0x79E9	# <CJK>
-0xF2F2	0x7A92	# <CJK>
-0xF2F3	0x81A3	# <CJK>
-0xF2F4	0x86ED	# <CJK>
-0xF2F5	0x8CEA	# <CJK>
-0xF2F6	0x8DCC	# <CJK>
-0xF2F7	0x8FED	# <CJK>
-0xF2F8	0x659F	# <CJK>
-0xF2F9	0x6715	# <CJK>
-0xF2FA	0xF9FD	# <CJK>
-0xF2FB	0x57F7	# <CJK>
-0xF2FC	0x6F57	# <CJK>
-0xF2FD	0x7DDD	# <CJK>
-0xF2FE	0x8F2F	# <CJK>
-0xF3A1	0x93F6	# <CJK>
-0xF3A2	0x96C6	# <CJK>
-0xF3A3	0x5FB5	# <CJK>
-0xF3A4	0x61F2	# <CJK>
-0xF3A5	0x6F84	# <CJK>
-0xF3A6	0x4E14	# <CJK>
-0xF3A7	0x4F98	# <CJK>
-0xF3A8	0x501F	# <CJK>
-0xF3A9	0x53C9	# <CJK>
-0xF3AA	0x55DF	# <CJK>
-0xF3AB	0x5D6F	# <CJK>
-0xF3AC	0x5DEE	# <CJK>
-0xF3AD	0x6B21	# <CJK>
-0xF3AE	0x6B64	# <CJK>
-0xF3AF	0x78CB	# <CJK>
-0xF3B0	0x7B9A	# <CJK>
-0xF3B1	0xF9FE	# <CJK>
-0xF3B2	0x8E49	# <CJK>
-0xF3B3	0x8ECA	# <CJK>
-0xF3B4	0x906E	# <CJK>
-0xF3B5	0x6349	# <CJK>
-0xF3B6	0x643E	# <CJK>
-0xF3B7	0x7740	# <CJK>
-0xF3B8	0x7A84	# <CJK>
-0xF3B9	0x932F	# <CJK>
-0xF3BA	0x947F	# <CJK>
-0xF3BB	0x9F6A	# <CJK>
-0xF3BC	0x64B0	# <CJK>
-0xF3BD	0x6FAF	# <CJK>
-0xF3BE	0x71E6	# <CJK>
-0xF3BF	0x74A8	# <CJK>
-0xF3C0	0x74DA	# <CJK>
-0xF3C1	0x7AC4	# <CJK>
-0xF3C2	0x7C12	# <CJK>
-0xF3C3	0x7E82	# <CJK>
-0xF3C4	0x7CB2	# <CJK>
-0xF3C5	0x7E98	# <CJK>
-0xF3C6	0x8B9A	# <CJK>
-0xF3C7	0x8D0A	# <CJK>
-0xF3C8	0x947D	# <CJK>
-0xF3C9	0x9910	# <CJK>
-0xF3CA	0x994C	# <CJK>
-0xF3CB	0x5239	# <CJK>
-0xF3CC	0x5BDF	# <CJK>
-0xF3CD	0x64E6	# <CJK>
-0xF3CE	0x672D	# <CJK>
-0xF3CF	0x7D2E	# <CJK>
-0xF3D0	0x50ED	# <CJK>
-0xF3D1	0x53C3	# <CJK>
-0xF3D2	0x5879	# <CJK>
-0xF3D3	0x6158	# <CJK>
-0xF3D4	0x6159	# <CJK>
-0xF3D5	0x61FA	# <CJK>
-0xF3D6	0x65AC	# <CJK>
-0xF3D7	0x7AD9	# <CJK>
-0xF3D8	0x8B92	# <CJK>
-0xF3D9	0x8B96	# <CJK>
-0xF3DA	0x5009	# <CJK>
-0xF3DB	0x5021	# <CJK>
-0xF3DC	0x5275	# <CJK>
-0xF3DD	0x5531	# <CJK>
-0xF3DE	0x5A3C	# <CJK>
-0xF3DF	0x5EE0	# <CJK>
-0xF3E0	0x5F70	# <CJK>
-0xF3E1	0x6134	# <CJK>
-0xF3E2	0x655E	# <CJK>
-0xF3E3	0x660C	# <CJK>
-0xF3E4	0x6636	# <CJK>
-0xF3E5	0x66A2	# <CJK>
-0xF3E6	0x69CD	# <CJK>
-0xF3E7	0x6EC4	# <CJK>
-0xF3E8	0x6F32	# <CJK>
-0xF3E9	0x7316	# <CJK>
-0xF3EA	0x7621	# <CJK>
-0xF3EB	0x7A93	# <CJK>
-0xF3EC	0x8139	# <CJK>
-0xF3ED	0x8259	# <CJK>
-0xF3EE	0x83D6	# <CJK>
-0xF3EF	0x84BC	# <CJK>
-0xF3F0	0x50B5	# <CJK>
-0xF3F1	0x57F0	# <CJK>
-0xF3F2	0x5BC0	# <CJK>
-0xF3F3	0x5BE8	# <CJK>
-0xF3F4	0x5F69	# <CJK>
-0xF3F5	0x63A1	# <CJK>
-0xF3F6	0x7826	# <CJK>
-0xF3F7	0x7DB5	# <CJK>
-0xF3F8	0x83DC	# <CJK>
-0xF3F9	0x8521	# <CJK>
-0xF3FA	0x91C7	# <CJK>
-0xF3FB	0x91F5	# <CJK>
-0xF3FC	0x518A	# <CJK>
-0xF3FD	0x67F5	# <CJK>
-0xF3FE	0x7B56	# <CJK>
-0xF4A1	0x8CAC	# <CJK>
-0xF4A2	0x51C4	# <CJK>
-0xF4A3	0x59BB	# <CJK>
-0xF4A4	0x60BD	# <CJK>
-0xF4A5	0x8655	# <CJK>
-0xF4A6	0x501C	# <CJK>
-0xF4A7	0xF9FF	# <CJK>
-0xF4A8	0x5254	# <CJK>
-0xF4A9	0x5C3A	# <CJK>
-0xF4AA	0x617D	# <CJK>
-0xF4AB	0x621A	# <CJK>
-0xF4AC	0x62D3	# <CJK>
-0xF4AD	0x64F2	# <CJK>
-0xF4AE	0x65A5	# <CJK>
-0xF4AF	0x6ECC	# <CJK>
-0xF4B0	0x7620	# <CJK>
-0xF4B1	0x810A	# <CJK>
-0xF4B2	0x8E60	# <CJK>
-0xF4B3	0x965F	# <CJK>
-0xF4B4	0x96BB	# <CJK>
-0xF4B5	0x4EDF	# <CJK>
-0xF4B6	0x5343	# <CJK>
-0xF4B7	0x5598	# <CJK>
-0xF4B8	0x5929	# <CJK>
-0xF4B9	0x5DDD	# <CJK>
-0xF4BA	0x64C5	# <CJK>
-0xF4BB	0x6CC9	# <CJK>
-0xF4BC	0x6DFA	# <CJK>
-0xF4BD	0x7394	# <CJK>
-0xF4BE	0x7A7F	# <CJK>
-0xF4BF	0x821B	# <CJK>
-0xF4C0	0x85A6	# <CJK>
-0xF4C1	0x8CE4	# <CJK>
-0xF4C2	0x8E10	# <CJK>
-0xF4C3	0x9077	# <CJK>
-0xF4C4	0x91E7	# <CJK>
-0xF4C5	0x95E1	# <CJK>
-0xF4C6	0x9621	# <CJK>
-0xF4C7	0x97C6	# <CJK>
-0xF4C8	0x51F8	# <CJK>
-0xF4C9	0x54F2	# <CJK>
-0xF4CA	0x5586	# <CJK>
-0xF4CB	0x5FB9	# <CJK>
-0xF4CC	0x64A4	# <CJK>
-0xF4CD	0x6F88	# <CJK>
-0xF4CE	0x7DB4	# <CJK>
-0xF4CF	0x8F1F	# <CJK>
-0xF4D0	0x8F4D	# <CJK>
-0xF4D1	0x9435	# <CJK>
-0xF4D2	0x50C9	# <CJK>
-0xF4D3	0x5C16	# <CJK>
-0xF4D4	0x6CBE	# <CJK>
-0xF4D5	0x6DFB	# <CJK>
-0xF4D6	0x751B	# <CJK>
-0xF4D7	0x77BB	# <CJK>
-0xF4D8	0x7C3D	# <CJK>
-0xF4D9	0x7C64	# <CJK>
-0xF4DA	0x8A79	# <CJK>
-0xF4DB	0x8AC2	# <CJK>
-0xF4DC	0x581E	# <CJK>
-0xF4DD	0x59BE	# <CJK>
-0xF4DE	0x5E16	# <CJK>
-0xF4DF	0x6377	# <CJK>
-0xF4E0	0x7252	# <CJK>
-0xF4E1	0x758A	# <CJK>
-0xF4E2	0x776B	# <CJK>
-0xF4E3	0x8ADC	# <CJK>
-0xF4E4	0x8CBC	# <CJK>
-0xF4E5	0x8F12	# <CJK>
-0xF4E6	0x5EF3	# <CJK>
-0xF4E7	0x6674	# <CJK>
-0xF4E8	0x6DF8	# <CJK>
-0xF4E9	0x807D	# <CJK>
-0xF4EA	0x83C1	# <CJK>
-0xF4EB	0x8ACB	# <CJK>
-0xF4EC	0x9751	# <CJK>
-0xF4ED	0x9BD6	# <CJK>
-0xF4EE	0xFA00	# <CJK>
-0xF4EF	0x5243	# <CJK>
-0xF4F0	0x66FF	# <CJK>
-0xF4F1	0x6D95	# <CJK>
-0xF4F2	0x6EEF	# <CJK>
-0xF4F3	0x7DE0	# <CJK>
-0xF4F4	0x8AE6	# <CJK>
-0xF4F5	0x902E	# <CJK>
-0xF4F6	0x905E	# <CJK>
-0xF4F7	0x9AD4	# <CJK>
-0xF4F8	0x521D	# <CJK>
-0xF4F9	0x527F	# <CJK>
-0xF4FA	0x54E8	# <CJK>
-0xF4FB	0x6194	# <CJK>
-0xF4FC	0x6284	# <CJK>
-0xF4FD	0x62DB	# <CJK>
-0xF4FE	0x68A2	# <CJK>
-0xF5A1	0x6912	# <CJK>
-0xF5A2	0x695A	# <CJK>
-0xF5A3	0x6A35	# <CJK>
-0xF5A4	0x7092	# <CJK>
-0xF5A5	0x7126	# <CJK>
-0xF5A6	0x785D	# <CJK>
-0xF5A7	0x7901	# <CJK>
-0xF5A8	0x790E	# <CJK>
-0xF5A9	0x79D2	# <CJK>
-0xF5AA	0x7A0D	# <CJK>
-0xF5AB	0x8096	# <CJK>
-0xF5AC	0x8278	# <CJK>
-0xF5AD	0x82D5	# <CJK>
-0xF5AE	0x8349	# <CJK>
-0xF5AF	0x8549	# <CJK>
-0xF5B0	0x8C82	# <CJK>
-0xF5B1	0x8D85	# <CJK>
-0xF5B2	0x9162	# <CJK>
-0xF5B3	0x918B	# <CJK>
-0xF5B4	0x91AE	# <CJK>
-0xF5B5	0x4FC3	# <CJK>
-0xF5B6	0x56D1	# <CJK>
-0xF5B7	0x71ED	# <CJK>
-0xF5B8	0x77D7	# <CJK>
-0xF5B9	0x8700	# <CJK>
-0xF5BA	0x89F8	# <CJK>
-0xF5BB	0x5BF8	# <CJK>
-0xF5BC	0x5FD6	# <CJK>
-0xF5BD	0x6751	# <CJK>
-0xF5BE	0x90A8	# <CJK>
-0xF5BF	0x53E2	# <CJK>
-0xF5C0	0x585A	# <CJK>
-0xF5C1	0x5BF5	# <CJK>
-0xF5C2	0x60A4	# <CJK>
-0xF5C3	0x6181	# <CJK>
-0xF5C4	0x6460	# <CJK>
-0xF5C5	0x7E3D	# <CJK>
-0xF5C6	0x8070	# <CJK>
-0xF5C7	0x8525	# <CJK>
-0xF5C8	0x9283	# <CJK>
-0xF5C9	0x64AE	# <CJK>
-0xF5CA	0x50AC	# <CJK>
-0xF5CB	0x5D14	# <CJK>
-0xF5CC	0x6700	# <CJK>
-0xF5CD	0x589C	# <CJK>
-0xF5CE	0x62BD	# <CJK>
-0xF5CF	0x63A8	# <CJK>
-0xF5D0	0x690E	# <CJK>
-0xF5D1	0x6978	# <CJK>
-0xF5D2	0x6A1E	# <CJK>
-0xF5D3	0x6E6B	# <CJK>
-0xF5D4	0x76BA	# <CJK>
-0xF5D5	0x79CB	# <CJK>
-0xF5D6	0x82BB	# <CJK>
-0xF5D7	0x8429	# <CJK>
-0xF5D8	0x8ACF	# <CJK>
-0xF5D9	0x8DA8	# <CJK>
-0xF5DA	0x8FFD	# <CJK>
-0xF5DB	0x9112	# <CJK>
-0xF5DC	0x914B	# <CJK>
-0xF5DD	0x919C	# <CJK>
-0xF5DE	0x9310	# <CJK>
-0xF5DF	0x9318	# <CJK>
-0xF5E0	0x939A	# <CJK>
-0xF5E1	0x96DB	# <CJK>
-0xF5E2	0x9A36	# <CJK>
-0xF5E3	0x9C0D	# <CJK>
-0xF5E4	0x4E11	# <CJK>
-0xF5E5	0x755C	# <CJK>
-0xF5E6	0x795D	# <CJK>
-0xF5E7	0x7AFA	# <CJK>
-0xF5E8	0x7B51	# <CJK>
-0xF5E9	0x7BC9	# <CJK>
-0xF5EA	0x7E2E	# <CJK>
-0xF5EB	0x84C4	# <CJK>
-0xF5EC	0x8E59	# <CJK>
-0xF5ED	0x8E74	# <CJK>
-0xF5EE	0x8EF8	# <CJK>
-0xF5EF	0x9010	# <CJK>
-0xF5F0	0x6625	# <CJK>
-0xF5F1	0x693F	# <CJK>
-0xF5F2	0x7443	# <CJK>
-0xF5F3	0x51FA	# <CJK>
-0xF5F4	0x672E	# <CJK>
-0xF5F5	0x9EDC	# <CJK>
-0xF5F6	0x5145	# <CJK>
-0xF5F7	0x5FE0	# <CJK>
-0xF5F8	0x6C96	# <CJK>
-0xF5F9	0x87F2	# <CJK>
-0xF5FA	0x885D	# <CJK>
-0xF5FB	0x8877	# <CJK>
-0xF5FC	0x60B4	# <CJK>
-0xF5FD	0x81B5	# <CJK>
-0xF5FE	0x8403	# <CJK>
-0xF6A1	0x8D05	# <CJK>
-0xF6A2	0x53D6	# <CJK>
-0xF6A3	0x5439	# <CJK>
-0xF6A4	0x5634	# <CJK>
-0xF6A5	0x5A36	# <CJK>
-0xF6A6	0x5C31	# <CJK>
-0xF6A7	0x708A	# <CJK>
-0xF6A8	0x7FE0	# <CJK>
-0xF6A9	0x805A	# <CJK>
-0xF6AA	0x8106	# <CJK>
-0xF6AB	0x81ED	# <CJK>
-0xF6AC	0x8DA3	# <CJK>
-0xF6AD	0x9189	# <CJK>
-0xF6AE	0x9A5F	# <CJK>
-0xF6AF	0x9DF2	# <CJK>
-0xF6B0	0x5074	# <CJK>
-0xF6B1	0x4EC4	# <CJK>
-0xF6B2	0x53A0	# <CJK>
-0xF6B3	0x60FB	# <CJK>
-0xF6B4	0x6E2C	# <CJK>
-0xF6B5	0x5C64	# <CJK>
-0xF6B6	0x4F88	# <CJK>
-0xF6B7	0x5024	# <CJK>
-0xF6B8	0x55E4	# <CJK>
-0xF6B9	0x5CD9	# <CJK>
-0xF6BA	0x5E5F	# <CJK>
-0xF6BB	0x6065	# <CJK>
-0xF6BC	0x6894	# <CJK>
-0xF6BD	0x6CBB	# <CJK>
-0xF6BE	0x6DC4	# <CJK>
-0xF6BF	0x71BE	# <CJK>
-0xF6C0	0x75D4	# <CJK>
-0xF6C1	0x75F4	# <CJK>
-0xF6C2	0x7661	# <CJK>
-0xF6C3	0x7A1A	# <CJK>
-0xF6C4	0x7A49	# <CJK>
-0xF6C5	0x7DC7	# <CJK>
-0xF6C6	0x7DFB	# <CJK>
-0xF6C7	0x7F6E	# <CJK>
-0xF6C8	0x81F4	# <CJK>
-0xF6C9	0x86A9	# <CJK>
-0xF6CA	0x8F1C	# <CJK>
-0xF6CB	0x96C9	# <CJK>
-0xF6CC	0x99B3	# <CJK>
-0xF6CD	0x9F52	# <CJK>
-0xF6CE	0x5247	# <CJK>
-0xF6CF	0x52C5	# <CJK>
-0xF6D0	0x98ED	# <CJK>
-0xF6D1	0x89AA	# <CJK>
-0xF6D2	0x4E03	# <CJK>
-0xF6D3	0x67D2	# <CJK>
-0xF6D4	0x6F06	# <CJK>
-0xF6D5	0x4FB5	# <CJK>
-0xF6D6	0x5BE2	# <CJK>
-0xF6D7	0x6795	# <CJK>
-0xF6D8	0x6C88	# <CJK>
-0xF6D9	0x6D78	# <CJK>
-0xF6DA	0x741B	# <CJK>
-0xF6DB	0x7827	# <CJK>
-0xF6DC	0x91DD	# <CJK>
-0xF6DD	0x937C	# <CJK>
-0xF6DE	0x87C4	# <CJK>
-0xF6DF	0x79E4	# <CJK>
-0xF6E0	0x7A31	# <CJK>
-0xF6E1	0x5FEB	# <CJK>
-0xF6E2	0x4ED6	# <CJK>
-0xF6E3	0x54A4	# <CJK>
-0xF6E4	0x553E	# <CJK>
-0xF6E5	0x58AE	# <CJK>
-0xF6E6	0x59A5	# <CJK>
-0xF6E7	0x60F0	# <CJK>
-0xF6E8	0x6253	# <CJK>
-0xF6E9	0x62D6	# <CJK>
-0xF6EA	0x6736	# <CJK>
-0xF6EB	0x6955	# <CJK>
-0xF6EC	0x8235	# <CJK>
-0xF6ED	0x9640	# <CJK>
-0xF6EE	0x99B1	# <CJK>
-0xF6EF	0x99DD	# <CJK>
-0xF6F0	0x502C	# <CJK>
-0xF6F1	0x5353	# <CJK>
-0xF6F2	0x5544	# <CJK>
-0xF6F3	0x577C	# <CJK>
-0xF6F4	0xFA01	# <CJK>
-0xF6F5	0x6258	# <CJK>
-0xF6F6	0xFA02	# <CJK>
-0xF6F7	0x64E2	# <CJK>
-0xF6F8	0x666B	# <CJK>
-0xF6F9	0x67DD	# <CJK>
-0xF6FA	0x6FC1	# <CJK>
-0xF6FB	0x6FEF	# <CJK>
-0xF6FC	0x7422	# <CJK>
-0xF6FD	0x7438	# <CJK>
-0xF6FE	0x8A17	# <CJK>
-0xF7A1	0x9438	# <CJK>
-0xF7A2	0x5451	# <CJK>
-0xF7A3	0x5606	# <CJK>
-0xF7A4	0x5766	# <CJK>
-0xF7A5	0x5F48	# <CJK>
-0xF7A6	0x619A	# <CJK>
-0xF7A7	0x6B4E	# <CJK>
-0xF7A8	0x7058	# <CJK>
-0xF7A9	0x70AD	# <CJK>
-0xF7AA	0x7DBB	# <CJK>
-0xF7AB	0x8A95	# <CJK>
-0xF7AC	0x596A	# <CJK>
-0xF7AD	0x812B	# <CJK>
-0xF7AE	0x63A2	# <CJK>
-0xF7AF	0x7708	# <CJK>
-0xF7B0	0x803D	# <CJK>
-0xF7B1	0x8CAA	# <CJK>
-0xF7B2	0x5854	# <CJK>
-0xF7B3	0x642D	# <CJK>
-0xF7B4	0x69BB	# <CJK>
-0xF7B5	0x5B95	# <CJK>
-0xF7B6	0x5E11	# <CJK>
-0xF7B7	0x6E6F	# <CJK>
-0xF7B8	0xFA03	# <CJK>
-0xF7B9	0x8569	# <CJK>
-0xF7BA	0x514C	# <CJK>
-0xF7BB	0x53F0	# <CJK>
-0xF7BC	0x592A	# <CJK>
-0xF7BD	0x6020	# <CJK>
-0xF7BE	0x614B	# <CJK>
-0xF7BF	0x6B86	# <CJK>
-0xF7C0	0x6C70	# <CJK>
-0xF7C1	0x6CF0	# <CJK>
-0xF7C2	0x7B1E	# <CJK>
-0xF7C3	0x80CE	# <CJK>
-0xF7C4	0x82D4	# <CJK>
-0xF7C5	0x8DC6	# <CJK>
-0xF7C6	0x90B0	# <CJK>
-0xF7C7	0x98B1	# <CJK>
-0xF7C8	0xFA04	# <CJK>
-0xF7C9	0x64C7	# <CJK>
-0xF7CA	0x6FA4	# <CJK>
-0xF7CB	0x6491	# <CJK>
-0xF7CC	0x6504	# <CJK>
-0xF7CD	0x514E	# <CJK>
-0xF7CE	0x5410	# <CJK>
-0xF7CF	0x571F	# <CJK>
-0xF7D0	0x8A0E	# <CJK>
-0xF7D1	0x615F	# <CJK>
-0xF7D2	0x6876	# <CJK>
-0xF7D3	0xFA05	# <CJK>
-0xF7D4	0x75DB	# <CJK>
-0xF7D5	0x7B52	# <CJK>
-0xF7D6	0x7D71	# <CJK>
-0xF7D7	0x901A	# <CJK>
-0xF7D8	0x5806	# <CJK>
-0xF7D9	0x69CC	# <CJK>
-0xF7DA	0x817F	# <CJK>
-0xF7DB	0x892A	# <CJK>
-0xF7DC	0x9000	# <CJK>
-0xF7DD	0x9839	# <CJK>
-0xF7DE	0x5078	# <CJK>
-0xF7DF	0x5957	# <CJK>
-0xF7E0	0x59AC	# <CJK>
-0xF7E1	0x6295	# <CJK>
-0xF7E2	0x900F	# <CJK>
-0xF7E3	0x9B2A	# <CJK>
-0xF7E4	0x615D	# <CJK>
-0xF7E5	0x7279	# <CJK>
-0xF7E6	0x95D6	# <CJK>
-0xF7E7	0x5761	# <CJK>
-0xF7E8	0x5A46	# <CJK>
-0xF7E9	0x5DF4	# <CJK>
-0xF7EA	0x628A	# <CJK>
-0xF7EB	0x64AD	# <CJK>
-0xF7EC	0x64FA	# <CJK>
-0xF7ED	0x6777	# <CJK>
-0xF7EE	0x6CE2	# <CJK>
-0xF7EF	0x6D3E	# <CJK>
-0xF7F0	0x722C	# <CJK>
-0xF7F1	0x7436	# <CJK>
-0xF7F2	0x7834	# <CJK>
-0xF7F3	0x7F77	# <CJK>
-0xF7F4	0x82AD	# <CJK>
-0xF7F5	0x8DDB	# <CJK>
-0xF7F6	0x9817	# <CJK>
-0xF7F7	0x5224	# <CJK>
-0xF7F8	0x5742	# <CJK>
-0xF7F9	0x677F	# <CJK>
-0xF7FA	0x7248	# <CJK>
-0xF7FB	0x74E3	# <CJK>
-0xF7FC	0x8CA9	# <CJK>
-0xF7FD	0x8FA6	# <CJK>
-0xF7FE	0x9211	# <CJK>
-0xF8A1	0x962A	# <CJK>
-0xF8A2	0x516B	# <CJK>
-0xF8A3	0x53ED	# <CJK>
-0xF8A4	0x634C	# <CJK>
-0xF8A5	0x4F69	# <CJK>
-0xF8A6	0x5504	# <CJK>
-0xF8A7	0x6096	# <CJK>
-0xF8A8	0x6557	# <CJK>
-0xF8A9	0x6C9B	# <CJK>
-0xF8AA	0x6D7F	# <CJK>
-0xF8AB	0x724C	# <CJK>
-0xF8AC	0x72FD	# <CJK>
-0xF8AD	0x7A17	# <CJK>
-0xF8AE	0x8987	# <CJK>
-0xF8AF	0x8C9D	# <CJK>
-0xF8B0	0x5F6D	# <CJK>
-0xF8B1	0x6F8E	# <CJK>
-0xF8B2	0x70F9	# <CJK>
-0xF8B3	0x81A8	# <CJK>
-0xF8B4	0x610E	# <CJK>
-0xF8B5	0x4FBF	# <CJK>
-0xF8B6	0x504F	# <CJK>
-0xF8B7	0x6241	# <CJK>
-0xF8B8	0x7247	# <CJK>
-0xF8B9	0x7BC7	# <CJK>
-0xF8BA	0x7DE8	# <CJK>
-0xF8BB	0x7FE9	# <CJK>
-0xF8BC	0x904D	# <CJK>
-0xF8BD	0x97AD	# <CJK>
-0xF8BE	0x9A19	# <CJK>
-0xF8BF	0x8CB6	# <CJK>
-0xF8C0	0x576A	# <CJK>
-0xF8C1	0x5E73	# <CJK>
-0xF8C2	0x67B0	# <CJK>
-0xF8C3	0x840D	# <CJK>
-0xF8C4	0x8A55	# <CJK>
-0xF8C5	0x5420	# <CJK>
-0xF8C6	0x5B16	# <CJK>
-0xF8C7	0x5E63	# <CJK>
-0xF8C8	0x5EE2	# <CJK>
-0xF8C9	0x5F0A	# <CJK>
-0xF8CA	0x6583	# <CJK>
-0xF8CB	0x80BA	# <CJK>
-0xF8CC	0x853D	# <CJK>
-0xF8CD	0x9589	# <CJK>
-0xF8CE	0x965B	# <CJK>
-0xF8CF	0x4F48	# <CJK>
-0xF8D0	0x5305	# <CJK>
-0xF8D1	0x530D	# <CJK>
-0xF8D2	0x530F	# <CJK>
-0xF8D3	0x5486	# <CJK>
-0xF8D4	0x54FA	# <CJK>
-0xF8D5	0x5703	# <CJK>
-0xF8D6	0x5E03	# <CJK>
-0xF8D7	0x6016	# <CJK>
-0xF8D8	0x629B	# <CJK>
-0xF8D9	0x62B1	# <CJK>
-0xF8DA	0x6355	# <CJK>
-0xF8DB	0xFA06	# <CJK>
-0xF8DC	0x6CE1	# <CJK>
-0xF8DD	0x6D66	# <CJK>
-0xF8DE	0x75B1	# <CJK>
-0xF8DF	0x7832	# <CJK>
-0xF8E0	0x80DE	# <CJK>
-0xF8E1	0x812F	# <CJK>
-0xF8E2	0x82DE	# <CJK>
-0xF8E3	0x8461	# <CJK>
-0xF8E4	0x84B2	# <CJK>
-0xF8E5	0x888D	# <CJK>
-0xF8E6	0x8912	# <CJK>
-0xF8E7	0x900B	# <CJK>
-0xF8E8	0x92EA	# <CJK>
-0xF8E9	0x98FD	# <CJK>
-0xF8EA	0x9B91	# <CJK>
-0xF8EB	0x5E45	# <CJK>
-0xF8EC	0x66B4	# <CJK>
-0xF8ED	0x66DD	# <CJK>
-0xF8EE	0x7011	# <CJK>
-0xF8EF	0x7206	# <CJK>
-0xF8F0	0xFA07	# <CJK>
-0xF8F1	0x4FF5	# <CJK>
-0xF8F2	0x527D	# <CJK>
-0xF8F3	0x5F6A	# <CJK>
-0xF8F4	0x6153	# <CJK>
-0xF8F5	0x6753	# <CJK>
-0xF8F6	0x6A19	# <CJK>
-0xF8F7	0x6F02	# <CJK>
-0xF8F8	0x74E2	# <CJK>
-0xF8F9	0x7968	# <CJK>
-0xF8FA	0x8868	# <CJK>
-0xF8FB	0x8C79	# <CJK>
-0xF8FC	0x98C7	# <CJK>
-0xF8FD	0x98C4	# <CJK>
-0xF8FE	0x9A43	# <CJK>
-0xF9A1	0x54C1	# <CJK>
-0xF9A2	0x7A1F	# <CJK>
-0xF9A3	0x6953	# <CJK>
-0xF9A4	0x8AF7	# <CJK>
-0xF9A5	0x8C4A	# <CJK>
-0xF9A6	0x98A8	# <CJK>
-0xF9A7	0x99AE	# <CJK>
-0xF9A8	0x5F7C	# <CJK>
-0xF9A9	0x62AB	# <CJK>
-0xF9AA	0x75B2	# <CJK>
-0xF9AB	0x76AE	# <CJK>
-0xF9AC	0x88AB	# <CJK>
-0xF9AD	0x907F	# <CJK>
-0xF9AE	0x9642	# <CJK>
-0xF9AF	0x5339	# <CJK>
-0xF9B0	0x5F3C	# <CJK>
-0xF9B1	0x5FC5	# <CJK>
-0xF9B2	0x6CCC	# <CJK>
-0xF9B3	0x73CC	# <CJK>
-0xF9B4	0x7562	# <CJK>
-0xF9B5	0x758B	# <CJK>
-0xF9B6	0x7B46	# <CJK>
-0xF9B7	0x82FE	# <CJK>
-0xF9B8	0x999D	# <CJK>
-0xF9B9	0x4E4F	# <CJK>
-0xF9BA	0x903C	# <CJK>
-0xF9BB	0x4E0B	# <CJK>
-0xF9BC	0x4F55	# <CJK>
-0xF9BD	0x53A6	# <CJK>
-0xF9BE	0x590F	# <CJK>
-0xF9BF	0x5EC8	# <CJK>
-0xF9C0	0x6630	# <CJK>
-0xF9C1	0x6CB3	# <CJK>
-0xF9C2	0x7455	# <CJK>
-0xF9C3	0x8377	# <CJK>
-0xF9C4	0x8766	# <CJK>
-0xF9C5	0x8CC0	# <CJK>
-0xF9C6	0x9050	# <CJK>
-0xF9C7	0x971E	# <CJK>
-0xF9C8	0x9C15	# <CJK>
-0xF9C9	0x58D1	# <CJK>
-0xF9CA	0x5B78	# <CJK>
-0xF9CB	0x8650	# <CJK>
-0xF9CC	0x8B14	# <CJK>
-0xF9CD	0x9DB4	# <CJK>
-0xF9CE	0x5BD2	# <CJK>
-0xF9CF	0x6068	# <CJK>
-0xF9D0	0x608D	# <CJK>
-0xF9D1	0x65F1	# <CJK>
-0xF9D2	0x6C57	# <CJK>
-0xF9D3	0x6F22	# <CJK>
-0xF9D4	0x6FA3	# <CJK>
-0xF9D5	0x701A	# <CJK>
-0xF9D6	0x7F55	# <CJK>
-0xF9D7	0x7FF0	# <CJK>
-0xF9D8	0x9591	# <CJK>
-0xF9D9	0x9592	# <CJK>
-0xF9DA	0x9650	# <CJK>
-0xF9DB	0x97D3	# <CJK>
-0xF9DC	0x5272	# <CJK>
-0xF9DD	0x8F44	# <CJK>
-0xF9DE	0x51FD	# <CJK>
-0xF9DF	0x542B	# <CJK>
-0xF9E0	0x54B8	# <CJK>
-0xF9E1	0x5563	# <CJK>
-0xF9E2	0x558A	# <CJK>
-0xF9E3	0x6ABB	# <CJK>
-0xF9E4	0x6DB5	# <CJK>
-0xF9E5	0x7DD8	# <CJK>
-0xF9E6	0x8266	# <CJK>
-0xF9E7	0x929C	# <CJK>
-0xF9E8	0x9677	# <CJK>
-0xF9E9	0x9E79	# <CJK>
-0xF9EA	0x5408	# <CJK>
-0xF9EB	0x54C8	# <CJK>
-0xF9EC	0x76D2	# <CJK>
-0xF9ED	0x86E4	# <CJK>
-0xF9EE	0x95A4	# <CJK>
-0xF9EF	0x95D4	# <CJK>
-0xF9F0	0x965C	# <CJK>
-0xF9F1	0x4EA2	# <CJK>
-0xF9F2	0x4F09	# <CJK>
-0xF9F3	0x59EE	# <CJK>
-0xF9F4	0x5AE6	# <CJK>
-0xF9F5	0x5DF7	# <CJK>
-0xF9F6	0x6052	# <CJK>
-0xF9F7	0x6297	# <CJK>
-0xF9F8	0x676D	# <CJK>
-0xF9F9	0x6841	# <CJK>
-0xF9FA	0x6C86	# <CJK>
-0xF9FB	0x6E2F	# <CJK>
-0xF9FC	0x7F38	# <CJK>
-0xF9FD	0x809B	# <CJK>
-0xF9FE	0x822A	# <CJK>
-0xFAA1	0xFA08	# <CJK>
-0xFAA2	0xFA09	# <CJK>
-0xFAA3	0x9805	# <CJK>
-0xFAA4	0x4EA5	# <CJK>
-0xFAA5	0x5055	# <CJK>
-0xFAA6	0x54B3	# <CJK>
-0xFAA7	0x5793	# <CJK>
-0xFAA8	0x595A	# <CJK>
-0xFAA9	0x5B69	# <CJK>
-0xFAAA	0x5BB3	# <CJK>
-0xFAAB	0x61C8	# <CJK>
-0xFAAC	0x6977	# <CJK>
-0xFAAD	0x6D77	# <CJK>
-0xFAAE	0x7023	# <CJK>
-0xFAAF	0x87F9	# <CJK>
-0xFAB0	0x89E3	# <CJK>
-0xFAB1	0x8A72	# <CJK>
-0xFAB2	0x8AE7	# <CJK>
-0xFAB3	0x9082	# <CJK>
-0xFAB4	0x99ED	# <CJK>
-0xFAB5	0x9AB8	# <CJK>
-0xFAB6	0x52BE	# <CJK>
-0xFAB7	0x6838	# <CJK>
-0xFAB8	0x5016	# <CJK>
-0xFAB9	0x5E78	# <CJK>
-0xFABA	0x674F	# <CJK>
-0xFABB	0x8347	# <CJK>
-0xFABC	0x884C	# <CJK>
-0xFABD	0x4EAB	# <CJK>
-0xFABE	0x5411	# <CJK>
-0xFABF	0x56AE	# <CJK>
-0xFAC0	0x73E6	# <CJK>
-0xFAC1	0x9115	# <CJK>
-0xFAC2	0x97FF	# <CJK>
-0xFAC3	0x9909	# <CJK>
-0xFAC4	0x9957	# <CJK>
-0xFAC5	0x9999	# <CJK>
-0xFAC6	0x5653	# <CJK>
-0xFAC7	0x589F	# <CJK>
-0xFAC8	0x865B	# <CJK>
-0xFAC9	0x8A31	# <CJK>
-0xFACA	0x61B2	# <CJK>
-0xFACB	0x6AF6	# <CJK>
-0xFACC	0x737B	# <CJK>
-0xFACD	0x8ED2	# <CJK>
-0xFACE	0x6B47	# <CJK>
-0xFACF	0x96AA	# <CJK>
-0xFAD0	0x9A57	# <CJK>
-0xFAD1	0x5955	# <CJK>
-0xFAD2	0x7200	# <CJK>
-0xFAD3	0x8D6B	# <CJK>
-0xFAD4	0x9769	# <CJK>
-0xFAD5	0x4FD4	# <CJK>
-0xFAD6	0x5CF4	# <CJK>
-0xFAD7	0x5F26	# <CJK>
-0xFAD8	0x61F8	# <CJK>
-0xFAD9	0x665B	# <CJK>
-0xFADA	0x6CEB	# <CJK>
-0xFADB	0x70AB	# <CJK>
-0xFADC	0x7384	# <CJK>
-0xFADD	0x73B9	# <CJK>
-0xFADE	0x73FE	# <CJK>
-0xFADF	0x7729	# <CJK>
-0xFAE0	0x774D	# <CJK>
-0xFAE1	0x7D43	# <CJK>
-0xFAE2	0x7D62	# <CJK>
-0xFAE3	0x7E23	# <CJK>
-0xFAE4	0x8237	# <CJK>
-0xFAE5	0x8852	# <CJK>
-0xFAE6	0xFA0A	# <CJK>
-0xFAE7	0x8CE2	# <CJK>
-0xFAE8	0x9249	# <CJK>
-0xFAE9	0x986F	# <CJK>
-0xFAEA	0x5B51	# <CJK>
-0xFAEB	0x7A74	# <CJK>
-0xFAEC	0x8840	# <CJK>
-0xFAED	0x9801	# <CJK>
-0xFAEE	0x5ACC	# <CJK>
-0xFAEF	0x4FE0	# <CJK>
-0xFAF0	0x5354	# <CJK>
-0xFAF1	0x593E	# <CJK>
-0xFAF2	0x5CFD	# <CJK>
-0xFAF3	0x633E	# <CJK>
-0xFAF4	0x6D79	# <CJK>
-0xFAF5	0x72F9	# <CJK>
-0xFAF6	0x8105	# <CJK>
-0xFAF7	0x8107	# <CJK>
-0xFAF8	0x83A2	# <CJK>
-0xFAF9	0x92CF	# <CJK>
-0xFAFA	0x9830	# <CJK>
-0xFAFB	0x4EA8	# <CJK>
-0xFAFC	0x5144	# <CJK>
-0xFAFD	0x5211	# <CJK>
-0xFAFE	0x578B	# <CJK>
-0xFBA1	0x5F62	# <CJK>
-0xFBA2	0x6CC2	# <CJK>
-0xFBA3	0x6ECE	# <CJK>
-0xFBA4	0x7005	# <CJK>
-0xFBA5	0x7050	# <CJK>
-0xFBA6	0x70AF	# <CJK>
-0xFBA7	0x7192	# <CJK>
-0xFBA8	0x73E9	# <CJK>
-0xFBA9	0x7469	# <CJK>
-0xFBAA	0x834A	# <CJK>
-0xFBAB	0x87A2	# <CJK>
-0xFBAC	0x8861	# <CJK>
-0xFBAD	0x9008	# <CJK>
-0xFBAE	0x90A2	# <CJK>
-0xFBAF	0x93A3	# <CJK>
-0xFBB0	0x99A8	# <CJK>
-0xFBB1	0x516E	# <CJK>
-0xFBB2	0x5F57	# <CJK>
-0xFBB3	0x60E0	# <CJK>
-0xFBB4	0x6167	# <CJK>
-0xFBB5	0x66B3	# <CJK>
-0xFBB6	0x8559	# <CJK>
-0xFBB7	0x8E4A	# <CJK>
-0xFBB8	0x91AF	# <CJK>
-0xFBB9	0x978B	# <CJK>
-0xFBBA	0x4E4E	# <CJK>
-0xFBBB	0x4E92	# <CJK>
-0xFBBC	0x547C	# <CJK>
-0xFBBD	0x58D5	# <CJK>
-0xFBBE	0x58FA	# <CJK>
-0xFBBF	0x597D	# <CJK>
-0xFBC0	0x5CB5	# <CJK>
-0xFBC1	0x5F27	# <CJK>
-0xFBC2	0x6236	# <CJK>
-0xFBC3	0x6248	# <CJK>
-0xFBC4	0x660A	# <CJK>
-0xFBC5	0x6667	# <CJK>
-0xFBC6	0x6BEB	# <CJK>
-0xFBC7	0x6D69	# <CJK>
-0xFBC8	0x6DCF	# <CJK>
-0xFBC9	0x6E56	# <CJK>
-0xFBCA	0x6EF8	# <CJK>
-0xFBCB	0x6F94	# <CJK>
-0xFBCC	0x6FE0	# <CJK>
-0xFBCD	0x6FE9	# <CJK>
-0xFBCE	0x705D	# <CJK>
-0xFBCF	0x72D0	# <CJK>
-0xFBD0	0x7425	# <CJK>
-0xFBD1	0x745A	# <CJK>
-0xFBD2	0x74E0	# <CJK>
-0xFBD3	0x7693	# <CJK>
-0xFBD4	0x795C	# <CJK>
-0xFBD5	0x7CCA	# <CJK>
-0xFBD6	0x7E1E	# <CJK>
-0xFBD7	0x80E1	# <CJK>
-0xFBD8	0x82A6	# <CJK>
-0xFBD9	0x846B	# <CJK>
-0xFBDA	0x84BF	# <CJK>
-0xFBDB	0x864E	# <CJK>
-0xFBDC	0x865F	# <CJK>
-0xFBDD	0x8774	# <CJK>
-0xFBDE	0x8B77	# <CJK>
-0xFBDF	0x8C6A	# <CJK>
-0xFBE0	0x93AC	# <CJK>
-0xFBE1	0x9800	# <CJK>
-0xFBE2	0x9865	# <CJK>
-0xFBE3	0x60D1	# <CJK>
-0xFBE4	0x6216	# <CJK>
-0xFBE5	0x9177	# <CJK>
-0xFBE6	0x5A5A	# <CJK>
-0xFBE7	0x660F	# <CJK>
-0xFBE8	0x6DF7	# <CJK>
-0xFBE9	0x6E3E	# <CJK>
-0xFBEA	0x743F	# <CJK>
-0xFBEB	0x9B42	# <CJK>
-0xFBEC	0x5FFD	# <CJK>
-0xFBED	0x60DA	# <CJK>
-0xFBEE	0x7B0F	# <CJK>
-0xFBEF	0x54C4	# <CJK>
-0xFBF0	0x5F18	# <CJK>
-0xFBF1	0x6C5E	# <CJK>
-0xFBF2	0x6CD3	# <CJK>
-0xFBF3	0x6D2A	# <CJK>
-0xFBF4	0x70D8	# <CJK>
-0xFBF5	0x7D05	# <CJK>
-0xFBF6	0x8679	# <CJK>
-0xFBF7	0x8A0C	# <CJK>
-0xFBF8	0x9D3B	# <CJK>
-0xFBF9	0x5316	# <CJK>
-0xFBFA	0x548C	# <CJK>
-0xFBFB	0x5B05	# <CJK>
-0xFBFC	0x6A3A	# <CJK>
-0xFBFD	0x706B	# <CJK>
-0xFBFE	0x7575	# <CJK>
-0xFCA1	0x798D	# <CJK>
-0xFCA2	0x79BE	# <CJK>
-0xFCA3	0x82B1	# <CJK>
-0xFCA4	0x83EF	# <CJK>
-0xFCA5	0x8A71	# <CJK>
-0xFCA6	0x8B41	# <CJK>
-0xFCA7	0x8CA8	# <CJK>
-0xFCA8	0x9774	# <CJK>
-0xFCA9	0xFA0B	# <CJK>
-0xFCAA	0x64F4	# <CJK>
-0xFCAB	0x652B	# <CJK>
-0xFCAC	0x78BA	# <CJK>
-0xFCAD	0x78BB	# <CJK>
-0xFCAE	0x7A6B	# <CJK>
-0xFCAF	0x4E38	# <CJK>
-0xFCB0	0x559A	# <CJK>
-0xFCB1	0x5950	# <CJK>
-0xFCB2	0x5BA6	# <CJK>
-0xFCB3	0x5E7B	# <CJK>
-0xFCB4	0x60A3	# <CJK>
-0xFCB5	0x63DB	# <CJK>
-0xFCB6	0x6B61	# <CJK>
-0xFCB7	0x6665	# <CJK>
-0xFCB8	0x6853	# <CJK>
-0xFCB9	0x6E19	# <CJK>
-0xFCBA	0x7165	# <CJK>
-0xFCBB	0x74B0	# <CJK>
-0xFCBC	0x7D08	# <CJK>
-0xFCBD	0x9084	# <CJK>
-0xFCBE	0x9A69	# <CJK>
-0xFCBF	0x9C25	# <CJK>
-0xFCC0	0x6D3B	# <CJK>
-0xFCC1	0x6ED1	# <CJK>
-0xFCC2	0x733E	# <CJK>
-0xFCC3	0x8C41	# <CJK>
-0xFCC4	0x95CA	# <CJK>
-0xFCC5	0x51F0	# <CJK>
-0xFCC6	0x5E4C	# <CJK>
-0xFCC7	0x5FA8	# <CJK>
-0xFCC8	0x604D	# <CJK>
-0xFCC9	0x60F6	# <CJK>
-0xFCCA	0x6130	# <CJK>
-0xFCCB	0x614C	# <CJK>
-0xFCCC	0x6643	# <CJK>
-0xFCCD	0x6644	# <CJK>
-0xFCCE	0x69A5	# <CJK>
-0xFCCF	0x6CC1	# <CJK>
-0xFCD0	0x6E5F	# <CJK>
-0xFCD1	0x6EC9	# <CJK>
-0xFCD2	0x6F62	# <CJK>
-0xFCD3	0x714C	# <CJK>
-0xFCD4	0x749C	# <CJK>
-0xFCD5	0x7687	# <CJK>
-0xFCD6	0x7BC1	# <CJK>
-0xFCD7	0x7C27	# <CJK>
-0xFCD8	0x8352	# <CJK>
-0xFCD9	0x8757	# <CJK>
-0xFCDA	0x9051	# <CJK>
-0xFCDB	0x968D	# <CJK>
-0xFCDC	0x9EC3	# <CJK>
-0xFCDD	0x532F	# <CJK>
-0xFCDE	0x56DE	# <CJK>
-0xFCDF	0x5EFB	# <CJK>
-0xFCE0	0x5F8A	# <CJK>
-0xFCE1	0x6062	# <CJK>
-0xFCE2	0x6094	# <CJK>
-0xFCE3	0x61F7	# <CJK>
-0xFCE4	0x6666	# <CJK>
-0xFCE5	0x6703	# <CJK>
-0xFCE6	0x6A9C	# <CJK>
-0xFCE7	0x6DEE	# <CJK>
-0xFCE8	0x6FAE	# <CJK>
-0xFCE9	0x7070	# <CJK>
-0xFCEA	0x736A	# <CJK>
-0xFCEB	0x7E6A	# <CJK>
-0xFCEC	0x81BE	# <CJK>
-0xFCED	0x8334	# <CJK>
-0xFCEE	0x86D4	# <CJK>
-0xFCEF	0x8AA8	# <CJK>
-0xFCF0	0x8CC4	# <CJK>
-0xFCF1	0x5283	# <CJK>
-0xFCF2	0x7372	# <CJK>
-0xFCF3	0x5B96	# <CJK>
-0xFCF4	0x6A6B	# <CJK>
-0xFCF5	0x9404	# <CJK>
-0xFCF6	0x54EE	# <CJK>
-0xFCF7	0x5686	# <CJK>
-0xFCF8	0x5B5D	# <CJK>
-0xFCF9	0x6548	# <CJK>
-0xFCFA	0x6585	# <CJK>
-0xFCFB	0x66C9	# <CJK>
-0xFCFC	0x689F	# <CJK>
-0xFCFD	0x6D8D	# <CJK>
-0xFCFE	0x6DC6	# <CJK>
-0xFDA1	0x723B	# <CJK>
-0xFDA2	0x80B4	# <CJK>
-0xFDA3	0x9175	# <CJK>
-0xFDA4	0x9A4D	# <CJK>
-0xFDA5	0x4FAF	# <CJK>
-0xFDA6	0x5019	# <CJK>
-0xFDA7	0x539A	# <CJK>
-0xFDA8	0x540E	# <CJK>
-0xFDA9	0x543C	# <CJK>
-0xFDAA	0x5589	# <CJK>
-0xFDAB	0x55C5	# <CJK>
-0xFDAC	0x5E3F	# <CJK>
-0xFDAD	0x5F8C	# <CJK>
-0xFDAE	0x673D	# <CJK>
-0xFDAF	0x7166	# <CJK>
-0xFDB0	0x73DD	# <CJK>
-0xFDB1	0x9005	# <CJK>
-0xFDB2	0x52DB	# <CJK>
-0xFDB3	0x52F3	# <CJK>
-0xFDB4	0x5864	# <CJK>
-0xFDB5	0x58CE	# <CJK>
-0xFDB6	0x7104	# <CJK>
-0xFDB7	0x718F	# <CJK>
-0xFDB8	0x71FB	# <CJK>
-0xFDB9	0x85B0	# <CJK>
-0xFDBA	0x8A13	# <CJK>
-0xFDBB	0x6688	# <CJK>
-0xFDBC	0x85A8	# <CJK>
-0xFDBD	0x55A7	# <CJK>
-0xFDBE	0x6684	# <CJK>
-0xFDBF	0x714A	# <CJK>
-0xFDC0	0x8431	# <CJK>
-0xFDC1	0x5349	# <CJK>
-0xFDC2	0x5599	# <CJK>
-0xFDC3	0x6BC1	# <CJK>
-0xFDC4	0x5F59	# <CJK>
-0xFDC5	0x5FBD	# <CJK>
-0xFDC6	0x63EE	# <CJK>
-0xFDC7	0x6689	# <CJK>
-0xFDC8	0x7147	# <CJK>
-0xFDC9	0x8AF1	# <CJK>
-0xFDCA	0x8F1D	# <CJK>
-0xFDCB	0x9EBE	# <CJK>
-0xFDCC	0x4F11	# <CJK>
-0xFDCD	0x643A	# <CJK>
-0xFDCE	0x70CB	# <CJK>
-0xFDCF	0x7566	# <CJK>
-0xFDD0	0x8667	# <CJK>
-0xFDD1	0x6064	# <CJK>
-0xFDD2	0x8B4E	# <CJK>
-0xFDD3	0x9DF8	# <CJK>
-0xFDD4	0x5147	# <CJK>
-0xFDD5	0x51F6	# <CJK>
-0xFDD6	0x5308	# <CJK>
-0xFDD7	0x6D36	# <CJK>
-0xFDD8	0x80F8	# <CJK>
-0xFDD9	0x9ED1	# <CJK>
-0xFDDA	0x6615	# <CJK>
-0xFDDB	0x6B23	# <CJK>
-0xFDDC	0x7098	# <CJK>
-0xFDDD	0x75D5	# <CJK>
-0xFDDE	0x5403	# <CJK>
-0xFDDF	0x5C79	# <CJK>
-0xFDE0	0x7D07	# <CJK>
-0xFDE1	0x8A16	# <CJK>
-0xFDE2	0x6B20	# <CJK>
-0xFDE3	0x6B3D	# <CJK>
-0xFDE4	0x6B46	# <CJK>
-0xFDE5	0x5438	# <CJK>
-0xFDE6	0x6070	# <CJK>
-0xFDE7	0x6D3D	# <CJK>
-0xFDE8	0x7FD5	# <CJK>
-0xFDE9	0x8208	# <CJK>
-0xFDEA	0x50D6	# <CJK>
-0xFDEB	0x51DE	# <CJK>
-0xFDEC	0x559C	# <CJK>
-0xFDED	0x566B	# <CJK>
-0xFDEE	0x56CD	# <CJK>
-0xFDEF	0x59EC	# <CJK>
-0xFDF0	0x5B09	# <CJK>
-0xFDF1	0x5E0C	# <CJK>
-0xFDF2	0x6199	# <CJK>
-0xFDF3	0x6198	# <CJK>
-0xFDF4	0x6231	# <CJK>
-0xFDF5	0x665E	# <CJK>
-0xFDF6	0x66E6	# <CJK>
-0xFDF7	0x7199	# <CJK>
-0xFDF8	0x71B9	# <CJK>
-0xFDF9	0x71BA	# <CJK>
-0xFDFA	0x72A7	# <CJK>
-0xFDFB	0x79A7	# <CJK>
-0xFDFC	0x7A00	# <CJK>
-0xFDFD	0x7FB2	# <CJK>
-0xFDFE	0x8A70	# <CJK>
-
-
\ No newline at end of file
diff --git a/program/lib/utf8.class.php b/program/lib/utf8.class.php
deleted file mode 100644
index 0446159..0000000
--- a/program/lib/utf8.class.php
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-/*
-utf8 1.0
-Copyright: Left
----------------------------------------------------------------------------------
-Version:        1.0
-Date:           23 November 2004
----------------------------------------------------------------------------------
-Author:         Alexander Minkovsky (a_minkovsky@hotmail.com)
----------------------------------------------------------------------------------
-License:        Choose the more appropriated for You - I don't care.
----------------------------------------------------------------------------------
-Description:
-    Class provides functionality to convert single byte strings, such as CP1251
-    ti UTF-8 multibyte format and vice versa.
-    Class loads a concrete charset map, for example CP1251.
-    (Refer to ftp://ftp.unicode.org/Public/MAPPINGS/ for map files)
-    Directory containing MAP files is predefined as constant.
-    Each charset is also predefined as constant pointing to the MAP file.
----------------------------------------------------------------------------------
-Example usage:
-    Pass the desired charset in the class constructor:
-    $utfConverter = new utf8(CP1251); //defaults to CP1250.
-    or load the charset MAP using loadCharset method like this:
-    $utfConverter->loadCharset(CP1252);
-    Then call
-    $res = $utfConverter->strToUtf8($str);
-    or
-    $res = $utfConverter->utf8ToStr($utf);
-    to get the needed encoding.
----------------------------------------------------------------------------------
-Note:
-    Rewrite or Override the onError method if needed. It's the error handler used from everywhere and takes 2 parameters:
-    err_code and err_text. By default it just prints out a message about the error.
-*/
-
-// Charset maps
-// Adapted to fit Roundcube
-define("UTF8_MAP_DIR", "program/lib/encoding");
-
-//Error constants
-define("ERR_OPEN_MAP_FILE", "ERR_OPEN_MAP_FILE");
-
-//Class definition
-Class utf8 {
-
-  var $charset = "ISO-8859-1";
-  var $ascMap = array();
-  var $utfMap = array();
-  var $aliases = array(
-    'KOI8-R' => 'KOI8R'
-  );
-  var $error = null;
-
-  function __construct($charset="ISO-8859-1") {
-    $this->loadCharset($charset);
-  }
-  
-  //Load charset
-  function loadCharset($charset) {
-    
-    $charset = preg_replace(array('/^WINDOWS-*125([0-8])$/', '/^CP-/'), array('CP125\\1', 'CP'), $charset);
-    if (isset($this->aliases[$charset]))
-      $charset = $this->aliases[$charset];
-    
-    $this->charset = $charset;
-
-    if (empty($this->ascMap[$charset]))
-      {
-      $file = UTF8_MAP_DIR.'/'.$charset.'.map';
-    
-      if (!is_file($file)) {
-        $this->onError(ERR_OPEN_MAP_FILE, "Failed to open map file for $charset");
-        return;
-      }
-    
-      $lines = file_get_contents($file);
-      $lines = preg_replace("/#.*$/m","",$lines);
-      $lines = preg_replace("/\n\n/","",$lines);
-      $lines = explode("\n",$lines);
-
-      foreach($lines as $line){
-        $parts = explode('0x',$line);
-        if(count($parts)==3){
-          $asc=hexdec(substr($parts[1],0,2));
-          $utf=hexdec(substr($parts[2],0,4));
-          $this->ascMap[$charset][$asc]=$utf;
-        }
-      }
-      
-      $this->utfMap = array_flip($this->ascMap[$charset]);
-    }
-  }
-
-  //Error handler
-  function onError($err_code,$err_text){
-    $this->error = $err_text;
-    return null;
-  }
-
-  //Translate string ($str) to UTF-8 from given charset
-  function strToUtf8($str){
-    if (empty($this->ascMap[$this->charset]))
-      return null;
-
-    $chars = unpack('C*', $str);
-    $cnt = count($chars);
-    for($i=1; $i<=$cnt; $i++)
-      $this->_charToUtf8($chars[$i]);
-
-    return implode("",$chars);
-  }
-
-  //Translate UTF-8 string to single byte string in the given charset
-  function utf8ToStr($utf){
-    if (empty($this->ascMap[$this->charset]))
-      return null;
-
-    $chars = unpack('C*', $utf);
-    $cnt = count($chars);
-    $res = ""; //No simple way to do it in place... concatenate char by char
-
-    for ($i=1; $i<=$cnt; $i++)
-      $res .= $this->_utf8ToChar($chars, $i);
-
-    return $res;
-  }
-
-  //Char to UTF-8 sequence
-  function _charToUtf8(&$char){
-    $c = (int)$this->ascMap[$this->charset][$char];
-    if ($c < 0x80){
-      $char = chr($c);
-    }
-    else if($c<0x800) // 2 bytes
-      $char = (chr(0xC0 | $c>>6) . chr(0x80 | $c & 0x3F));
-    else if($c<0x10000) // 3 bytes
-      $char = (chr(0xE0 | $c>>12) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F));
-    else if($c<0x200000) // 4 bytes
-      $char = (chr(0xF0 | $c>>18) . chr(0x80 | $c>>12 & 0x3F) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F));
-  }
-
-  //UTF-8 sequence to single byte character
-  function _utf8ToChar(&$chars, &$idx){
-    if(($chars[$idx] >= 240) && ($chars[$idx] <= 255)){ // 4 bytes
-      $utf =    (intval($chars[$idx]-240)   << 18) +
-                (intval($chars[++$idx]-128) << 12) +
-                (intval($chars[++$idx]-128) << 6) +
-                (intval($chars[++$idx]-128) << 0);
-    }
-    else if (($chars[$idx] >= 224) && ($chars[$idx] <= 239)){ // 3 bytes
-      $utf =    (intval($chars[$idx]-224)   << 12) +
-                (intval($chars[++$idx]-128) << 6) +
-                (intval($chars[++$idx]-128) << 0);
-    }
-    else if (($chars[$idx] >= 192) && ($chars[$idx] <= 223)){ // 2 bytes
-      $utf =    (intval($chars[$idx]-192)   << 6) +
-                (intval($chars[++$idx]-128) << 0);
-    }
-    else{ // 1 byte
-      $utf = $chars[$idx];
-    }
-    if(array_key_exists($utf,$this->utfMap))
-      return chr($this->utfMap[$utf]);
-    else
-      return "?";
-  }
-
-}
-
-?>

--
Gitblit v1.9.1